{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

'GI.WebKit.Objects.SecurityOrigin.SecurityOrigin' is a representation of a security domain defined
by web sites. An origin consists of a host name, a protocol, and a port
number. Web sites with the same security origin can access each other\'s
resources for client-side scripting or database access.

Use @/webkit_web_frame_get_security_origin/@ to get the security origin of a
'GI.WebKit.Objects.WebFrame.WebFrame'.

Database quotas and usages are also defined per security origin. The
cumulative disk usage of an origin\'s databases may be retrieved with
@/webkit_security_origin_get_web_database_usage/@. An origin\'s quota can be
adjusted with @/webkit_security_origin_set_web_database_quota/@.
-}

module GI.WebKit.Objects.SecurityOrigin
    ( 

-- * Exported types
    SecurityOrigin(..)                      ,
    IsSecurityOrigin                        ,
    toSecurityOrigin                        ,
    noSecurityOrigin                        ,


 -- * Methods
-- ** getAllWebDatabases #method:getAllWebDatabases#
    SecurityOriginGetAllWebDatabasesMethodInfo,
    securityOriginGetAllWebDatabases        ,


-- ** getHost #method:getHost#
    SecurityOriginGetHostMethodInfo         ,
    securityOriginGetHost                   ,


-- ** getPort #method:getPort#
    SecurityOriginGetPortMethodInfo         ,
    securityOriginGetPort                   ,


-- ** getProtocol #method:getProtocol#
    SecurityOriginGetProtocolMethodInfo     ,
    securityOriginGetProtocol               ,


-- ** getWebDatabaseQuota #method:getWebDatabaseQuota#
    SecurityOriginGetWebDatabaseQuotaMethodInfo,
    securityOriginGetWebDatabaseQuota       ,


-- ** getWebDatabaseUsage #method:getWebDatabaseUsage#
    SecurityOriginGetWebDatabaseUsageMethodInfo,
    securityOriginGetWebDatabaseUsage       ,


-- ** setWebDatabaseQuota #method:setWebDatabaseQuota#
    SecurityOriginSetWebDatabaseQuotaMethodInfo,
    securityOriginSetWebDatabaseQuota       ,




 -- * Properties
-- ** host #attr:host#
    SecurityOriginHostPropertyInfo          ,
    getSecurityOriginHost                   ,
    securityOriginHost                      ,


-- ** port #attr:port#
    SecurityOriginPortPropertyInfo          ,
    getSecurityOriginPort                   ,
    securityOriginPort                      ,


-- ** protocol #attr:protocol#
    SecurityOriginProtocolPropertyInfo      ,
    getSecurityOriginProtocol               ,
    securityOriginProtocol                  ,


-- ** webDatabaseQuota #attr:webDatabaseQuota#
    SecurityOriginWebDatabaseQuotaPropertyInfo,
    constructSecurityOriginWebDatabaseQuota ,
    getSecurityOriginWebDatabaseQuota       ,
    securityOriginWebDatabaseQuota          ,
    setSecurityOriginWebDatabaseQuota       ,


-- ** webDatabaseUsage #attr:webDatabaseUsage#
    SecurityOriginWebDatabaseUsagePropertyInfo,
    getSecurityOriginWebDatabaseUsage       ,
    securityOriginWebDatabaseUsage          ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.WebKit.Objects.WebDatabase as WebKit.WebDatabase

newtype SecurityOrigin = SecurityOrigin (ManagedPtr SecurityOrigin)
foreign import ccall "webkit_security_origin_get_type"
    c_webkit_security_origin_get_type :: IO GType

instance GObject SecurityOrigin where
    gobjectType _ = c_webkit_security_origin_get_type
    

class GObject o => IsSecurityOrigin o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError SecurityOrigin a) =>
    IsSecurityOrigin a
#endif
instance IsSecurityOrigin SecurityOrigin
instance GObject.Object.IsObject SecurityOrigin

toSecurityOrigin :: IsSecurityOrigin o => o -> IO SecurityOrigin
toSecurityOrigin = unsafeCastTo SecurityOrigin

noSecurityOrigin :: Maybe SecurityOrigin
noSecurityOrigin = Nothing

type family ResolveSecurityOriginMethod (t :: Symbol) (o :: *) :: * where
    ResolveSecurityOriginMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveSecurityOriginMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveSecurityOriginMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveSecurityOriginMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveSecurityOriginMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveSecurityOriginMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveSecurityOriginMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveSecurityOriginMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveSecurityOriginMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveSecurityOriginMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveSecurityOriginMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveSecurityOriginMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveSecurityOriginMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveSecurityOriginMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveSecurityOriginMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveSecurityOriginMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveSecurityOriginMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveSecurityOriginMethod "getAllWebDatabases" o = SecurityOriginGetAllWebDatabasesMethodInfo
    ResolveSecurityOriginMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveSecurityOriginMethod "getHost" o = SecurityOriginGetHostMethodInfo
    ResolveSecurityOriginMethod "getPort" o = SecurityOriginGetPortMethodInfo
    ResolveSecurityOriginMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveSecurityOriginMethod "getProtocol" o = SecurityOriginGetProtocolMethodInfo
    ResolveSecurityOriginMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveSecurityOriginMethod "getWebDatabaseQuota" o = SecurityOriginGetWebDatabaseQuotaMethodInfo
    ResolveSecurityOriginMethod "getWebDatabaseUsage" o = SecurityOriginGetWebDatabaseUsageMethodInfo
    ResolveSecurityOriginMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveSecurityOriginMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveSecurityOriginMethod "setWebDatabaseQuota" o = SecurityOriginSetWebDatabaseQuotaMethodInfo
    ResolveSecurityOriginMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveSecurityOriginMethod t SecurityOrigin, O.MethodInfo info SecurityOrigin p) => O.IsLabelProxy t (SecurityOrigin -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveSecurityOriginMethod t SecurityOrigin, O.MethodInfo info SecurityOrigin p) => O.IsLabel t (SecurityOrigin -> p) where
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

-- VVV Prop "host"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getSecurityOriginHost :: (MonadIO m, IsSecurityOrigin o) => o -> m T.Text
getSecurityOriginHost obj = liftIO $ checkUnexpectedNothing "getSecurityOriginHost" $ getObjectPropertyString obj "host"

data SecurityOriginHostPropertyInfo
instance AttrInfo SecurityOriginHostPropertyInfo where
    type AttrAllowedOps SecurityOriginHostPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint SecurityOriginHostPropertyInfo = (~) ()
    type AttrBaseTypeConstraint SecurityOriginHostPropertyInfo = IsSecurityOrigin
    type AttrGetType SecurityOriginHostPropertyInfo = T.Text
    type AttrLabel SecurityOriginHostPropertyInfo = "host"
    type AttrOrigin SecurityOriginHostPropertyInfo = SecurityOrigin
    attrGet _ = getSecurityOriginHost
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "port"
   -- Type: TBasicType TUInt
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getSecurityOriginPort :: (MonadIO m, IsSecurityOrigin o) => o -> m Word32
getSecurityOriginPort obj = liftIO $ getObjectPropertyUInt32 obj "port"

data SecurityOriginPortPropertyInfo
instance AttrInfo SecurityOriginPortPropertyInfo where
    type AttrAllowedOps SecurityOriginPortPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint SecurityOriginPortPropertyInfo = (~) ()
    type AttrBaseTypeConstraint SecurityOriginPortPropertyInfo = IsSecurityOrigin
    type AttrGetType SecurityOriginPortPropertyInfo = Word32
    type AttrLabel SecurityOriginPortPropertyInfo = "port"
    type AttrOrigin SecurityOriginPortPropertyInfo = SecurityOrigin
    attrGet _ = getSecurityOriginPort
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "protocol"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getSecurityOriginProtocol :: (MonadIO m, IsSecurityOrigin o) => o -> m T.Text
getSecurityOriginProtocol obj = liftIO $ checkUnexpectedNothing "getSecurityOriginProtocol" $ getObjectPropertyString obj "protocol"

data SecurityOriginProtocolPropertyInfo
instance AttrInfo SecurityOriginProtocolPropertyInfo where
    type AttrAllowedOps SecurityOriginProtocolPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint SecurityOriginProtocolPropertyInfo = (~) ()
    type AttrBaseTypeConstraint SecurityOriginProtocolPropertyInfo = IsSecurityOrigin
    type AttrGetType SecurityOriginProtocolPropertyInfo = T.Text
    type AttrLabel SecurityOriginProtocolPropertyInfo = "protocol"
    type AttrOrigin SecurityOriginProtocolPropertyInfo = SecurityOrigin
    attrGet _ = getSecurityOriginProtocol
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "web-database-quota"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

getSecurityOriginWebDatabaseQuota :: (MonadIO m, IsSecurityOrigin o) => o -> m Word64
getSecurityOriginWebDatabaseQuota obj = liftIO $ getObjectPropertyUInt64 obj "web-database-quota"

setSecurityOriginWebDatabaseQuota :: (MonadIO m, IsSecurityOrigin o) => o -> Word64 -> m ()
setSecurityOriginWebDatabaseQuota obj val = liftIO $ setObjectPropertyUInt64 obj "web-database-quota" val

constructSecurityOriginWebDatabaseQuota :: (IsSecurityOrigin o) => Word64 -> IO (GValueConstruct o)
constructSecurityOriginWebDatabaseQuota val = constructObjectPropertyUInt64 "web-database-quota" val

data SecurityOriginWebDatabaseQuotaPropertyInfo
instance AttrInfo SecurityOriginWebDatabaseQuotaPropertyInfo where
    type AttrAllowedOps SecurityOriginWebDatabaseQuotaPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint SecurityOriginWebDatabaseQuotaPropertyInfo = (~) Word64
    type AttrBaseTypeConstraint SecurityOriginWebDatabaseQuotaPropertyInfo = IsSecurityOrigin
    type AttrGetType SecurityOriginWebDatabaseQuotaPropertyInfo = Word64
    type AttrLabel SecurityOriginWebDatabaseQuotaPropertyInfo = "web-database-quota"
    type AttrOrigin SecurityOriginWebDatabaseQuotaPropertyInfo = SecurityOrigin
    attrGet _ = getSecurityOriginWebDatabaseQuota
    attrSet _ = setSecurityOriginWebDatabaseQuota
    attrConstruct _ = constructSecurityOriginWebDatabaseQuota
    attrClear _ = undefined

-- VVV Prop "web-database-usage"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getSecurityOriginWebDatabaseUsage :: (MonadIO m, IsSecurityOrigin o) => o -> m Word64
getSecurityOriginWebDatabaseUsage obj = liftIO $ getObjectPropertyUInt64 obj "web-database-usage"

data SecurityOriginWebDatabaseUsagePropertyInfo
instance AttrInfo SecurityOriginWebDatabaseUsagePropertyInfo where
    type AttrAllowedOps SecurityOriginWebDatabaseUsagePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint SecurityOriginWebDatabaseUsagePropertyInfo = (~) ()
    type AttrBaseTypeConstraint SecurityOriginWebDatabaseUsagePropertyInfo = IsSecurityOrigin
    type AttrGetType SecurityOriginWebDatabaseUsagePropertyInfo = Word64
    type AttrLabel SecurityOriginWebDatabaseUsagePropertyInfo = "web-database-usage"
    type AttrOrigin SecurityOriginWebDatabaseUsagePropertyInfo = SecurityOrigin
    attrGet _ = getSecurityOriginWebDatabaseUsage
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList SecurityOrigin
type instance O.AttributeList SecurityOrigin = SecurityOriginAttributeList
type SecurityOriginAttributeList = ('[ '("host", SecurityOriginHostPropertyInfo), '("port", SecurityOriginPortPropertyInfo), '("protocol", SecurityOriginProtocolPropertyInfo), '("webDatabaseQuota", SecurityOriginWebDatabaseQuotaPropertyInfo), '("webDatabaseUsage", SecurityOriginWebDatabaseUsagePropertyInfo)] :: [(Symbol, *)])

securityOriginHost :: AttrLabelProxy "host"
securityOriginHost = AttrLabelProxy

securityOriginPort :: AttrLabelProxy "port"
securityOriginPort = AttrLabelProxy

securityOriginProtocol :: AttrLabelProxy "protocol"
securityOriginProtocol = AttrLabelProxy

securityOriginWebDatabaseQuota :: AttrLabelProxy "webDatabaseQuota"
securityOriginWebDatabaseQuota = AttrLabelProxy

securityOriginWebDatabaseUsage :: AttrLabelProxy "webDatabaseUsage"
securityOriginWebDatabaseUsage = AttrLabelProxy

type instance O.SignalList SecurityOrigin = SecurityOriginSignalList
type SecurityOriginSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method SecurityOrigin::get_all_web_databases
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "securityOrigin", argType = TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitSecurityOrigin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "WebKit", name = "WebDatabase"})))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_security_origin_get_all_web_databases" webkit_security_origin_get_all_web_databases :: 
    Ptr SecurityOrigin ->                   -- securityOrigin : TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"})
    IO (Ptr (GList (Ptr WebKit.WebDatabase.WebDatabase)))

{- |
Returns a list of all Web Databases in the security origin.

@since 1.1.14
-}
securityOriginGetAllWebDatabases ::
    (B.CallStack.HasCallStack, MonadIO m, IsSecurityOrigin a) =>
    a
    {- ^ /@securityOrigin@/: a 'GI.WebKit.Objects.SecurityOrigin.SecurityOrigin' -}
    -> m [WebKit.WebDatabase.WebDatabase]
    {- ^ __Returns:__ a
'GI.GLib.Structs.List.List' of databases in the security origin. -}
securityOriginGetAllWebDatabases securityOrigin = liftIO $ do
    securityOrigin' <- unsafeManagedPtrCastPtr securityOrigin
    result <- webkit_security_origin_get_all_web_databases securityOrigin'
    result' <- unpackGList result
    result'' <- mapM (newObject WebKit.WebDatabase.WebDatabase) result'
    g_list_free result
    touchManagedPtr securityOrigin
    return result''

data SecurityOriginGetAllWebDatabasesMethodInfo
instance (signature ~ (m [WebKit.WebDatabase.WebDatabase]), MonadIO m, IsSecurityOrigin a) => O.MethodInfo SecurityOriginGetAllWebDatabasesMethodInfo a signature where
    overloadedMethod _ = securityOriginGetAllWebDatabases

-- method SecurityOrigin::get_host
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "securityOrigin", argType = TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitSecurityOrigin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_security_origin_get_host" webkit_security_origin_get_host :: 
    Ptr SecurityOrigin ->                   -- securityOrigin : TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"})
    IO CString

{- |
Returns the hostname for the security origin.

@since 1.1.14
-}
securityOriginGetHost ::
    (B.CallStack.HasCallStack, MonadIO m, IsSecurityOrigin a) =>
    a
    {- ^ /@securityOrigin@/: a 'GI.WebKit.Objects.SecurityOrigin.SecurityOrigin' -}
    -> m T.Text
    {- ^ __Returns:__ the hostname for the security origin -}
securityOriginGetHost securityOrigin = liftIO $ do
    securityOrigin' <- unsafeManagedPtrCastPtr securityOrigin
    result <- webkit_security_origin_get_host securityOrigin'
    checkUnexpectedReturnNULL "securityOriginGetHost" result
    result' <- cstringToText result
    touchManagedPtr securityOrigin
    return result'

data SecurityOriginGetHostMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsSecurityOrigin a) => O.MethodInfo SecurityOriginGetHostMethodInfo a signature where
    overloadedMethod _ = securityOriginGetHost

-- method SecurityOrigin::get_port
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "securityOrigin", argType = TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitSecurityOrigin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_security_origin_get_port" webkit_security_origin_get_port :: 
    Ptr SecurityOrigin ->                   -- securityOrigin : TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"})
    IO Word32

{- |
Returns the port for the security origin.

@since 1.1.14
-}
securityOriginGetPort ::
    (B.CallStack.HasCallStack, MonadIO m, IsSecurityOrigin a) =>
    a
    {- ^ /@securityOrigin@/: a 'GI.WebKit.Objects.SecurityOrigin.SecurityOrigin' -}
    -> m Word32
    {- ^ __Returns:__ the port for the security origin -}
securityOriginGetPort securityOrigin = liftIO $ do
    securityOrigin' <- unsafeManagedPtrCastPtr securityOrigin
    result <- webkit_security_origin_get_port securityOrigin'
    touchManagedPtr securityOrigin
    return result

data SecurityOriginGetPortMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsSecurityOrigin a) => O.MethodInfo SecurityOriginGetPortMethodInfo a signature where
    overloadedMethod _ = securityOriginGetPort

-- method SecurityOrigin::get_protocol
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "securityOrigin", argType = TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitSecurityOrigin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_security_origin_get_protocol" webkit_security_origin_get_protocol :: 
    Ptr SecurityOrigin ->                   -- securityOrigin : TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"})
    IO CString

{- |
Returns the protocol for the security origin.

@since 1.1.14
-}
securityOriginGetProtocol ::
    (B.CallStack.HasCallStack, MonadIO m, IsSecurityOrigin a) =>
    a
    {- ^ /@securityOrigin@/: a 'GI.WebKit.Objects.SecurityOrigin.SecurityOrigin' -}
    -> m T.Text
    {- ^ __Returns:__ the protocol for the security origin -}
securityOriginGetProtocol securityOrigin = liftIO $ do
    securityOrigin' <- unsafeManagedPtrCastPtr securityOrigin
    result <- webkit_security_origin_get_protocol securityOrigin'
    checkUnexpectedReturnNULL "securityOriginGetProtocol" result
    result' <- cstringToText result
    touchManagedPtr securityOrigin
    return result'

data SecurityOriginGetProtocolMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsSecurityOrigin a) => O.MethodInfo SecurityOriginGetProtocolMethodInfo a signature where
    overloadedMethod _ = securityOriginGetProtocol

-- method SecurityOrigin::get_web_database_quota
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "securityOrigin", argType = TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitSecurityOrigin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_security_origin_get_web_database_quota" webkit_security_origin_get_web_database_quota :: 
    Ptr SecurityOrigin ->                   -- securityOrigin : TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"})
    IO Word64

{- |
Returns the quota for Web Database storage of the security origin
in bytes.

@since 1.1.14
-}
securityOriginGetWebDatabaseQuota ::
    (B.CallStack.HasCallStack, MonadIO m, IsSecurityOrigin a) =>
    a
    {- ^ /@securityOrigin@/: a 'GI.WebKit.Objects.SecurityOrigin.SecurityOrigin' -}
    -> m Word64
    {- ^ __Returns:__ the Web Database quota -}
securityOriginGetWebDatabaseQuota securityOrigin = liftIO $ do
    securityOrigin' <- unsafeManagedPtrCastPtr securityOrigin
    result <- webkit_security_origin_get_web_database_quota securityOrigin'
    touchManagedPtr securityOrigin
    return result

data SecurityOriginGetWebDatabaseQuotaMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsSecurityOrigin a) => O.MethodInfo SecurityOriginGetWebDatabaseQuotaMethodInfo a signature where
    overloadedMethod _ = securityOriginGetWebDatabaseQuota

-- method SecurityOrigin::get_web_database_usage
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "securityOrigin", argType = TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitSecurityOrigin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "webkit_security_origin_get_web_database_usage" webkit_security_origin_get_web_database_usage :: 
    Ptr SecurityOrigin ->                   -- securityOrigin : TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"})
    IO Word64

{- |
Returns the cumulative size of all Web Database database\'s in the origin
in bytes.

@since 1.1.14
-}
securityOriginGetWebDatabaseUsage ::
    (B.CallStack.HasCallStack, MonadIO m, IsSecurityOrigin a) =>
    a
    {- ^ /@securityOrigin@/: a 'GI.WebKit.Objects.SecurityOrigin.SecurityOrigin' -}
    -> m Word64
    {- ^ __Returns:__ the cumulative size of all databases -}
securityOriginGetWebDatabaseUsage securityOrigin = liftIO $ do
    securityOrigin' <- unsafeManagedPtrCastPtr securityOrigin
    result <- webkit_security_origin_get_web_database_usage securityOrigin'
    touchManagedPtr securityOrigin
    return result

data SecurityOriginGetWebDatabaseUsageMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsSecurityOrigin a) => O.MethodInfo SecurityOriginGetWebDatabaseUsageMethodInfo a signature where
    overloadedMethod _ = securityOriginGetWebDatabaseUsage

-- method SecurityOrigin::set_web_database_quota
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "securityOrigin", argType = TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitSecurityOrigin", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "quota", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a new Web Database quota in bytes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_security_origin_set_web_database_quota" webkit_security_origin_set_web_database_quota :: 
    Ptr SecurityOrigin ->                   -- securityOrigin : TInterface (Name {namespace = "WebKit", name = "SecurityOrigin"})
    Word64 ->                               -- quota : TBasicType TUInt64
    IO ()

{- |
Adjust the quota for Web Database storage of the security origin

@since 1.1.14
-}
securityOriginSetWebDatabaseQuota ::
    (B.CallStack.HasCallStack, MonadIO m, IsSecurityOrigin a) =>
    a
    {- ^ /@securityOrigin@/: a 'GI.WebKit.Objects.SecurityOrigin.SecurityOrigin' -}
    -> Word64
    {- ^ /@quota@/: a new Web Database quota in bytes -}
    -> m ()
securityOriginSetWebDatabaseQuota securityOrigin quota = liftIO $ do
    securityOrigin' <- unsafeManagedPtrCastPtr securityOrigin
    webkit_security_origin_set_web_database_quota securityOrigin' quota
    touchManagedPtr securityOrigin
    return ()

data SecurityOriginSetWebDatabaseQuotaMethodInfo
instance (signature ~ (Word64 -> m ()), MonadIO m, IsSecurityOrigin a) => O.MethodInfo SecurityOriginSetWebDatabaseQuotaMethodInfo a signature where
    overloadedMethod _ = securityOriginSetWebDatabaseQuota