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

module GI.WebKit2WebExtension.Objects.WebPage
    ( 

-- * Exported types
    WebPage(..)                             ,
    IsWebPage                               ,
    toWebPage                               ,
    noWebPage                               ,


 -- * Methods
-- ** getDomDocument #method:getDomDocument#
    WebPageGetDomDocumentMethodInfo         ,
    webPageGetDomDocument                   ,


-- ** getEditor #method:getEditor#
    WebPageGetEditorMethodInfo              ,
    webPageGetEditor                        ,


-- ** getId #method:getId#
    WebPageGetIdMethodInfo                  ,
    webPageGetId                            ,


-- ** getMainFrame #method:getMainFrame#
    WebPageGetMainFrameMethodInfo           ,
    webPageGetMainFrame                     ,


-- ** getUri #method:getUri#
    WebPageGetUriMethodInfo                 ,
    webPageGetUri                           ,




 -- * Properties
-- ** uri #attr:uri#
    WebPageUriPropertyInfo                  ,
    getWebPageUri                           ,
    webPageUri                              ,




 -- * Signals
-- ** consoleMessageSent #signal:consoleMessageSent#
    C_WebPageConsoleMessageSentCallback     ,
    WebPageConsoleMessageSentCallback       ,
    WebPageConsoleMessageSentSignalInfo     ,
    afterWebPageConsoleMessageSent          ,
    genClosure_WebPageConsoleMessageSent    ,
    mk_WebPageConsoleMessageSentCallback    ,
    noWebPageConsoleMessageSentCallback     ,
    onWebPageConsoleMessageSent             ,
    wrap_WebPageConsoleMessageSentCallback  ,


-- ** contextMenu #signal:contextMenu#
    C_WebPageContextMenuCallback            ,
    WebPageContextMenuCallback              ,
    WebPageContextMenuSignalInfo            ,
    afterWebPageContextMenu                 ,
    genClosure_WebPageContextMenu           ,
    mk_WebPageContextMenuCallback           ,
    noWebPageContextMenuCallback            ,
    onWebPageContextMenu                    ,
    wrap_WebPageContextMenuCallback         ,


-- ** documentLoaded #signal:documentLoaded#
    C_WebPageDocumentLoadedCallback         ,
    WebPageDocumentLoadedCallback           ,
    WebPageDocumentLoadedSignalInfo         ,
    afterWebPageDocumentLoaded              ,
    genClosure_WebPageDocumentLoaded        ,
    mk_WebPageDocumentLoadedCallback        ,
    noWebPageDocumentLoadedCallback         ,
    onWebPageDocumentLoaded                 ,
    wrap_WebPageDocumentLoadedCallback      ,


-- ** formControlsAssociated #signal:formControlsAssociated#
    C_WebPageFormControlsAssociatedCallback ,
    WebPageFormControlsAssociatedCallback   ,
    WebPageFormControlsAssociatedSignalInfo ,
    afterWebPageFormControlsAssociated      ,
    genClosure_WebPageFormControlsAssociated,
    mk_WebPageFormControlsAssociatedCallback,
    noWebPageFormControlsAssociatedCallback ,
    onWebPageFormControlsAssociated         ,
    wrap_WebPageFormControlsAssociatedCallback,


-- ** sendRequest #signal:sendRequest#
    C_WebPageSendRequestCallback            ,
    WebPageSendRequestCallback              ,
    WebPageSendRequestSignalInfo            ,
    afterWebPageSendRequest                 ,
    genClosure_WebPageSendRequest           ,
    mk_WebPageSendRequestCallback           ,
    noWebPageSendRequestCallback            ,
    onWebPageSendRequest                    ,
    wrap_WebPageSendRequestCallback         ,




    ) where

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

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

import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.ContextMenu as WebKit2WebExtension.ContextMenu
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMDocument as WebKit2WebExtension.DOMDocument
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMElement as WebKit2WebExtension.DOMElement
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.Frame as WebKit2WebExtension.Frame
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.URIRequest as WebKit2WebExtension.URIRequest
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.URIResponse as WebKit2WebExtension.URIResponse
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.WebEditor as WebKit2WebExtension.WebEditor
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.WebHitTestResult as WebKit2WebExtension.WebHitTestResult
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Structs.ConsoleMessage as WebKit2WebExtension.ConsoleMessage

newtype WebPage = WebPage (ManagedPtr WebPage)
foreign import ccall "webkit_web_page_get_type"
    c_webkit_web_page_get_type :: IO GType

instance GObject WebPage where
    gobjectType _ = c_webkit_web_page_get_type
    

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

toWebPage :: IsWebPage o => o -> IO WebPage
toWebPage = unsafeCastTo WebPage

noWebPage :: Maybe WebPage
noWebPage = Nothing

type family ResolveWebPageMethod (t :: Symbol) (o :: *) :: * where
    ResolveWebPageMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveWebPageMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveWebPageMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveWebPageMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveWebPageMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveWebPageMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveWebPageMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveWebPageMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveWebPageMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveWebPageMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveWebPageMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveWebPageMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveWebPageMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveWebPageMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveWebPageMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveWebPageMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveWebPageMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveWebPageMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveWebPageMethod "getDomDocument" o = WebPageGetDomDocumentMethodInfo
    ResolveWebPageMethod "getEditor" o = WebPageGetEditorMethodInfo
    ResolveWebPageMethod "getId" o = WebPageGetIdMethodInfo
    ResolveWebPageMethod "getMainFrame" o = WebPageGetMainFrameMethodInfo
    ResolveWebPageMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveWebPageMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveWebPageMethod "getUri" o = WebPageGetUriMethodInfo
    ResolveWebPageMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveWebPageMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveWebPageMethod l o = O.MethodResolutionFailed l o

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

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

-- signal WebPage::console-message-sent
type WebPageConsoleMessageSentCallback =
    WebKit2WebExtension.ConsoleMessage.ConsoleMessage ->
    IO ()

noWebPageConsoleMessageSentCallback :: Maybe WebPageConsoleMessageSentCallback
noWebPageConsoleMessageSentCallback = Nothing

type C_WebPageConsoleMessageSentCallback =
    Ptr () ->                               -- object
    Ptr WebKit2WebExtension.ConsoleMessage.ConsoleMessage ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mk_WebPageConsoleMessageSentCallback :: C_WebPageConsoleMessageSentCallback -> IO (FunPtr C_WebPageConsoleMessageSentCallback)

genClosure_WebPageConsoleMessageSent :: WebPageConsoleMessageSentCallback -> IO Closure
genClosure_WebPageConsoleMessageSent cb = do
    let cb' = wrap_WebPageConsoleMessageSentCallback cb
    mk_WebPageConsoleMessageSentCallback cb' >>= newCClosure


wrap_WebPageConsoleMessageSentCallback ::
    WebPageConsoleMessageSentCallback ->
    Ptr () ->
    Ptr WebKit2WebExtension.ConsoleMessage.ConsoleMessage ->
    Ptr () ->
    IO ()
wrap_WebPageConsoleMessageSentCallback _cb _ consoleMessage _ = do
    consoleMessage' <- (newBoxed WebKit2WebExtension.ConsoleMessage.ConsoleMessage) consoleMessage
    _cb  consoleMessage'


onWebPageConsoleMessageSent :: (IsWebPage a, MonadIO m) => a -> WebPageConsoleMessageSentCallback -> m SignalHandlerId
onWebPageConsoleMessageSent obj cb = liftIO $ do
    let cb' = wrap_WebPageConsoleMessageSentCallback cb
    cb'' <- mk_WebPageConsoleMessageSentCallback cb'
    connectSignalFunPtr obj "console-message-sent" cb'' SignalConnectBefore

afterWebPageConsoleMessageSent :: (IsWebPage a, MonadIO m) => a -> WebPageConsoleMessageSentCallback -> m SignalHandlerId
afterWebPageConsoleMessageSent obj cb = liftIO $ do
    let cb' = wrap_WebPageConsoleMessageSentCallback cb
    cb'' <- mk_WebPageConsoleMessageSentCallback cb'
    connectSignalFunPtr obj "console-message-sent" cb'' SignalConnectAfter


-- signal WebPage::context-menu
type WebPageContextMenuCallback =
    WebKit2WebExtension.ContextMenu.ContextMenu ->
    WebKit2WebExtension.WebHitTestResult.WebHitTestResult ->
    IO Bool

noWebPageContextMenuCallback :: Maybe WebPageContextMenuCallback
noWebPageContextMenuCallback = Nothing

type C_WebPageContextMenuCallback =
    Ptr () ->                               -- object
    Ptr WebKit2WebExtension.ContextMenu.ContextMenu ->
    Ptr WebKit2WebExtension.WebHitTestResult.WebHitTestResult ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mk_WebPageContextMenuCallback :: C_WebPageContextMenuCallback -> IO (FunPtr C_WebPageContextMenuCallback)

genClosure_WebPageContextMenu :: WebPageContextMenuCallback -> IO Closure
genClosure_WebPageContextMenu cb = do
    let cb' = wrap_WebPageContextMenuCallback cb
    mk_WebPageContextMenuCallback cb' >>= newCClosure


wrap_WebPageContextMenuCallback ::
    WebPageContextMenuCallback ->
    Ptr () ->
    Ptr WebKit2WebExtension.ContextMenu.ContextMenu ->
    Ptr WebKit2WebExtension.WebHitTestResult.WebHitTestResult ->
    Ptr () ->
    IO CInt
wrap_WebPageContextMenuCallback _cb _ contextMenu hitTestResult _ = do
    contextMenu' <- (newObject WebKit2WebExtension.ContextMenu.ContextMenu) contextMenu
    hitTestResult' <- (newObject WebKit2WebExtension.WebHitTestResult.WebHitTestResult) hitTestResult
    result <- _cb  contextMenu' hitTestResult'
    let result' = (fromIntegral . fromEnum) result
    return result'


onWebPageContextMenu :: (IsWebPage a, MonadIO m) => a -> WebPageContextMenuCallback -> m SignalHandlerId
onWebPageContextMenu obj cb = liftIO $ do
    let cb' = wrap_WebPageContextMenuCallback cb
    cb'' <- mk_WebPageContextMenuCallback cb'
    connectSignalFunPtr obj "context-menu" cb'' SignalConnectBefore

afterWebPageContextMenu :: (IsWebPage a, MonadIO m) => a -> WebPageContextMenuCallback -> m SignalHandlerId
afterWebPageContextMenu obj cb = liftIO $ do
    let cb' = wrap_WebPageContextMenuCallback cb
    cb'' <- mk_WebPageContextMenuCallback cb'
    connectSignalFunPtr obj "context-menu" cb'' SignalConnectAfter


-- signal WebPage::document-loaded
type WebPageDocumentLoadedCallback =
    IO ()

noWebPageDocumentLoadedCallback :: Maybe WebPageDocumentLoadedCallback
noWebPageDocumentLoadedCallback = Nothing

type C_WebPageDocumentLoadedCallback =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mk_WebPageDocumentLoadedCallback :: C_WebPageDocumentLoadedCallback -> IO (FunPtr C_WebPageDocumentLoadedCallback)

genClosure_WebPageDocumentLoaded :: WebPageDocumentLoadedCallback -> IO Closure
genClosure_WebPageDocumentLoaded cb = do
    let cb' = wrap_WebPageDocumentLoadedCallback cb
    mk_WebPageDocumentLoadedCallback cb' >>= newCClosure


wrap_WebPageDocumentLoadedCallback ::
    WebPageDocumentLoadedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
wrap_WebPageDocumentLoadedCallback _cb _ _ = do
    _cb 


onWebPageDocumentLoaded :: (IsWebPage a, MonadIO m) => a -> WebPageDocumentLoadedCallback -> m SignalHandlerId
onWebPageDocumentLoaded obj cb = liftIO $ do
    let cb' = wrap_WebPageDocumentLoadedCallback cb
    cb'' <- mk_WebPageDocumentLoadedCallback cb'
    connectSignalFunPtr obj "document-loaded" cb'' SignalConnectBefore

afterWebPageDocumentLoaded :: (IsWebPage a, MonadIO m) => a -> WebPageDocumentLoadedCallback -> m SignalHandlerId
afterWebPageDocumentLoaded obj cb = liftIO $ do
    let cb' = wrap_WebPageDocumentLoadedCallback cb
    cb'' <- mk_WebPageDocumentLoadedCallback cb'
    connectSignalFunPtr obj "document-loaded" cb'' SignalConnectAfter


-- signal WebPage::form-controls-associated
type WebPageFormControlsAssociatedCallback =
    [WebKit2WebExtension.DOMElement.DOMElement] ->
    IO ()

noWebPageFormControlsAssociatedCallback :: Maybe WebPageFormControlsAssociatedCallback
noWebPageFormControlsAssociatedCallback = Nothing

type C_WebPageFormControlsAssociatedCallback =
    Ptr () ->                               -- object
    Ptr (GPtrArray (Ptr WebKit2WebExtension.DOMElement.DOMElement)) ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mk_WebPageFormControlsAssociatedCallback :: C_WebPageFormControlsAssociatedCallback -> IO (FunPtr C_WebPageFormControlsAssociatedCallback)

genClosure_WebPageFormControlsAssociated :: WebPageFormControlsAssociatedCallback -> IO Closure
genClosure_WebPageFormControlsAssociated cb = do
    let cb' = wrap_WebPageFormControlsAssociatedCallback cb
    mk_WebPageFormControlsAssociatedCallback cb' >>= newCClosure


wrap_WebPageFormControlsAssociatedCallback ::
    WebPageFormControlsAssociatedCallback ->
    Ptr () ->
    Ptr (GPtrArray (Ptr WebKit2WebExtension.DOMElement.DOMElement)) ->
    Ptr () ->
    IO ()
wrap_WebPageFormControlsAssociatedCallback _cb _ elements _ = do
    elements' <- unpackGPtrArray elements
    elements'' <- mapM (newObject WebKit2WebExtension.DOMElement.DOMElement) elements'
    _cb  elements''


onWebPageFormControlsAssociated :: (IsWebPage a, MonadIO m) => a -> WebPageFormControlsAssociatedCallback -> m SignalHandlerId
onWebPageFormControlsAssociated obj cb = liftIO $ do
    let cb' = wrap_WebPageFormControlsAssociatedCallback cb
    cb'' <- mk_WebPageFormControlsAssociatedCallback cb'
    connectSignalFunPtr obj "form-controls-associated" cb'' SignalConnectBefore

afterWebPageFormControlsAssociated :: (IsWebPage a, MonadIO m) => a -> WebPageFormControlsAssociatedCallback -> m SignalHandlerId
afterWebPageFormControlsAssociated obj cb = liftIO $ do
    let cb' = wrap_WebPageFormControlsAssociatedCallback cb
    cb'' <- mk_WebPageFormControlsAssociatedCallback cb'
    connectSignalFunPtr obj "form-controls-associated" cb'' SignalConnectAfter


-- signal WebPage::send-request
type WebPageSendRequestCallback =
    WebKit2WebExtension.URIRequest.URIRequest ->
    WebKit2WebExtension.URIResponse.URIResponse ->
    IO Bool

noWebPageSendRequestCallback :: Maybe WebPageSendRequestCallback
noWebPageSendRequestCallback = Nothing

type C_WebPageSendRequestCallback =
    Ptr () ->                               -- object
    Ptr WebKit2WebExtension.URIRequest.URIRequest ->
    Ptr WebKit2WebExtension.URIResponse.URIResponse ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mk_WebPageSendRequestCallback :: C_WebPageSendRequestCallback -> IO (FunPtr C_WebPageSendRequestCallback)

genClosure_WebPageSendRequest :: WebPageSendRequestCallback -> IO Closure
genClosure_WebPageSendRequest cb = do
    let cb' = wrap_WebPageSendRequestCallback cb
    mk_WebPageSendRequestCallback cb' >>= newCClosure


wrap_WebPageSendRequestCallback ::
    WebPageSendRequestCallback ->
    Ptr () ->
    Ptr WebKit2WebExtension.URIRequest.URIRequest ->
    Ptr WebKit2WebExtension.URIResponse.URIResponse ->
    Ptr () ->
    IO CInt
wrap_WebPageSendRequestCallback _cb _ request redirectedResponse _ = do
    request' <- (newObject WebKit2WebExtension.URIRequest.URIRequest) request
    redirectedResponse' <- (newObject WebKit2WebExtension.URIResponse.URIResponse) redirectedResponse
    result <- _cb  request' redirectedResponse'
    let result' = (fromIntegral . fromEnum) result
    return result'


onWebPageSendRequest :: (IsWebPage a, MonadIO m) => a -> WebPageSendRequestCallback -> m SignalHandlerId
onWebPageSendRequest obj cb = liftIO $ do
    let cb' = wrap_WebPageSendRequestCallback cb
    cb'' <- mk_WebPageSendRequestCallback cb'
    connectSignalFunPtr obj "send-request" cb'' SignalConnectBefore

afterWebPageSendRequest :: (IsWebPage a, MonadIO m) => a -> WebPageSendRequestCallback -> m SignalHandlerId
afterWebPageSendRequest obj cb = liftIO $ do
    let cb' = wrap_WebPageSendRequestCallback cb
    cb'' <- mk_WebPageSendRequestCallback cb'
    connectSignalFunPtr obj "send-request" cb'' SignalConnectAfter


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

getWebPageUri :: (MonadIO m, IsWebPage o) => o -> m T.Text
getWebPageUri obj = liftIO $ checkUnexpectedNothing "getWebPageUri" $ getObjectPropertyString obj "uri"

data WebPageUriPropertyInfo
instance AttrInfo WebPageUriPropertyInfo where
    type AttrAllowedOps WebPageUriPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebPageUriPropertyInfo = (~) ()
    type AttrBaseTypeConstraint WebPageUriPropertyInfo = IsWebPage
    type AttrGetType WebPageUriPropertyInfo = T.Text
    type AttrLabel WebPageUriPropertyInfo = "uri"
    type AttrOrigin WebPageUriPropertyInfo = WebPage
    attrGet _ = getWebPageUri
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList WebPage
type instance O.AttributeList WebPage = WebPageAttributeList
type WebPageAttributeList = ('[ '("uri", WebPageUriPropertyInfo)] :: [(Symbol, *)])

webPageUri :: AttrLabelProxy "uri"
webPageUri = AttrLabelProxy

data WebPageConsoleMessageSentSignalInfo
instance SignalInfo WebPageConsoleMessageSentSignalInfo where
    type HaskellCallbackType WebPageConsoleMessageSentSignalInfo = WebPageConsoleMessageSentCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_WebPageConsoleMessageSentCallback cb
        cb'' <- mk_WebPageConsoleMessageSentCallback cb'
        connectSignalFunPtr obj "console-message-sent" cb'' connectMode

data WebPageContextMenuSignalInfo
instance SignalInfo WebPageContextMenuSignalInfo where
    type HaskellCallbackType WebPageContextMenuSignalInfo = WebPageContextMenuCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_WebPageContextMenuCallback cb
        cb'' <- mk_WebPageContextMenuCallback cb'
        connectSignalFunPtr obj "context-menu" cb'' connectMode

data WebPageDocumentLoadedSignalInfo
instance SignalInfo WebPageDocumentLoadedSignalInfo where
    type HaskellCallbackType WebPageDocumentLoadedSignalInfo = WebPageDocumentLoadedCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_WebPageDocumentLoadedCallback cb
        cb'' <- mk_WebPageDocumentLoadedCallback cb'
        connectSignalFunPtr obj "document-loaded" cb'' connectMode

data WebPageFormControlsAssociatedSignalInfo
instance SignalInfo WebPageFormControlsAssociatedSignalInfo where
    type HaskellCallbackType WebPageFormControlsAssociatedSignalInfo = WebPageFormControlsAssociatedCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_WebPageFormControlsAssociatedCallback cb
        cb'' <- mk_WebPageFormControlsAssociatedCallback cb'
        connectSignalFunPtr obj "form-controls-associated" cb'' connectMode

data WebPageSendRequestSignalInfo
instance SignalInfo WebPageSendRequestSignalInfo where
    type HaskellCallbackType WebPageSendRequestSignalInfo = WebPageSendRequestCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_WebPageSendRequestCallback cb
        cb'' <- mk_WebPageSendRequestCallback cb'
        connectSignalFunPtr obj "send-request" cb'' connectMode

type instance O.SignalList WebPage = WebPageSignalList
type WebPageSignalList = ('[ '("consoleMessageSent", WebPageConsoleMessageSentSignalInfo), '("contextMenu", WebPageContextMenuSignalInfo), '("documentLoaded", WebPageDocumentLoadedSignalInfo), '("formControlsAssociated", WebPageFormControlsAssociatedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("sendRequest", WebPageSendRequestSignalInfo)] :: [(Symbol, *)])

-- method WebPage::get_dom_document
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "web_page", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "WebPage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebPage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDocument"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_page_get_dom_document" webkit_web_page_get_dom_document :: 
    Ptr WebPage ->                          -- web_page : TInterface (Name {namespace = "WebKit2WebExtension", name = "WebPage"})
    IO (Ptr WebKit2WebExtension.DOMDocument.DOMDocument)

{- |
Get the 'GI.WebKit2WebExtension.Objects.DOMDocument.DOMDocument' currently loaded in /@webPage@/
-}
webPageGetDomDocument ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebPage a) =>
    a
    {- ^ /@webPage@/: a 'GI.WebKit2WebExtension.Objects.WebPage.WebPage' -}
    -> m WebKit2WebExtension.DOMDocument.DOMDocument
    {- ^ __Returns:__ the 'GI.WebKit2WebExtension.Objects.DOMDocument.DOMDocument' currently loaded, or 'Nothing'
   if no document is currently loaded. -}
webPageGetDomDocument webPage = liftIO $ do
    webPage' <- unsafeManagedPtrCastPtr webPage
    result <- webkit_web_page_get_dom_document webPage'
    checkUnexpectedReturnNULL "webPageGetDomDocument" result
    result' <- (newObject WebKit2WebExtension.DOMDocument.DOMDocument) result
    touchManagedPtr webPage
    return result'

data WebPageGetDomDocumentMethodInfo
instance (signature ~ (m WebKit2WebExtension.DOMDocument.DOMDocument), MonadIO m, IsWebPage a) => O.MethodInfo WebPageGetDomDocumentMethodInfo a signature where
    overloadedMethod _ = webPageGetDomDocument

-- method WebPage::get_editor
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "web_page", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "WebPage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebPage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2WebExtension", name = "WebEditor"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_page_get_editor" webkit_web_page_get_editor :: 
    Ptr WebPage ->                          -- web_page : TInterface (Name {namespace = "WebKit2WebExtension", name = "WebPage"})
    IO (Ptr WebKit2WebExtension.WebEditor.WebEditor)

{- |
Gets the 'GI.WebKit2WebExtension.Objects.WebEditor.WebEditor' of a 'GI.WebKit2WebExtension.Objects.WebPage.WebPage'.

@since 2.10
-}
webPageGetEditor ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebPage a) =>
    a
    {- ^ /@webPage@/: a 'GI.WebKit2WebExtension.Objects.WebPage.WebPage' -}
    -> m WebKit2WebExtension.WebEditor.WebEditor
    {- ^ __Returns:__ the 'GI.WebKit2WebExtension.Objects.WebEditor.WebEditor' -}
webPageGetEditor webPage = liftIO $ do
    webPage' <- unsafeManagedPtrCastPtr webPage
    result <- webkit_web_page_get_editor webPage'
    checkUnexpectedReturnNULL "webPageGetEditor" result
    result' <- (newObject WebKit2WebExtension.WebEditor.WebEditor) result
    touchManagedPtr webPage
    return result'

data WebPageGetEditorMethodInfo
instance (signature ~ (m WebKit2WebExtension.WebEditor.WebEditor), MonadIO m, IsWebPage a) => O.MethodInfo WebPageGetEditorMethodInfo a signature where
    overloadedMethod _ = webPageGetEditor

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

foreign import ccall "webkit_web_page_get_id" webkit_web_page_get_id :: 
    Ptr WebPage ->                          -- web_page : TInterface (Name {namespace = "WebKit2WebExtension", name = "WebPage"})
    IO Word64

{- |
Get the identifier of the 'GI.WebKit2WebExtension.Objects.WebPage.WebPage'
-}
webPageGetId ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebPage a) =>
    a
    {- ^ /@webPage@/: a 'GI.WebKit2WebExtension.Objects.WebPage.WebPage' -}
    -> m Word64
    {- ^ __Returns:__ the identifier of /@webPage@/ -}
webPageGetId webPage = liftIO $ do
    webPage' <- unsafeManagedPtrCastPtr webPage
    result <- webkit_web_page_get_id webPage'
    touchManagedPtr webPage
    return result

data WebPageGetIdMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsWebPage a) => O.MethodInfo WebPageGetIdMethodInfo a signature where
    overloadedMethod _ = webPageGetId

-- method WebPage::get_main_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "web_page", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "WebPage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebPage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit2WebExtension", name = "Frame"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_page_get_main_frame" webkit_web_page_get_main_frame :: 
    Ptr WebPage ->                          -- web_page : TInterface (Name {namespace = "WebKit2WebExtension", name = "WebPage"})
    IO (Ptr WebKit2WebExtension.Frame.Frame)

{- |
Returns the main frame of a 'GI.WebKit2WebExtension.Objects.WebPage.WebPage'.

@since 2.2
-}
webPageGetMainFrame ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebPage a) =>
    a
    {- ^ /@webPage@/: a 'GI.WebKit2WebExtension.Objects.WebPage.WebPage' -}
    -> m WebKit2WebExtension.Frame.Frame
    {- ^ __Returns:__ the 'GI.WebKit2WebExtension.Objects.Frame.Frame' that is the main frame of /@webPage@/ -}
webPageGetMainFrame webPage = liftIO $ do
    webPage' <- unsafeManagedPtrCastPtr webPage
    result <- webkit_web_page_get_main_frame webPage'
    checkUnexpectedReturnNULL "webPageGetMainFrame" result
    result' <- (newObject WebKit2WebExtension.Frame.Frame) result
    touchManagedPtr webPage
    return result'

data WebPageGetMainFrameMethodInfo
instance (signature ~ (m WebKit2WebExtension.Frame.Frame), MonadIO m, IsWebPage a) => O.MethodInfo WebPageGetMainFrameMethodInfo a signature where
    overloadedMethod _ = webPageGetMainFrame

-- method WebPage::get_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "web_page", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "WebPage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebPage", 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_page_get_uri" webkit_web_page_get_uri :: 
    Ptr WebPage ->                          -- web_page : TInterface (Name {namespace = "WebKit2WebExtension", name = "WebPage"})
    IO CString

{- |
Returns the current active URI of /@webPage@/.

You can monitor the active URI by connecting to the notify::uri
signal of /@webPage@/.
-}
webPageGetUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebPage a) =>
    a
    {- ^ /@webPage@/: a 'GI.WebKit2WebExtension.Objects.WebPage.WebPage' -}
    -> m T.Text
    {- ^ __Returns:__ the current active URI of /@webView@/ or 'Nothing' if nothing has been
   loaded yet. -}
webPageGetUri webPage = liftIO $ do
    webPage' <- unsafeManagedPtrCastPtr webPage
    result <- webkit_web_page_get_uri webPage'
    checkUnexpectedReturnNULL "webPageGetUri" result
    result' <- cstringToText result
    touchManagedPtr webPage
    return result'

data WebPageGetUriMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsWebPage a) => O.MethodInfo WebPageGetUriMethodInfo a signature where
    overloadedMethod _ = webPageGetUri