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

/No description available in the introspection data./
-}

#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
       && !defined(__HADDOCK_VERSION__))

module GI.WebKit2.Objects.WebsiteDataManager
    (

-- * Exported types
    WebsiteDataManager(..)                  ,
    IsWebsiteDataManager                    ,
    toWebsiteDataManager                    ,
    noWebsiteDataManager                    ,


 -- * Methods
-- ** clear #method:clear#

#if ENABLE_OVERLOADING
    WebsiteDataManagerClearMethodInfo       ,
#endif
    websiteDataManagerClear                 ,


-- ** clearFinish #method:clearFinish#

#if ENABLE_OVERLOADING
    WebsiteDataManagerClearFinishMethodInfo ,
#endif
    websiteDataManagerClearFinish           ,


-- ** fetch #method:fetch#

#if ENABLE_OVERLOADING
    WebsiteDataManagerFetchMethodInfo       ,
#endif
    websiteDataManagerFetch                 ,


-- ** fetchFinish #method:fetchFinish#

#if ENABLE_OVERLOADING
    WebsiteDataManagerFetchFinishMethodInfo ,
#endif
    websiteDataManagerFetchFinish           ,


-- ** getBaseCacheDirectory #method:getBaseCacheDirectory#

#if ENABLE_OVERLOADING
    WebsiteDataManagerGetBaseCacheDirectoryMethodInfo,
#endif
    websiteDataManagerGetBaseCacheDirectory ,


-- ** getBaseDataDirectory #method:getBaseDataDirectory#

#if ENABLE_OVERLOADING
    WebsiteDataManagerGetBaseDataDirectoryMethodInfo,
#endif
    websiteDataManagerGetBaseDataDirectory  ,


-- ** getCookieManager #method:getCookieManager#

#if ENABLE_OVERLOADING
    WebsiteDataManagerGetCookieManagerMethodInfo,
#endif
    websiteDataManagerGetCookieManager      ,


-- ** getDiskCacheDirectory #method:getDiskCacheDirectory#

#if ENABLE_OVERLOADING
    WebsiteDataManagerGetDiskCacheDirectoryMethodInfo,
#endif
    websiteDataManagerGetDiskCacheDirectory ,


-- ** getIndexeddbDirectory #method:getIndexeddbDirectory#

#if ENABLE_OVERLOADING
    WebsiteDataManagerGetIndexeddbDirectoryMethodInfo,
#endif
    websiteDataManagerGetIndexeddbDirectory ,


-- ** getLocalStorageDirectory #method:getLocalStorageDirectory#

#if ENABLE_OVERLOADING
    WebsiteDataManagerGetLocalStorageDirectoryMethodInfo,
#endif
    websiteDataManagerGetLocalStorageDirectory,


-- ** getOfflineApplicationCacheDirectory #method:getOfflineApplicationCacheDirectory#

#if ENABLE_OVERLOADING
    WebsiteDataManagerGetOfflineApplicationCacheDirectoryMethodInfo,
#endif
    websiteDataManagerGetOfflineApplicationCacheDirectory,


-- ** getWebsqlDirectory #method:getWebsqlDirectory#

#if ENABLE_OVERLOADING
    WebsiteDataManagerGetWebsqlDirectoryMethodInfo,
#endif
    websiteDataManagerGetWebsqlDirectory    ,


-- ** isEphemeral #method:isEphemeral#

#if ENABLE_OVERLOADING
    WebsiteDataManagerIsEphemeralMethodInfo ,
#endif
    websiteDataManagerIsEphemeral           ,


-- ** newEphemeral #method:newEphemeral#

    websiteDataManagerNewEphemeral          ,


-- ** remove #method:remove#

#if ENABLE_OVERLOADING
    WebsiteDataManagerRemoveMethodInfo      ,
#endif
    websiteDataManagerRemove                ,


-- ** removeFinish #method:removeFinish#

#if ENABLE_OVERLOADING
    WebsiteDataManagerRemoveFinishMethodInfo,
#endif
    websiteDataManagerRemoveFinish          ,




 -- * Properties
-- ** baseCacheDirectory #attr:baseCacheDirectory#
{- | The base directory for Website cache. This is used as a base directory
for any Website cache when no specific cache directory has been provided.

/Since: 2.10/
-}
#if ENABLE_OVERLOADING
    WebsiteDataManagerBaseCacheDirectoryPropertyInfo,
#endif
    constructWebsiteDataManagerBaseCacheDirectory,
    getWebsiteDataManagerBaseCacheDirectory ,
#if ENABLE_OVERLOADING
    websiteDataManagerBaseCacheDirectory    ,
#endif


-- ** baseDataDirectory #attr:baseDataDirectory#
{- | The base directory for Website data. This is used as a base directory
for any Website data when no specific data directory has been provided.

/Since: 2.10/
-}
#if ENABLE_OVERLOADING
    WebsiteDataManagerBaseDataDirectoryPropertyInfo,
#endif
    constructWebsiteDataManagerBaseDataDirectory,
    getWebsiteDataManagerBaseDataDirectory  ,
#if ENABLE_OVERLOADING
    websiteDataManagerBaseDataDirectory     ,
#endif


-- ** diskCacheDirectory #attr:diskCacheDirectory#
{- | The directory where HTTP disk cache will be stored.

/Since: 2.10/
-}
#if ENABLE_OVERLOADING
    WebsiteDataManagerDiskCacheDirectoryPropertyInfo,
#endif
    constructWebsiteDataManagerDiskCacheDirectory,
    getWebsiteDataManagerDiskCacheDirectory ,
#if ENABLE_OVERLOADING
    websiteDataManagerDiskCacheDirectory    ,
#endif


-- ** indexeddbDirectory #attr:indexeddbDirectory#
{- | The directory where IndexedDB databases will be stored.

/Since: 2.10/
-}
#if ENABLE_OVERLOADING
    WebsiteDataManagerIndexeddbDirectoryPropertyInfo,
#endif
    constructWebsiteDataManagerIndexeddbDirectory,
    getWebsiteDataManagerIndexeddbDirectory ,
#if ENABLE_OVERLOADING
    websiteDataManagerIndexeddbDirectory    ,
#endif


-- ** isEphemeral #attr:isEphemeral#
{- | Whether the 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' is ephemeral. An ephemeral 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager'
handles all websites data as non-persistent, and nothing will be written to the client
storage. Note that if you create an ephemeral 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' all other construction
parameters to configure data directories will be ignored.

/Since: 2.16/
-}
#if ENABLE_OVERLOADING
    WebsiteDataManagerIsEphemeralPropertyInfo,
#endif
    constructWebsiteDataManagerIsEphemeral  ,
    getWebsiteDataManagerIsEphemeral        ,


-- ** localStorageDirectory #attr:localStorageDirectory#
{- | The directory where local storage data will be stored.

/Since: 2.10/
-}
#if ENABLE_OVERLOADING
    WebsiteDataManagerLocalStorageDirectoryPropertyInfo,
#endif
    constructWebsiteDataManagerLocalStorageDirectory,
    getWebsiteDataManagerLocalStorageDirectory,
#if ENABLE_OVERLOADING
    websiteDataManagerLocalStorageDirectory ,
#endif


-- ** offlineApplicationCacheDirectory #attr:offlineApplicationCacheDirectory#
{- | The directory where offline web application cache will be stored.

/Since: 2.10/
-}
#if ENABLE_OVERLOADING
    WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo,
#endif
    constructWebsiteDataManagerOfflineApplicationCacheDirectory,
    getWebsiteDataManagerOfflineApplicationCacheDirectory,
#if ENABLE_OVERLOADING
    websiteDataManagerOfflineApplicationCacheDirectory,
#endif


-- ** websqlDirectory #attr:websqlDirectory#
{- | The directory where WebSQL databases will be stored.

/Since: 2.10/
-}
#if ENABLE_OVERLOADING
    WebsiteDataManagerWebsqlDirectoryPropertyInfo,
#endif
    constructWebsiteDataManagerWebsqlDirectory,
    getWebsiteDataManagerWebsqlDirectory    ,
#if ENABLE_OVERLOADING
    websiteDataManagerWebsqlDirectory       ,
#endif




    ) 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.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
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 GHC.OverloadedLabels as OL

import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Callbacks as Gio.Callbacks
import qualified GI.Gio.Interfaces.AsyncResult as Gio.AsyncResult
import qualified GI.Gio.Objects.Cancellable as Gio.Cancellable
import {-# SOURCE #-} qualified GI.WebKit2.Flags as WebKit2.Flags
import {-# SOURCE #-} qualified GI.WebKit2.Objects.CookieManager as WebKit2.CookieManager
import {-# SOURCE #-} qualified GI.WebKit2.Structs.WebsiteData as WebKit2.WebsiteData

-- | Memory-managed wrapper type.
newtype WebsiteDataManager = WebsiteDataManager (ManagedPtr WebsiteDataManager)
foreign import ccall "webkit_website_data_manager_get_type"
    c_webkit_website_data_manager_get_type :: IO GType

instance GObject WebsiteDataManager where
    gobjectType = c_webkit_website_data_manager_get_type


-- | Type class for types which can be safely cast to `WebsiteDataManager`, for instance with `toWebsiteDataManager`.
class (GObject o, O.IsDescendantOf WebsiteDataManager o) => IsWebsiteDataManager o
instance (GObject o, O.IsDescendantOf WebsiteDataManager o) => IsWebsiteDataManager o

instance O.HasParentTypes WebsiteDataManager
type instance O.ParentTypes WebsiteDataManager = '[GObject.Object.Object]

-- | Cast to `WebsiteDataManager`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toWebsiteDataManager :: (MonadIO m, IsWebsiteDataManager o) => o -> m WebsiteDataManager
toWebsiteDataManager = liftIO . unsafeCastTo WebsiteDataManager

-- | A convenience alias for `Nothing` :: `Maybe` `WebsiteDataManager`.
noWebsiteDataManager :: Maybe WebsiteDataManager
noWebsiteDataManager = Nothing

#if ENABLE_OVERLOADING
type family ResolveWebsiteDataManagerMethod (t :: Symbol) (o :: *) :: * where
    ResolveWebsiteDataManagerMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveWebsiteDataManagerMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveWebsiteDataManagerMethod "clear" o = WebsiteDataManagerClearMethodInfo
    ResolveWebsiteDataManagerMethod "clearFinish" o = WebsiteDataManagerClearFinishMethodInfo
    ResolveWebsiteDataManagerMethod "fetch" o = WebsiteDataManagerFetchMethodInfo
    ResolveWebsiteDataManagerMethod "fetchFinish" o = WebsiteDataManagerFetchFinishMethodInfo
    ResolveWebsiteDataManagerMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveWebsiteDataManagerMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveWebsiteDataManagerMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveWebsiteDataManagerMethod "isEphemeral" o = WebsiteDataManagerIsEphemeralMethodInfo
    ResolveWebsiteDataManagerMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveWebsiteDataManagerMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveWebsiteDataManagerMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveWebsiteDataManagerMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveWebsiteDataManagerMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveWebsiteDataManagerMethod "remove" o = WebsiteDataManagerRemoveMethodInfo
    ResolveWebsiteDataManagerMethod "removeFinish" o = WebsiteDataManagerRemoveFinishMethodInfo
    ResolveWebsiteDataManagerMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveWebsiteDataManagerMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveWebsiteDataManagerMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveWebsiteDataManagerMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveWebsiteDataManagerMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveWebsiteDataManagerMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveWebsiteDataManagerMethod "getBaseCacheDirectory" o = WebsiteDataManagerGetBaseCacheDirectoryMethodInfo
    ResolveWebsiteDataManagerMethod "getBaseDataDirectory" o = WebsiteDataManagerGetBaseDataDirectoryMethodInfo
    ResolveWebsiteDataManagerMethod "getCookieManager" o = WebsiteDataManagerGetCookieManagerMethodInfo
    ResolveWebsiteDataManagerMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveWebsiteDataManagerMethod "getDiskCacheDirectory" o = WebsiteDataManagerGetDiskCacheDirectoryMethodInfo
    ResolveWebsiteDataManagerMethod "getIndexeddbDirectory" o = WebsiteDataManagerGetIndexeddbDirectoryMethodInfo
    ResolveWebsiteDataManagerMethod "getLocalStorageDirectory" o = WebsiteDataManagerGetLocalStorageDirectoryMethodInfo
    ResolveWebsiteDataManagerMethod "getOfflineApplicationCacheDirectory" o = WebsiteDataManagerGetOfflineApplicationCacheDirectoryMethodInfo
    ResolveWebsiteDataManagerMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveWebsiteDataManagerMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveWebsiteDataManagerMethod "getWebsqlDirectory" o = WebsiteDataManagerGetWebsqlDirectoryMethodInfo
    ResolveWebsiteDataManagerMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveWebsiteDataManagerMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveWebsiteDataManagerMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveWebsiteDataManagerMethod t WebsiteDataManager, O.MethodInfo info WebsiteDataManager p) => OL.IsLabel t (WebsiteDataManager -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

#endif

-- VVV Prop "base-cache-directory"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just True,Nothing)

{- |
Get the value of the “@base-cache-directory@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' websiteDataManager #baseCacheDirectory
@
-}
getWebsiteDataManagerBaseCacheDirectory :: (MonadIO m, IsWebsiteDataManager o) => o -> m (Maybe T.Text)
getWebsiteDataManagerBaseCacheDirectory obj = liftIO $ B.Properties.getObjectPropertyString obj "base-cache-directory"

{- |
Construct a `GValueConstruct` with valid value for the “@base-cache-directory@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructWebsiteDataManagerBaseCacheDirectory :: (IsWebsiteDataManager o) => T.Text -> IO (GValueConstruct o)
constructWebsiteDataManagerBaseCacheDirectory val = B.Properties.constructObjectPropertyString "base-cache-directory" (Just val)

#if ENABLE_OVERLOADING
data WebsiteDataManagerBaseCacheDirectoryPropertyInfo
instance AttrInfo WebsiteDataManagerBaseCacheDirectoryPropertyInfo where
    type AttrAllowedOps WebsiteDataManagerBaseCacheDirectoryPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebsiteDataManagerBaseCacheDirectoryPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WebsiteDataManagerBaseCacheDirectoryPropertyInfo = IsWebsiteDataManager
    type AttrGetType WebsiteDataManagerBaseCacheDirectoryPropertyInfo = (Maybe T.Text)
    type AttrLabel WebsiteDataManagerBaseCacheDirectoryPropertyInfo = "base-cache-directory"
    type AttrOrigin WebsiteDataManagerBaseCacheDirectoryPropertyInfo = WebsiteDataManager
    attrGet _ = getWebsiteDataManagerBaseCacheDirectory
    attrSet _ = undefined
    attrConstruct _ = constructWebsiteDataManagerBaseCacheDirectory
    attrClear _ = undefined
#endif

-- VVV Prop "base-data-directory"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just True,Nothing)

{- |
Get the value of the “@base-data-directory@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' websiteDataManager #baseDataDirectory
@
-}
getWebsiteDataManagerBaseDataDirectory :: (MonadIO m, IsWebsiteDataManager o) => o -> m (Maybe T.Text)
getWebsiteDataManagerBaseDataDirectory obj = liftIO $ B.Properties.getObjectPropertyString obj "base-data-directory"

{- |
Construct a `GValueConstruct` with valid value for the “@base-data-directory@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructWebsiteDataManagerBaseDataDirectory :: (IsWebsiteDataManager o) => T.Text -> IO (GValueConstruct o)
constructWebsiteDataManagerBaseDataDirectory val = B.Properties.constructObjectPropertyString "base-data-directory" (Just val)

#if ENABLE_OVERLOADING
data WebsiteDataManagerBaseDataDirectoryPropertyInfo
instance AttrInfo WebsiteDataManagerBaseDataDirectoryPropertyInfo where
    type AttrAllowedOps WebsiteDataManagerBaseDataDirectoryPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebsiteDataManagerBaseDataDirectoryPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WebsiteDataManagerBaseDataDirectoryPropertyInfo = IsWebsiteDataManager
    type AttrGetType WebsiteDataManagerBaseDataDirectoryPropertyInfo = (Maybe T.Text)
    type AttrLabel WebsiteDataManagerBaseDataDirectoryPropertyInfo = "base-data-directory"
    type AttrOrigin WebsiteDataManagerBaseDataDirectoryPropertyInfo = WebsiteDataManager
    attrGet _ = getWebsiteDataManagerBaseDataDirectory
    attrSet _ = undefined
    attrConstruct _ = constructWebsiteDataManagerBaseDataDirectory
    attrClear _ = undefined
#endif

-- VVV Prop "disk-cache-directory"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just True,Nothing)

{- |
Get the value of the “@disk-cache-directory@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' websiteDataManager #diskCacheDirectory
@
-}
getWebsiteDataManagerDiskCacheDirectory :: (MonadIO m, IsWebsiteDataManager o) => o -> m (Maybe T.Text)
getWebsiteDataManagerDiskCacheDirectory obj = liftIO $ B.Properties.getObjectPropertyString obj "disk-cache-directory"

{- |
Construct a `GValueConstruct` with valid value for the “@disk-cache-directory@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructWebsiteDataManagerDiskCacheDirectory :: (IsWebsiteDataManager o) => T.Text -> IO (GValueConstruct o)
constructWebsiteDataManagerDiskCacheDirectory val = B.Properties.constructObjectPropertyString "disk-cache-directory" (Just val)

#if ENABLE_OVERLOADING
data WebsiteDataManagerDiskCacheDirectoryPropertyInfo
instance AttrInfo WebsiteDataManagerDiskCacheDirectoryPropertyInfo where
    type AttrAllowedOps WebsiteDataManagerDiskCacheDirectoryPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebsiteDataManagerDiskCacheDirectoryPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WebsiteDataManagerDiskCacheDirectoryPropertyInfo = IsWebsiteDataManager
    type AttrGetType WebsiteDataManagerDiskCacheDirectoryPropertyInfo = (Maybe T.Text)
    type AttrLabel WebsiteDataManagerDiskCacheDirectoryPropertyInfo = "disk-cache-directory"
    type AttrOrigin WebsiteDataManagerDiskCacheDirectoryPropertyInfo = WebsiteDataManager
    attrGet _ = getWebsiteDataManagerDiskCacheDirectory
    attrSet _ = undefined
    attrConstruct _ = constructWebsiteDataManagerDiskCacheDirectory
    attrClear _ = undefined
#endif

-- VVV Prop "indexeddb-directory"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just True,Nothing)

{- |
Get the value of the “@indexeddb-directory@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' websiteDataManager #indexeddbDirectory
@
-}
getWebsiteDataManagerIndexeddbDirectory :: (MonadIO m, IsWebsiteDataManager o) => o -> m (Maybe T.Text)
getWebsiteDataManagerIndexeddbDirectory obj = liftIO $ B.Properties.getObjectPropertyString obj "indexeddb-directory"

{- |
Construct a `GValueConstruct` with valid value for the “@indexeddb-directory@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructWebsiteDataManagerIndexeddbDirectory :: (IsWebsiteDataManager o) => T.Text -> IO (GValueConstruct o)
constructWebsiteDataManagerIndexeddbDirectory val = B.Properties.constructObjectPropertyString "indexeddb-directory" (Just val)

#if ENABLE_OVERLOADING
data WebsiteDataManagerIndexeddbDirectoryPropertyInfo
instance AttrInfo WebsiteDataManagerIndexeddbDirectoryPropertyInfo where
    type AttrAllowedOps WebsiteDataManagerIndexeddbDirectoryPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebsiteDataManagerIndexeddbDirectoryPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WebsiteDataManagerIndexeddbDirectoryPropertyInfo = IsWebsiteDataManager
    type AttrGetType WebsiteDataManagerIndexeddbDirectoryPropertyInfo = (Maybe T.Text)
    type AttrLabel WebsiteDataManagerIndexeddbDirectoryPropertyInfo = "indexeddb-directory"
    type AttrOrigin WebsiteDataManagerIndexeddbDirectoryPropertyInfo = WebsiteDataManager
    attrGet _ = getWebsiteDataManagerIndexeddbDirectory
    attrSet _ = undefined
    attrConstruct _ = constructWebsiteDataManagerIndexeddbDirectory
    attrClear _ = undefined
#endif

-- VVV Prop "is-ephemeral"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@is-ephemeral@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' websiteDataManager #isEphemeral
@
-}
getWebsiteDataManagerIsEphemeral :: (MonadIO m, IsWebsiteDataManager o) => o -> m Bool
getWebsiteDataManagerIsEphemeral obj = liftIO $ B.Properties.getObjectPropertyBool obj "is-ephemeral"

{- |
Construct a `GValueConstruct` with valid value for the “@is-ephemeral@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructWebsiteDataManagerIsEphemeral :: (IsWebsiteDataManager o) => Bool -> IO (GValueConstruct o)
constructWebsiteDataManagerIsEphemeral val = B.Properties.constructObjectPropertyBool "is-ephemeral" val

#if ENABLE_OVERLOADING
data WebsiteDataManagerIsEphemeralPropertyInfo
instance AttrInfo WebsiteDataManagerIsEphemeralPropertyInfo where
    type AttrAllowedOps WebsiteDataManagerIsEphemeralPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebsiteDataManagerIsEphemeralPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint WebsiteDataManagerIsEphemeralPropertyInfo = IsWebsiteDataManager
    type AttrGetType WebsiteDataManagerIsEphemeralPropertyInfo = Bool
    type AttrLabel WebsiteDataManagerIsEphemeralPropertyInfo = "is-ephemeral"
    type AttrOrigin WebsiteDataManagerIsEphemeralPropertyInfo = WebsiteDataManager
    attrGet _ = getWebsiteDataManagerIsEphemeral
    attrSet _ = undefined
    attrConstruct _ = constructWebsiteDataManagerIsEphemeral
    attrClear _ = undefined
#endif

-- VVV Prop "local-storage-directory"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just True,Nothing)

{- |
Get the value of the “@local-storage-directory@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' websiteDataManager #localStorageDirectory
@
-}
getWebsiteDataManagerLocalStorageDirectory :: (MonadIO m, IsWebsiteDataManager o) => o -> m (Maybe T.Text)
getWebsiteDataManagerLocalStorageDirectory obj = liftIO $ B.Properties.getObjectPropertyString obj "local-storage-directory"

{- |
Construct a `GValueConstruct` with valid value for the “@local-storage-directory@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructWebsiteDataManagerLocalStorageDirectory :: (IsWebsiteDataManager o) => T.Text -> IO (GValueConstruct o)
constructWebsiteDataManagerLocalStorageDirectory val = B.Properties.constructObjectPropertyString "local-storage-directory" (Just val)

#if ENABLE_OVERLOADING
data WebsiteDataManagerLocalStorageDirectoryPropertyInfo
instance AttrInfo WebsiteDataManagerLocalStorageDirectoryPropertyInfo where
    type AttrAllowedOps WebsiteDataManagerLocalStorageDirectoryPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebsiteDataManagerLocalStorageDirectoryPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WebsiteDataManagerLocalStorageDirectoryPropertyInfo = IsWebsiteDataManager
    type AttrGetType WebsiteDataManagerLocalStorageDirectoryPropertyInfo = (Maybe T.Text)
    type AttrLabel WebsiteDataManagerLocalStorageDirectoryPropertyInfo = "local-storage-directory"
    type AttrOrigin WebsiteDataManagerLocalStorageDirectoryPropertyInfo = WebsiteDataManager
    attrGet _ = getWebsiteDataManagerLocalStorageDirectory
    attrSet _ = undefined
    attrConstruct _ = constructWebsiteDataManagerLocalStorageDirectory
    attrClear _ = undefined
#endif

-- VVV Prop "offline-application-cache-directory"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just True,Nothing)

{- |
Get the value of the “@offline-application-cache-directory@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' websiteDataManager #offlineApplicationCacheDirectory
@
-}
getWebsiteDataManagerOfflineApplicationCacheDirectory :: (MonadIO m, IsWebsiteDataManager o) => o -> m (Maybe T.Text)
getWebsiteDataManagerOfflineApplicationCacheDirectory obj = liftIO $ B.Properties.getObjectPropertyString obj "offline-application-cache-directory"

{- |
Construct a `GValueConstruct` with valid value for the “@offline-application-cache-directory@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructWebsiteDataManagerOfflineApplicationCacheDirectory :: (IsWebsiteDataManager o) => T.Text -> IO (GValueConstruct o)
constructWebsiteDataManagerOfflineApplicationCacheDirectory val = B.Properties.constructObjectPropertyString "offline-application-cache-directory" (Just val)

#if ENABLE_OVERLOADING
data WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo
instance AttrInfo WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo where
    type AttrAllowedOps WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo = IsWebsiteDataManager
    type AttrGetType WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo = (Maybe T.Text)
    type AttrLabel WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo = "offline-application-cache-directory"
    type AttrOrigin WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo = WebsiteDataManager
    attrGet _ = getWebsiteDataManagerOfflineApplicationCacheDirectory
    attrSet _ = undefined
    attrConstruct _ = constructWebsiteDataManagerOfflineApplicationCacheDirectory
    attrClear _ = undefined
#endif

-- VVV Prop "websql-directory"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just True,Nothing)

{- |
Get the value of the “@websql-directory@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' websiteDataManager #websqlDirectory
@
-}
getWebsiteDataManagerWebsqlDirectory :: (MonadIO m, IsWebsiteDataManager o) => o -> m (Maybe T.Text)
getWebsiteDataManagerWebsqlDirectory obj = liftIO $ B.Properties.getObjectPropertyString obj "websql-directory"

{- |
Construct a `GValueConstruct` with valid value for the “@websql-directory@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructWebsiteDataManagerWebsqlDirectory :: (IsWebsiteDataManager o) => T.Text -> IO (GValueConstruct o)
constructWebsiteDataManagerWebsqlDirectory val = B.Properties.constructObjectPropertyString "websql-directory" (Just val)

#if ENABLE_OVERLOADING
data WebsiteDataManagerWebsqlDirectoryPropertyInfo
instance AttrInfo WebsiteDataManagerWebsqlDirectoryPropertyInfo where
    type AttrAllowedOps WebsiteDataManagerWebsqlDirectoryPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebsiteDataManagerWebsqlDirectoryPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WebsiteDataManagerWebsqlDirectoryPropertyInfo = IsWebsiteDataManager
    type AttrGetType WebsiteDataManagerWebsqlDirectoryPropertyInfo = (Maybe T.Text)
    type AttrLabel WebsiteDataManagerWebsqlDirectoryPropertyInfo = "websql-directory"
    type AttrOrigin WebsiteDataManagerWebsqlDirectoryPropertyInfo = WebsiteDataManager
    attrGet _ = getWebsiteDataManagerWebsqlDirectory
    attrSet _ = undefined
    attrConstruct _ = constructWebsiteDataManagerWebsqlDirectory
    attrClear _ = undefined
#endif

#if ENABLE_OVERLOADING
instance O.HasAttributeList WebsiteDataManager
type instance O.AttributeList WebsiteDataManager = WebsiteDataManagerAttributeList
type WebsiteDataManagerAttributeList = ('[ '("baseCacheDirectory", WebsiteDataManagerBaseCacheDirectoryPropertyInfo), '("baseDataDirectory", WebsiteDataManagerBaseDataDirectoryPropertyInfo), '("diskCacheDirectory", WebsiteDataManagerDiskCacheDirectoryPropertyInfo), '("indexeddbDirectory", WebsiteDataManagerIndexeddbDirectoryPropertyInfo), '("isEphemeral", WebsiteDataManagerIsEphemeralPropertyInfo), '("localStorageDirectory", WebsiteDataManagerLocalStorageDirectoryPropertyInfo), '("offlineApplicationCacheDirectory", WebsiteDataManagerOfflineApplicationCacheDirectoryPropertyInfo), '("websqlDirectory", WebsiteDataManagerWebsqlDirectoryPropertyInfo)] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
websiteDataManagerBaseCacheDirectory :: AttrLabelProxy "baseCacheDirectory"
websiteDataManagerBaseCacheDirectory = AttrLabelProxy

websiteDataManagerBaseDataDirectory :: AttrLabelProxy "baseDataDirectory"
websiteDataManagerBaseDataDirectory = AttrLabelProxy

websiteDataManagerDiskCacheDirectory :: AttrLabelProxy "diskCacheDirectory"
websiteDataManagerDiskCacheDirectory = AttrLabelProxy

websiteDataManagerIndexeddbDirectory :: AttrLabelProxy "indexeddbDirectory"
websiteDataManagerIndexeddbDirectory = AttrLabelProxy

websiteDataManagerLocalStorageDirectory :: AttrLabelProxy "localStorageDirectory"
websiteDataManagerLocalStorageDirectory = AttrLabelProxy

websiteDataManagerOfflineApplicationCacheDirectory :: AttrLabelProxy "offlineApplicationCacheDirectory"
websiteDataManagerOfflineApplicationCacheDirectory = AttrLabelProxy

websiteDataManagerWebsqlDirectory :: AttrLabelProxy "websqlDirectory"
websiteDataManagerWebsqlDirectory = AttrLabelProxy

#endif

#if ENABLE_OVERLOADING
type instance O.SignalList WebsiteDataManager = WebsiteDataManagerSignalList
type WebsiteDataManagerSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

-- method WebsiteDataManager::new_ephemeral
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_website_data_manager_new_ephemeral" webkit_website_data_manager_new_ephemeral ::
    IO (Ptr WebsiteDataManager)

{- |
Creates an ephemeral 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager'. See 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/is-ephemeral/@ for more details.

/Since: 2.16/
-}
websiteDataManagerNewEphemeral ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m WebsiteDataManager
    {- ^ __Returns:__ a new ephemeral 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager'. -}
websiteDataManagerNewEphemeral  = liftIO $ do
    result <- webkit_website_data_manager_new_ephemeral
    checkUnexpectedReturnNULL "websiteDataManagerNewEphemeral" result
    result' <- (wrapObject WebsiteDataManager) result
    return result'

#if ENABLE_OVERLOADING
#endif

-- method WebsiteDataManager::clear
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "types", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataTypes"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#WebKitWebsiteDataTypes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timespan", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GTimeSpan", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GCancellable or %NULL to ignore", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "callback", argType = TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GAsyncReadyCallback to call when the request is satisfied", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = 5, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data to pass to callback function", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_website_data_manager_clear" webkit_website_data_manager_clear ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    CUInt ->                                -- types : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataTypes"})
    Int64 ->                                -- timespan : TBasicType TInt64
    Ptr Gio.Cancellable.Cancellable ->      -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"})
    FunPtr Gio.Callbacks.C_AsyncReadyCallback -> -- callback : TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"})
    Ptr () ->                               -- user_data : TBasicType TPtr
    IO ()

{- |
Asynchronously clear the website data of the given /@types@/ modified in the past /@timespan@/.
If /@timespan@/ is 0, all website data will be removed.

When the operation is finished, /@callback@/ will be called. You can then call
'GI.WebKit2.Objects.WebsiteDataManager.websiteDataManagerClearFinish' to get the result of the operation.

Due to implementation limitations, this function does not currently delete
any stored cookies if /@timespan@/ is nonzero. This behavior may change in the
future.

/Since: 2.16/
-}
websiteDataManagerClear ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a, Gio.Cancellable.IsCancellable b) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> [WebKit2.Flags.WebsiteDataTypes]
    {- ^ /@types@/: 'GI.WebKit2.Flags.WebsiteDataTypes' -}
    -> Int64
    {- ^ /@timespan@/: a @/GTimeSpan/@ -}
    -> Maybe (b)
    {- ^ /@cancellable@/: a 'GI.Gio.Objects.Cancellable.Cancellable' or 'Nothing' to ignore -}
    -> Maybe (Gio.Callbacks.AsyncReadyCallback)
    {- ^ /@callback@/: a 'GI.Gio.Callbacks.AsyncReadyCallback' to call when the request is satisfied -}
    -> m ()
websiteDataManagerClear manager types timespan cancellable callback = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    let types' = gflagsToWord types
    maybeCancellable <- case cancellable of
        Nothing -> return nullPtr
        Just jCancellable -> do
            jCancellable' <- unsafeManagedPtrCastPtr jCancellable
            return jCancellable'
    maybeCallback <- case callback of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jCallback -> do
            ptrcallback <- callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
            jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
            poke ptrcallback jCallback'
            return jCallback'
    let userData = nullPtr
    webkit_website_data_manager_clear manager' types' timespan maybeCancellable maybeCallback userData
    touchManagedPtr manager
    whenJust cancellable touchManagedPtr
    return ()

#if ENABLE_OVERLOADING
data WebsiteDataManagerClearMethodInfo
instance (signature ~ ([WebKit2.Flags.WebsiteDataTypes] -> Int64 -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsWebsiteDataManager a, Gio.Cancellable.IsCancellable b) => O.MethodInfo WebsiteDataManagerClearMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerClear

#endif

-- method WebsiteDataManager::clear_finish
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "result", argType = TInterface (Name {namespace = "Gio", name = "AsyncResult"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAsyncResult", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "webkit_website_data_manager_clear_finish" webkit_website_data_manager_clear_finish ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    Ptr Gio.AsyncResult.AsyncResult ->      -- result : TInterface (Name {namespace = "Gio", name = "AsyncResult"})
    Ptr (Ptr GError) ->                     -- error
    IO CInt

{- |
Finish an asynchronous operation started with 'GI.WebKit2.Objects.WebsiteDataManager.websiteDataManagerClear'

/Since: 2.16/
-}
websiteDataManagerClearFinish ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a, Gio.AsyncResult.IsAsyncResult b) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> b
    {- ^ /@result@/: a 'GI.Gio.Interfaces.AsyncResult.AsyncResult' -}
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
websiteDataManagerClearFinish manager result_ = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result_' <- unsafeManagedPtrCastPtr result_
    onException (do
        _ <- propagateGError $ webkit_website_data_manager_clear_finish manager' result_'
        touchManagedPtr manager
        touchManagedPtr result_
        return ()
     ) (do
        return ()
     )

#if ENABLE_OVERLOADING
data WebsiteDataManagerClearFinishMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsWebsiteDataManager a, Gio.AsyncResult.IsAsyncResult b) => O.MethodInfo WebsiteDataManagerClearFinishMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerClearFinish

#endif

-- method WebsiteDataManager::fetch
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "types", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataTypes"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#WebKitWebsiteDataTypes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GCancellable or %NULL to ignore", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "callback", argType = TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GAsyncReadyCallback to call when the request is satisfied", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = 4, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data to pass to callback function", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_website_data_manager_fetch" webkit_website_data_manager_fetch ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    CUInt ->                                -- types : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataTypes"})
    Ptr Gio.Cancellable.Cancellable ->      -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"})
    FunPtr Gio.Callbacks.C_AsyncReadyCallback -> -- callback : TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"})
    Ptr () ->                               -- user_data : TBasicType TPtr
    IO ()

{- |
Asynchronously get the list of 'GI.WebKit2.Structs.WebsiteData.WebsiteData' for the given /@types@/.

When the operation is finished, /@callback@/ will be called. You can then call
'GI.WebKit2.Objects.WebsiteDataManager.websiteDataManagerFetchFinish' to get the result of the operation.

/Since: 2.16/
-}
websiteDataManagerFetch ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a, Gio.Cancellable.IsCancellable b) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> [WebKit2.Flags.WebsiteDataTypes]
    {- ^ /@types@/: 'GI.WebKit2.Flags.WebsiteDataTypes' -}
    -> Maybe (b)
    {- ^ /@cancellable@/: a 'GI.Gio.Objects.Cancellable.Cancellable' or 'Nothing' to ignore -}
    -> Maybe (Gio.Callbacks.AsyncReadyCallback)
    {- ^ /@callback@/: a 'GI.Gio.Callbacks.AsyncReadyCallback' to call when the request is satisfied -}
    -> m ()
websiteDataManagerFetch manager types cancellable callback = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    let types' = gflagsToWord types
    maybeCancellable <- case cancellable of
        Nothing -> return nullPtr
        Just jCancellable -> do
            jCancellable' <- unsafeManagedPtrCastPtr jCancellable
            return jCancellable'
    maybeCallback <- case callback of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jCallback -> do
            ptrcallback <- callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
            jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
            poke ptrcallback jCallback'
            return jCallback'
    let userData = nullPtr
    webkit_website_data_manager_fetch manager' types' maybeCancellable maybeCallback userData
    touchManagedPtr manager
    whenJust cancellable touchManagedPtr
    return ()

#if ENABLE_OVERLOADING
data WebsiteDataManagerFetchMethodInfo
instance (signature ~ ([WebKit2.Flags.WebsiteDataTypes] -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsWebsiteDataManager a, Gio.Cancellable.IsCancellable b) => O.MethodInfo WebsiteDataManagerFetchMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerFetch

#endif

-- method WebsiteDataManager::fetch_finish
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "result", argType = TInterface (Name {namespace = "Gio", name = "AsyncResult"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAsyncResult", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "WebKit2", name = "WebsiteData"})))
-- throws : True
-- Skip return : False

foreign import ccall "webkit_website_data_manager_fetch_finish" webkit_website_data_manager_fetch_finish ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    Ptr Gio.AsyncResult.AsyncResult ->      -- result : TInterface (Name {namespace = "Gio", name = "AsyncResult"})
    Ptr (Ptr GError) ->                     -- error
    IO (Ptr (GList (Ptr WebKit2.WebsiteData.WebsiteData)))

{- |
Finish an asynchronous operation started with 'GI.WebKit2.Objects.WebsiteDataManager.websiteDataManagerFetch'.

/Since: 2.16/
-}
websiteDataManagerFetchFinish ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a, Gio.AsyncResult.IsAsyncResult b) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> b
    {- ^ /@result@/: a 'GI.Gio.Interfaces.AsyncResult.AsyncResult' -}
    -> m [WebKit2.WebsiteData.WebsiteData]
    {- ^ __Returns:__ a 'GI.GLib.Structs.List.List' of 'GI.WebKit2.Structs.WebsiteData.WebsiteData'. You must free the 'GI.GLib.Structs.List.List' with
   @/g_list_free()/@ and unref the 'GI.WebKit2.Structs.WebsiteData.WebsiteData'\<!-- -->s with 'GI.WebKit2.Structs.WebsiteData.websiteDataUnref' when you\'re done with them. /(Can throw 'Data.GI.Base.GError.GError')/ -}
websiteDataManagerFetchFinish manager result_ = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result_' <- unsafeManagedPtrCastPtr result_
    onException (do
        result <- propagateGError $ webkit_website_data_manager_fetch_finish manager' result_'
        result' <- unpackGList result
        result'' <- mapM (wrapBoxed WebKit2.WebsiteData.WebsiteData) result'
        g_list_free result
        touchManagedPtr manager
        touchManagedPtr result_
        return result''
     ) (do
        return ()
     )

#if ENABLE_OVERLOADING
data WebsiteDataManagerFetchFinishMethodInfo
instance (signature ~ (b -> m [WebKit2.WebsiteData.WebsiteData]), MonadIO m, IsWebsiteDataManager a, Gio.AsyncResult.IsAsyncResult b) => O.MethodInfo WebsiteDataManagerFetchFinishMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerFetchFinish

#endif

-- method WebsiteDataManager::get_base_cache_directory
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", 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_website_data_manager_get_base_cache_directory" webkit_website_data_manager_get_base_cache_directory ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    IO CString

{- |
Get the 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/base-cache-directory/@ property.

/Since: 2.10/
-}
websiteDataManagerGetBaseCacheDirectory ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the base directory for Website cache, or 'Nothing' if
   'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/base-cache-directory/@ was not provided or /@manager@/ is ephemeral. -}
websiteDataManagerGetBaseCacheDirectory manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result <- webkit_website_data_manager_get_base_cache_directory manager'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr manager
    return maybeResult

#if ENABLE_OVERLOADING
data WebsiteDataManagerGetBaseCacheDirectoryMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsWebsiteDataManager a) => O.MethodInfo WebsiteDataManagerGetBaseCacheDirectoryMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerGetBaseCacheDirectory

#endif

-- method WebsiteDataManager::get_base_data_directory
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", 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_website_data_manager_get_base_data_directory" webkit_website_data_manager_get_base_data_directory ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    IO CString

{- |
Get the 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/base-data-directory/@ property.

/Since: 2.10/
-}
websiteDataManagerGetBaseDataDirectory ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the base directory for Website data, or 'Nothing' if
   'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/base-data-directory/@ was not provided or /@manager@/ is ephemeral. -}
websiteDataManagerGetBaseDataDirectory manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result <- webkit_website_data_manager_get_base_data_directory manager'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr manager
    return maybeResult

#if ENABLE_OVERLOADING
data WebsiteDataManagerGetBaseDataDirectoryMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsWebsiteDataManager a) => O.MethodInfo WebsiteDataManagerGetBaseDataDirectoryMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerGetBaseDataDirectory

#endif

-- method WebsiteDataManager::get_cookie_manager
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2", name = "CookieManager"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_website_data_manager_get_cookie_manager" webkit_website_data_manager_get_cookie_manager ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    IO (Ptr WebKit2.CookieManager.CookieManager)

{- |
Get the 'GI.WebKit2.Objects.CookieManager.CookieManager' of /@manager@/.

/Since: 2.16/
-}
websiteDataManagerGetCookieManager ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> m WebKit2.CookieManager.CookieManager
    {- ^ __Returns:__ a 'GI.WebKit2.Objects.CookieManager.CookieManager' -}
websiteDataManagerGetCookieManager manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result <- webkit_website_data_manager_get_cookie_manager manager'
    checkUnexpectedReturnNULL "websiteDataManagerGetCookieManager" result
    result' <- (newObject WebKit2.CookieManager.CookieManager) result
    touchManagedPtr manager
    return result'

#if ENABLE_OVERLOADING
data WebsiteDataManagerGetCookieManagerMethodInfo
instance (signature ~ (m WebKit2.CookieManager.CookieManager), MonadIO m, IsWebsiteDataManager a) => O.MethodInfo WebsiteDataManagerGetCookieManagerMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerGetCookieManager

#endif

-- method WebsiteDataManager::get_disk_cache_directory
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", 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_website_data_manager_get_disk_cache_directory" webkit_website_data_manager_get_disk_cache_directory ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    IO CString

{- |
Get the 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/disk-cache-directory/@ property.

/Since: 2.10/
-}
websiteDataManagerGetDiskCacheDirectory ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the directory where HTTP disk cache is stored or 'Nothing' if /@manager@/ is ephemeral. -}
websiteDataManagerGetDiskCacheDirectory manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result <- webkit_website_data_manager_get_disk_cache_directory manager'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr manager
    return maybeResult

#if ENABLE_OVERLOADING
data WebsiteDataManagerGetDiskCacheDirectoryMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsWebsiteDataManager a) => O.MethodInfo WebsiteDataManagerGetDiskCacheDirectoryMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerGetDiskCacheDirectory

#endif

-- method WebsiteDataManager::get_indexeddb_directory
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", 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_website_data_manager_get_indexeddb_directory" webkit_website_data_manager_get_indexeddb_directory ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    IO CString

{- |
Get the 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/indexeddb-directory/@ property.

/Since: 2.10/
-}
websiteDataManagerGetIndexeddbDirectory ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the directory where IndexedDB databases are stored or 'Nothing' if /@manager@/ is ephemeral. -}
websiteDataManagerGetIndexeddbDirectory manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result <- webkit_website_data_manager_get_indexeddb_directory manager'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr manager
    return maybeResult

#if ENABLE_OVERLOADING
data WebsiteDataManagerGetIndexeddbDirectoryMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsWebsiteDataManager a) => O.MethodInfo WebsiteDataManagerGetIndexeddbDirectoryMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerGetIndexeddbDirectory

#endif

-- method WebsiteDataManager::get_local_storage_directory
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", 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_website_data_manager_get_local_storage_directory" webkit_website_data_manager_get_local_storage_directory ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    IO CString

{- |
Get the 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/local-storage-directory/@ property.

/Since: 2.10/
-}
websiteDataManagerGetLocalStorageDirectory ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the directory where local storage data is stored or 'Nothing' if /@manager@/ is ephemeral. -}
websiteDataManagerGetLocalStorageDirectory manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result <- webkit_website_data_manager_get_local_storage_directory manager'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr manager
    return maybeResult

#if ENABLE_OVERLOADING
data WebsiteDataManagerGetLocalStorageDirectoryMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsWebsiteDataManager a) => O.MethodInfo WebsiteDataManagerGetLocalStorageDirectoryMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerGetLocalStorageDirectory

#endif

-- method WebsiteDataManager::get_offline_application_cache_directory
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", 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_website_data_manager_get_offline_application_cache_directory" webkit_website_data_manager_get_offline_application_cache_directory ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    IO CString

{- |
Get the 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/offline-application-cache-directory/@ property.

/Since: 2.10/
-}
websiteDataManagerGetOfflineApplicationCacheDirectory ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the directory where offline web application cache is stored or 'Nothing' if /@manager@/ is ephemeral. -}
websiteDataManagerGetOfflineApplicationCacheDirectory manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result <- webkit_website_data_manager_get_offline_application_cache_directory manager'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr manager
    return maybeResult

#if ENABLE_OVERLOADING
data WebsiteDataManagerGetOfflineApplicationCacheDirectoryMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsWebsiteDataManager a) => O.MethodInfo WebsiteDataManagerGetOfflineApplicationCacheDirectoryMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerGetOfflineApplicationCacheDirectory

#endif

-- method WebsiteDataManager::get_websql_directory
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", 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_website_data_manager_get_websql_directory" webkit_website_data_manager_get_websql_directory ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    IO CString

{- |
Get the 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/websql-directory/@ property.

/Since: 2.10/
-}
websiteDataManagerGetWebsqlDirectory ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> m (Maybe T.Text)
    {- ^ __Returns:__ the directory where WebSQL databases are stored or 'Nothing' if /@manager@/ is ephemeral. -}
websiteDataManagerGetWebsqlDirectory manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result <- webkit_website_data_manager_get_websql_directory manager'
    maybeResult <- convertIfNonNull result $ \result' -> do
        result'' <- cstringToText result'
        return result''
    touchManagedPtr manager
    return maybeResult

#if ENABLE_OVERLOADING
data WebsiteDataManagerGetWebsqlDirectoryMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsWebsiteDataManager a) => O.MethodInfo WebsiteDataManagerGetWebsqlDirectoryMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerGetWebsqlDirectory

#endif

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

foreign import ccall "webkit_website_data_manager_is_ephemeral" webkit_website_data_manager_is_ephemeral ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    IO CInt

{- |
Get whether a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' is ephemeral. See 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager':@/is-ephemeral/@ for more details.

/Since: 2.16/
-}
websiteDataManagerIsEphemeral ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if /@manager@/ is epheral or 'False' otherwise. -}
websiteDataManagerIsEphemeral manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result <- webkit_website_data_manager_is_ephemeral manager'
    let result' = (/= 0) result
    touchManagedPtr manager
    return result'

#if ENABLE_OVERLOADING
data WebsiteDataManagerIsEphemeralMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsWebsiteDataManager a) => O.MethodInfo WebsiteDataManagerIsEphemeralMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerIsEphemeral

#endif

-- method WebsiteDataManager::remove
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "types", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataTypes"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#WebKitWebsiteDataTypes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "website_data", argType = TGList (TInterface (Name {namespace = "WebKit2", name = "WebsiteData"})), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GList of #WebKitWebsiteData", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancellable", argType = TInterface (Name {namespace = "Gio", name = "Cancellable"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GCancellable or %NULL to ignore", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "callback", argType = TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GAsyncReadyCallback to call when the request is satisfied", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = 5, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the data to pass to callback function", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_website_data_manager_remove" webkit_website_data_manager_remove ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    CUInt ->                                -- types : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataTypes"})
    Ptr (GList (Ptr WebKit2.WebsiteData.WebsiteData)) -> -- website_data : TGList (TInterface (Name {namespace = "WebKit2", name = "WebsiteData"}))
    Ptr Gio.Cancellable.Cancellable ->      -- cancellable : TInterface (Name {namespace = "Gio", name = "Cancellable"})
    FunPtr Gio.Callbacks.C_AsyncReadyCallback -> -- callback : TInterface (Name {namespace = "Gio", name = "AsyncReadyCallback"})
    Ptr () ->                               -- user_data : TBasicType TPtr
    IO ()

{- |
Asynchronously removes the website data of the for the given /@types@/ for websites in the given /@websiteData@/ list.
Use 'GI.WebKit2.Objects.WebsiteDataManager.websiteDataManagerClear' if you want to remove the website data for all sites.

When the operation is finished, /@callback@/ will be called. You can then call
'GI.WebKit2.Objects.WebsiteDataManager.websiteDataManagerRemoveFinish' to get the result of the operation.

/Since: 2.16/
-}
websiteDataManagerRemove ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a, Gio.Cancellable.IsCancellable b) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> [WebKit2.Flags.WebsiteDataTypes]
    {- ^ /@types@/: 'GI.WebKit2.Flags.WebsiteDataTypes' -}
    -> [WebKit2.WebsiteData.WebsiteData]
    {- ^ /@websiteData@/: a 'GI.GLib.Structs.List.List' of 'GI.WebKit2.Structs.WebsiteData.WebsiteData' -}
    -> Maybe (b)
    {- ^ /@cancellable@/: a 'GI.Gio.Objects.Cancellable.Cancellable' or 'Nothing' to ignore -}
    -> Maybe (Gio.Callbacks.AsyncReadyCallback)
    {- ^ /@callback@/: a 'GI.Gio.Callbacks.AsyncReadyCallback' to call when the request is satisfied -}
    -> m ()
websiteDataManagerRemove manager types websiteData cancellable callback = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    let types' = gflagsToWord types
    websiteData' <- mapM unsafeManagedPtrGetPtr websiteData
    websiteData'' <- packGList websiteData'
    maybeCancellable <- case cancellable of
        Nothing -> return nullPtr
        Just jCancellable -> do
            jCancellable' <- unsafeManagedPtrCastPtr jCancellable
            return jCancellable'
    maybeCallback <- case callback of
        Nothing -> return (castPtrToFunPtr nullPtr)
        Just jCallback -> do
            ptrcallback <- callocMem :: IO (Ptr (FunPtr Gio.Callbacks.C_AsyncReadyCallback))
            jCallback' <- Gio.Callbacks.mk_AsyncReadyCallback (Gio.Callbacks.wrap_AsyncReadyCallback (Just ptrcallback) (Gio.Callbacks.drop_closures_AsyncReadyCallback jCallback))
            poke ptrcallback jCallback'
            return jCallback'
    let userData = nullPtr
    webkit_website_data_manager_remove manager' types' websiteData'' maybeCancellable maybeCallback userData
    touchManagedPtr manager
    mapM_ touchManagedPtr websiteData
    whenJust cancellable touchManagedPtr
    g_list_free websiteData''
    return ()

#if ENABLE_OVERLOADING
data WebsiteDataManagerRemoveMethodInfo
instance (signature ~ ([WebKit2.Flags.WebsiteDataTypes] -> [WebKit2.WebsiteData.WebsiteData] -> Maybe (b) -> Maybe (Gio.Callbacks.AsyncReadyCallback) -> m ()), MonadIO m, IsWebsiteDataManager a, Gio.Cancellable.IsCancellable b) => O.MethodInfo WebsiteDataManagerRemoveMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerRemove

#endif

-- method WebsiteDataManager::remove_finish
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebsiteDataManager", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "result", argType = TInterface (Name {namespace = "Gio", name = "AsyncResult"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GAsyncResult", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : True
-- Skip return : False

foreign import ccall "webkit_website_data_manager_remove_finish" webkit_website_data_manager_remove_finish ::
    Ptr WebsiteDataManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "WebsiteDataManager"})
    Ptr Gio.AsyncResult.AsyncResult ->      -- result : TInterface (Name {namespace = "Gio", name = "AsyncResult"})
    Ptr (Ptr GError) ->                     -- error
    IO CInt

{- |
Finish an asynchronous operation started with 'GI.WebKit2.Objects.WebsiteDataManager.websiteDataManagerRemove'.

/Since: 2.16/
-}
websiteDataManagerRemoveFinish ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebsiteDataManager a, Gio.AsyncResult.IsAsyncResult b) =>
    a
    {- ^ /@manager@/: a 'GI.WebKit2.Objects.WebsiteDataManager.WebsiteDataManager' -}
    -> b
    {- ^ /@result@/: a 'GI.Gio.Interfaces.AsyncResult.AsyncResult' -}
    -> m ()
    {- ^ /(Can throw 'Data.GI.Base.GError.GError')/ -}
websiteDataManagerRemoveFinish manager result_ = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    result_' <- unsafeManagedPtrCastPtr result_
    onException (do
        _ <- propagateGError $ webkit_website_data_manager_remove_finish manager' result_'
        touchManagedPtr manager
        touchManagedPtr result_
        return ()
     ) (do
        return ()
     )

#if ENABLE_OVERLOADING
data WebsiteDataManagerRemoveFinishMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsWebsiteDataManager a, Gio.AsyncResult.IsAsyncResult b) => O.MethodInfo WebsiteDataManagerRemoveFinishMethodInfo a signature where
    overloadedMethod _ = websiteDataManagerRemoveFinish

#endif