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

Data source encapsulates the content of a 'GI.WebKit.Objects.WebFrame.WebFrame'. A
'GI.WebKit.Objects.WebFrame.WebFrame' has a main resource and subresources and the data source
provides access to these resources. When a request gets loaded initially,
it is set to a provisional state. The application can request for the
request that initiated the load by asking for the provisional data source
and invoking the webkit_web_data_source_get_initial_request method of
'GI.WebKit.Objects.WebDataSource.WebDataSource'. This data source may not have enough data and some
methods may return empty values. To get a \"full\" data source with the data
and resources loaded, you need to get the non-provisional data source
through 'GI.WebKit.Objects.WebFrame.WebFrame'\'s webkit_web_frame_get_data_source method. This
data source will have the data after everything was loaded. Make sure that
the data source was finished loading before using any of its methods. You
can do this via webkit_web_data_source_is_loading.
-}

module GI.WebKit.Objects.WebDataSource
    ( 

-- * Exported types
    WebDataSource(..)                       ,
    IsWebDataSource                         ,
    toWebDataSource                         ,
    noWebDataSource                         ,


 -- * Methods
-- ** getData #method:getData#
    WebDataSourceGetDataMethodInfo          ,
    webDataSourceGetData                    ,


-- ** getEncoding #method:getEncoding#
    WebDataSourceGetEncodingMethodInfo      ,
    webDataSourceGetEncoding                ,


-- ** getInitialRequest #method:getInitialRequest#
    WebDataSourceGetInitialRequestMethodInfo,
    webDataSourceGetInitialRequest          ,


-- ** getMainResource #method:getMainResource#
    WebDataSourceGetMainResourceMethodInfo  ,
    webDataSourceGetMainResource            ,


-- ** getRequest #method:getRequest#
    WebDataSourceGetRequestMethodInfo       ,
    webDataSourceGetRequest                 ,


-- ** getSubresources #method:getSubresources#
    WebDataSourceGetSubresourcesMethodInfo  ,
    webDataSourceGetSubresources            ,


-- ** getUnreachableUri #method:getUnreachableUri#
    WebDataSourceGetUnreachableUriMethodInfo,
    webDataSourceGetUnreachableUri          ,


-- ** getWebFrame #method:getWebFrame#
    WebDataSourceGetWebFrameMethodInfo      ,
    webDataSourceGetWebFrame                ,


-- ** isLoading #method:isLoading#
    WebDataSourceIsLoadingMethodInfo        ,
    webDataSourceIsLoading                  ,


-- ** new #method:new#
    webDataSourceNew                        ,


-- ** newWithRequest #method:newWithRequest#
    webDataSourceNewWithRequest             ,




    ) 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.GLib.Structs.String as GLib.String
import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.WebKit.Objects.NetworkRequest as WebKit.NetworkRequest
import {-# SOURCE #-} qualified GI.WebKit.Objects.WebFrame as WebKit.WebFrame
import {-# SOURCE #-} qualified GI.WebKit.Objects.WebResource as WebKit.WebResource

newtype WebDataSource = WebDataSource (ManagedPtr WebDataSource)
foreign import ccall "webkit_web_data_source_get_type"
    c_webkit_web_data_source_get_type :: IO GType

instance GObject WebDataSource where
    gobjectType _ = c_webkit_web_data_source_get_type
    

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

toWebDataSource :: IsWebDataSource o => o -> IO WebDataSource
toWebDataSource = unsafeCastTo WebDataSource

noWebDataSource :: Maybe WebDataSource
noWebDataSource = Nothing

type family ResolveWebDataSourceMethod (t :: Symbol) (o :: *) :: * where
    ResolveWebDataSourceMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveWebDataSourceMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveWebDataSourceMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveWebDataSourceMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveWebDataSourceMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveWebDataSourceMethod "isLoading" o = WebDataSourceIsLoadingMethodInfo
    ResolveWebDataSourceMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveWebDataSourceMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveWebDataSourceMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveWebDataSourceMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveWebDataSourceMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveWebDataSourceMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveWebDataSourceMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveWebDataSourceMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveWebDataSourceMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveWebDataSourceMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveWebDataSourceMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveWebDataSourceMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveWebDataSourceMethod "getData" o = WebDataSourceGetDataMethodInfo
    ResolveWebDataSourceMethod "getEncoding" o = WebDataSourceGetEncodingMethodInfo
    ResolveWebDataSourceMethod "getInitialRequest" o = WebDataSourceGetInitialRequestMethodInfo
    ResolveWebDataSourceMethod "getMainResource" o = WebDataSourceGetMainResourceMethodInfo
    ResolveWebDataSourceMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveWebDataSourceMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveWebDataSourceMethod "getRequest" o = WebDataSourceGetRequestMethodInfo
    ResolveWebDataSourceMethod "getSubresources" o = WebDataSourceGetSubresourcesMethodInfo
    ResolveWebDataSourceMethod "getUnreachableUri" o = WebDataSourceGetUnreachableUriMethodInfo
    ResolveWebDataSourceMethod "getWebFrame" o = WebDataSourceGetWebFrameMethodInfo
    ResolveWebDataSourceMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveWebDataSourceMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveWebDataSourceMethod l o = O.MethodResolutionFailed l o

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

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

instance O.HasAttributeList WebDataSource
type instance O.AttributeList WebDataSource = WebDataSourceAttributeList
type WebDataSourceAttributeList = ('[ ] :: [(Symbol, *)])

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

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

foreign import ccall "webkit_web_data_source_new" webkit_web_data_source_new :: 
    IO (Ptr WebDataSource)

{- |
Creates a new 'GI.WebKit.Objects.WebDataSource.WebDataSource' instance. The URL of the
'GI.WebKit.Objects.WebDataSource.WebDataSource' will be set to \"about:blank\".

@since 1.1.14
-}
webDataSourceNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m WebDataSource
    {- ^ __Returns:__ a new 'GI.WebKit.Objects.WebDataSource.WebDataSource'. -}
webDataSourceNew  = liftIO $ do
    result <- webkit_web_data_source_new
    checkUnexpectedReturnNULL "webDataSourceNew" result
    result' <- (wrapObject WebDataSource) result
    return result'

-- method WebDataSource::new_with_request
-- method type : Constructor
-- Args : [Arg {argCName = "request", argType = TInterface (Name {namespace = "WebKit", name = "NetworkRequest"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #WebKitNetworkRequest to use to create this data source", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit", name = "WebDataSource"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_data_source_new_with_request" webkit_web_data_source_new_with_request :: 
    Ptr WebKit.NetworkRequest.NetworkRequest -> -- request : TInterface (Name {namespace = "WebKit", name = "NetworkRequest"})
    IO (Ptr WebDataSource)

{- |
Creates a new 'GI.WebKit.Objects.WebDataSource.WebDataSource' from a 'GI.WebKit.Objects.NetworkRequest.NetworkRequest'. Normally,
'GI.WebKit.Objects.WebFrame.WebFrame' objects create their data sources so you will almost never
want to invoke this method directly.

@since 1.1.14
-}
webDataSourceNewWithRequest ::
    (B.CallStack.HasCallStack, MonadIO m, WebKit.NetworkRequest.IsNetworkRequest a) =>
    a
    {- ^ /@request@/: the 'GI.WebKit.Objects.NetworkRequest.NetworkRequest' to use to create this data source -}
    -> m WebDataSource
    {- ^ __Returns:__ a new 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
webDataSourceNewWithRequest request = liftIO $ do
    request' <- unsafeManagedPtrCastPtr request
    result <- webkit_web_data_source_new_with_request request'
    checkUnexpectedReturnNULL "webDataSourceNewWithRequest" result
    result' <- (wrapObject WebDataSource) result
    touchManagedPtr request
    return result'

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

foreign import ccall "webkit_web_data_source_get_data" webkit_web_data_source_get_data :: 
    Ptr WebDataSource ->                    -- data_source : TInterface (Name {namespace = "WebKit", name = "WebDataSource"})
    IO (Ptr GLib.String.String)

{- |
Returns the raw data that represents the the frame\'s content.The data will
be incomplete until the data has finished loading. Returns 'Nothing' if the web
frame hasn\'t loaded any data. Use webkit_web_data_source_is_loading to test
if data source is in the process of loading.

@since 1.1.14
-}
webDataSourceGetData ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebDataSource a) =>
    a
    {- ^ /@dataSource@/: a 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
    -> m GLib.String.String
    {- ^ __Returns:__ a 'GI.GLib.Structs.String.String' which contains the raw
data that represents the /@dataSource@/ or 'Nothing' if the /@dataSource@/
hasn\'t loaded any data. -}
webDataSourceGetData dataSource = liftIO $ do
    dataSource' <- unsafeManagedPtrCastPtr dataSource
    result <- webkit_web_data_source_get_data dataSource'
    checkUnexpectedReturnNULL "webDataSourceGetData" result
    result' <- (newBoxed GLib.String.String) result
    touchManagedPtr dataSource
    return result'

data WebDataSourceGetDataMethodInfo
instance (signature ~ (m GLib.String.String), MonadIO m, IsWebDataSource a) => O.MethodInfo WebDataSourceGetDataMethodInfo a signature where
    overloadedMethod _ = webDataSourceGetData

-- method WebDataSource::get_encoding
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "data_source", argType = TInterface (Name {namespace = "WebKit", name = "WebDataSource"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebDataSource", 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_web_data_source_get_encoding" webkit_web_data_source_get_encoding :: 
    Ptr WebDataSource ->                    -- data_source : TInterface (Name {namespace = "WebKit", name = "WebDataSource"})
    IO CString

{- |
Returns the text encoding name as set in the 'GI.WebKit.Objects.WebView.WebView', or if not, the
text encoding of the response.

@since 1.1.14
-}
webDataSourceGetEncoding ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebDataSource a) =>
    a
    {- ^ /@dataSource@/: a 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
    -> m T.Text
    {- ^ __Returns:__ the encoding name of the 'GI.WebKit.Objects.WebView.WebView' or of the response. -}
webDataSourceGetEncoding dataSource = liftIO $ do
    dataSource' <- unsafeManagedPtrCastPtr dataSource
    result <- webkit_web_data_source_get_encoding dataSource'
    checkUnexpectedReturnNULL "webDataSourceGetEncoding" result
    result' <- cstringToText result
    touchManagedPtr dataSource
    return result'

data WebDataSourceGetEncodingMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsWebDataSource a) => O.MethodInfo WebDataSourceGetEncodingMethodInfo a signature where
    overloadedMethod _ = webDataSourceGetEncoding

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

foreign import ccall "webkit_web_data_source_get_initial_request" webkit_web_data_source_get_initial_request :: 
    Ptr WebDataSource ->                    -- data_source : TInterface (Name {namespace = "WebKit", name = "WebDataSource"})
    IO (Ptr WebKit.NetworkRequest.NetworkRequest)

{- |
Returns a reference to the original request that was used to load the web
content. The 'GI.WebKit.Objects.NetworkRequest.NetworkRequest' returned by this method is the request
prior to the \"committed\" load state. See webkit_web_data_source_get_request
for getting the \"committed\" request.

@since 1.1.14
-}
webDataSourceGetInitialRequest ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebDataSource a) =>
    a
    {- ^ /@dataSource@/: a 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
    -> m WebKit.NetworkRequest.NetworkRequest
    {- ^ __Returns:__ the original 'GI.WebKit.Objects.NetworkRequest.NetworkRequest' -}
webDataSourceGetInitialRequest dataSource = liftIO $ do
    dataSource' <- unsafeManagedPtrCastPtr dataSource
    result <- webkit_web_data_source_get_initial_request dataSource'
    checkUnexpectedReturnNULL "webDataSourceGetInitialRequest" result
    result' <- (newObject WebKit.NetworkRequest.NetworkRequest) result
    touchManagedPtr dataSource
    return result'

data WebDataSourceGetInitialRequestMethodInfo
instance (signature ~ (m WebKit.NetworkRequest.NetworkRequest), MonadIO m, IsWebDataSource a) => O.MethodInfo WebDataSourceGetInitialRequestMethodInfo a signature where
    overloadedMethod _ = webDataSourceGetInitialRequest

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

foreign import ccall "webkit_web_data_source_get_main_resource" webkit_web_data_source_get_main_resource :: 
    Ptr WebDataSource ->                    -- data_source : TInterface (Name {namespace = "WebKit", name = "WebDataSource"})
    IO (Ptr WebKit.WebResource.WebResource)

{- |
Returns the main resource of the /@dataSource@/

@since 1.1.14
-}
webDataSourceGetMainResource ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebDataSource a) =>
    a
    {- ^ /@dataSource@/: a 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
    -> m WebKit.WebResource.WebResource
    {- ^ __Returns:__ a new 'GI.WebKit.Objects.WebResource.WebResource'
representing the main resource of the /@dataSource@/. -}
webDataSourceGetMainResource dataSource = liftIO $ do
    dataSource' <- unsafeManagedPtrCastPtr dataSource
    result <- webkit_web_data_source_get_main_resource dataSource'
    checkUnexpectedReturnNULL "webDataSourceGetMainResource" result
    result' <- (newObject WebKit.WebResource.WebResource) result
    touchManagedPtr dataSource
    return result'

data WebDataSourceGetMainResourceMethodInfo
instance (signature ~ (m WebKit.WebResource.WebResource), MonadIO m, IsWebDataSource a) => O.MethodInfo WebDataSourceGetMainResourceMethodInfo a signature where
    overloadedMethod _ = webDataSourceGetMainResource

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

foreign import ccall "webkit_web_data_source_get_request" webkit_web_data_source_get_request :: 
    Ptr WebDataSource ->                    -- data_source : TInterface (Name {namespace = "WebKit", name = "WebDataSource"})
    IO (Ptr WebKit.NetworkRequest.NetworkRequest)

{- |
Returns a 'GI.WebKit.Objects.NetworkRequest.NetworkRequest' that was used to create this
'GI.WebKit.Objects.WebDataSource.WebDataSource'. The 'GI.WebKit.Objects.NetworkRequest.NetworkRequest' returned by this method is
the request that was \"committed\", and hence, different from the request you
get from the webkit_web_data_source_get_initial_request method.

@since 1.1.14
-}
webDataSourceGetRequest ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebDataSource a) =>
    a
    {- ^ /@dataSource@/: a 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
    -> m WebKit.NetworkRequest.NetworkRequest
    {- ^ __Returns:__ the 'GI.WebKit.Objects.NetworkRequest.NetworkRequest' that
created the /@dataSource@/ or 'Nothing' if the /@dataSource@/ is not
attached to the frame or the frame hasn\'t been loaded. -}
webDataSourceGetRequest dataSource = liftIO $ do
    dataSource' <- unsafeManagedPtrCastPtr dataSource
    result <- webkit_web_data_source_get_request dataSource'
    checkUnexpectedReturnNULL "webDataSourceGetRequest" result
    result' <- (newObject WebKit.NetworkRequest.NetworkRequest) result
    touchManagedPtr dataSource
    return result'

data WebDataSourceGetRequestMethodInfo
instance (signature ~ (m WebKit.NetworkRequest.NetworkRequest), MonadIO m, IsWebDataSource a) => O.MethodInfo WebDataSourceGetRequestMethodInfo a signature where
    overloadedMethod _ = webDataSourceGetRequest

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

foreign import ccall "webkit_web_data_source_get_subresources" webkit_web_data_source_get_subresources :: 
    Ptr WebDataSource ->                    -- data_source : TInterface (Name {namespace = "WebKit", name = "WebDataSource"})
    IO (Ptr (GList (Ptr WebKit.WebResource.WebResource)))

{- |
Gives you a 'GI.GLib.Structs.List.List' of 'GI.WebKit.Objects.WebResource.WebResource' objects that compose the
'GI.WebKit.Objects.WebView.WebView' to which this 'GI.WebKit.Objects.WebDataSource.WebDataSource' is attached.

@since 1.1.15
-}
webDataSourceGetSubresources ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebDataSource a) =>
    a
    {- ^ /@dataSource@/: a 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
    -> m [WebKit.WebResource.WebResource]
    {- ^ __Returns:__ 
a 'GI.GLib.Structs.List.List' of 'GI.WebKit.Objects.WebResource.WebResource' objects; the objects are owned by
WebKit, but the GList must be freed. -}
webDataSourceGetSubresources dataSource = liftIO $ do
    dataSource' <- unsafeManagedPtrCastPtr dataSource
    result <- webkit_web_data_source_get_subresources dataSource'
    result' <- unpackGList result
    result'' <- mapM (newObject WebKit.WebResource.WebResource) result'
    g_list_free result
    touchManagedPtr dataSource
    return result''

data WebDataSourceGetSubresourcesMethodInfo
instance (signature ~ (m [WebKit.WebResource.WebResource]), MonadIO m, IsWebDataSource a) => O.MethodInfo WebDataSourceGetSubresourcesMethodInfo a signature where
    overloadedMethod _ = webDataSourceGetSubresources

-- method WebDataSource::get_unreachable_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "data_source", argType = TInterface (Name {namespace = "WebKit", name = "WebDataSource"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebDataSource", 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_web_data_source_get_unreachable_uri" webkit_web_data_source_get_unreachable_uri :: 
    Ptr WebDataSource ->                    -- data_source : TInterface (Name {namespace = "WebKit", name = "WebDataSource"})
    IO CString

{- |
Return the unreachable URI of /@dataSource@/. The /@dataSource@/ will have an
unreachable URL if it was created using 'GI.WebKit.Objects.WebFrame.WebFrame'\'s
webkit_web_frame_load_alternate_html_string method.

@since 1.1.14
-}
webDataSourceGetUnreachableUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebDataSource a) =>
    a
    {- ^ /@dataSource@/: a 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
    -> m T.Text
    {- ^ __Returns:__ the unreachable URL of /@dataSource@/ or 'Nothing' if there is no unreachable URL. -}
webDataSourceGetUnreachableUri dataSource = liftIO $ do
    dataSource' <- unsafeManagedPtrCastPtr dataSource
    result <- webkit_web_data_source_get_unreachable_uri dataSource'
    checkUnexpectedReturnNULL "webDataSourceGetUnreachableUri" result
    result' <- cstringToText result
    touchManagedPtr dataSource
    return result'

data WebDataSourceGetUnreachableUriMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsWebDataSource a) => O.MethodInfo WebDataSourceGetUnreachableUriMethodInfo a signature where
    overloadedMethod _ = webDataSourceGetUnreachableUri

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

foreign import ccall "webkit_web_data_source_get_web_frame" webkit_web_data_source_get_web_frame :: 
    Ptr WebDataSource ->                    -- data_source : TInterface (Name {namespace = "WebKit", name = "WebDataSource"})
    IO (Ptr WebKit.WebFrame.WebFrame)

{- |
Returns the 'GI.WebKit.Objects.WebFrame.WebFrame' that represents this data source

@since 1.1.14
-}
webDataSourceGetWebFrame ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebDataSource a) =>
    a
    {- ^ /@dataSource@/: a 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
    -> m WebKit.WebFrame.WebFrame
    {- ^ __Returns:__ the 'GI.WebKit.Objects.WebFrame.WebFrame' that represents
the /@dataSource@/. The 'GI.WebKit.Objects.WebFrame.WebFrame' is owned by WebKit and should
not be freed or destroyed.  This will return 'Nothing' if the
/@dataSource@/ is not attached to a frame. -}
webDataSourceGetWebFrame dataSource = liftIO $ do
    dataSource' <- unsafeManagedPtrCastPtr dataSource
    result <- webkit_web_data_source_get_web_frame dataSource'
    checkUnexpectedReturnNULL "webDataSourceGetWebFrame" result
    result' <- (newObject WebKit.WebFrame.WebFrame) result
    touchManagedPtr dataSource
    return result'

data WebDataSourceGetWebFrameMethodInfo
instance (signature ~ (m WebKit.WebFrame.WebFrame), MonadIO m, IsWebDataSource a) => O.MethodInfo WebDataSourceGetWebFrameMethodInfo a signature where
    overloadedMethod _ = webDataSourceGetWebFrame

-- method WebDataSource::is_loading
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "data_source", argType = TInterface (Name {namespace = "WebKit", name = "WebDataSource"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebDataSource", 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_web_data_source_is_loading" webkit_web_data_source_is_loading :: 
    Ptr WebDataSource ->                    -- data_source : TInterface (Name {namespace = "WebKit", name = "WebDataSource"})
    IO CInt

{- |
Determines whether the data source is in the process of loading its content.

@since 1.1.14
-}
webDataSourceIsLoading ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebDataSource a) =>
    a
    {- ^ /@dataSource@/: a 'GI.WebKit.Objects.WebDataSource.WebDataSource' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the /@dataSource@/ is still loading, 'False' otherwise -}
webDataSourceIsLoading dataSource = liftIO $ do
    dataSource' <- unsafeManagedPtrCastPtr dataSource
    result <- webkit_web_data_source_is_loading dataSource'
    let result' = (/= 0) result
    touchManagedPtr dataSource
    return result'

data WebDataSourceIsLoadingMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsWebDataSource a) => O.MethodInfo WebDataSourceIsLoadingMethodInfo a signature where
    overloadedMethod _ = webDataSourceIsLoading