{- |
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.WebKit2.Objects.UserContentManager
    ( 

-- * Exported types
    UserContentManager(..)                  ,
    IsUserContentManager                    ,
    toUserContentManager                    ,
    noUserContentManager                    ,


 -- * Methods
-- ** addScript #method:addScript#
    UserContentManagerAddScriptMethodInfo   ,
    userContentManagerAddScript             ,


-- ** addStyleSheet #method:addStyleSheet#
    UserContentManagerAddStyleSheetMethodInfo,
    userContentManagerAddStyleSheet         ,


-- ** new #method:new#
    userContentManagerNew                   ,


-- ** registerScriptMessageHandler #method:registerScriptMessageHandler#
    UserContentManagerRegisterScriptMessageHandlerMethodInfo,
    userContentManagerRegisterScriptMessageHandler,


-- ** removeAllScripts #method:removeAllScripts#
    UserContentManagerRemoveAllScriptsMethodInfo,
    userContentManagerRemoveAllScripts      ,


-- ** removeAllStyleSheets #method:removeAllStyleSheets#
    UserContentManagerRemoveAllStyleSheetsMethodInfo,
    userContentManagerRemoveAllStyleSheets  ,


-- ** unregisterScriptMessageHandler #method:unregisterScriptMessageHandler#
    UserContentManagerUnregisterScriptMessageHandlerMethodInfo,
    userContentManagerUnregisterScriptMessageHandler,




 -- * Signals
-- ** scriptMessageReceived #signal:scriptMessageReceived#
    C_UserContentManagerScriptMessageReceivedCallback,
    UserContentManagerScriptMessageReceivedCallback,
    UserContentManagerScriptMessageReceivedSignalInfo,
    afterUserContentManagerScriptMessageReceived,
    genClosure_UserContentManagerScriptMessageReceived,
    mk_UserContentManagerScriptMessageReceivedCallback,
    noUserContentManagerScriptMessageReceivedCallback,
    onUserContentManagerScriptMessageReceived,
    wrap_UserContentManagerScriptMessageReceivedCallback,




    ) 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.WebKit2.Structs.JavascriptResult as WebKit2.JavascriptResult
import {-# SOURCE #-} qualified GI.WebKit2.Structs.UserScript as WebKit2.UserScript
import {-# SOURCE #-} qualified GI.WebKit2.Structs.UserStyleSheet as WebKit2.UserStyleSheet

newtype UserContentManager = UserContentManager (ManagedPtr UserContentManager)
foreign import ccall "webkit_user_content_manager_get_type"
    c_webkit_user_content_manager_get_type :: IO GType

instance GObject UserContentManager where
    gobjectType _ = c_webkit_user_content_manager_get_type
    

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

toUserContentManager :: IsUserContentManager o => o -> IO UserContentManager
toUserContentManager = unsafeCastTo UserContentManager

noUserContentManager :: Maybe UserContentManager
noUserContentManager = Nothing

type family ResolveUserContentManagerMethod (t :: Symbol) (o :: *) :: * where
    ResolveUserContentManagerMethod "addScript" o = UserContentManagerAddScriptMethodInfo
    ResolveUserContentManagerMethod "addStyleSheet" o = UserContentManagerAddStyleSheetMethodInfo
    ResolveUserContentManagerMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveUserContentManagerMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveUserContentManagerMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveUserContentManagerMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveUserContentManagerMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveUserContentManagerMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveUserContentManagerMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveUserContentManagerMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveUserContentManagerMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveUserContentManagerMethod "registerScriptMessageHandler" o = UserContentManagerRegisterScriptMessageHandlerMethodInfo
    ResolveUserContentManagerMethod "removeAllScripts" o = UserContentManagerRemoveAllScriptsMethodInfo
    ResolveUserContentManagerMethod "removeAllStyleSheets" o = UserContentManagerRemoveAllStyleSheetsMethodInfo
    ResolveUserContentManagerMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveUserContentManagerMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveUserContentManagerMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveUserContentManagerMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveUserContentManagerMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveUserContentManagerMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveUserContentManagerMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveUserContentManagerMethod "unregisterScriptMessageHandler" o = UserContentManagerUnregisterScriptMessageHandlerMethodInfo
    ResolveUserContentManagerMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveUserContentManagerMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveUserContentManagerMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveUserContentManagerMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveUserContentManagerMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveUserContentManagerMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveUserContentManagerMethod l o = O.MethodResolutionFailed l o

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

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

-- signal UserContentManager::script-message-received
type UserContentManagerScriptMessageReceivedCallback =
    WebKit2.JavascriptResult.JavascriptResult ->
    IO ()

noUserContentManagerScriptMessageReceivedCallback :: Maybe UserContentManagerScriptMessageReceivedCallback
noUserContentManagerScriptMessageReceivedCallback = Nothing

type C_UserContentManagerScriptMessageReceivedCallback =
    Ptr () ->                               -- object
    Ptr WebKit2.JavascriptResult.JavascriptResult ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mk_UserContentManagerScriptMessageReceivedCallback :: C_UserContentManagerScriptMessageReceivedCallback -> IO (FunPtr C_UserContentManagerScriptMessageReceivedCallback)

genClosure_UserContentManagerScriptMessageReceived :: UserContentManagerScriptMessageReceivedCallback -> IO Closure
genClosure_UserContentManagerScriptMessageReceived cb = do
    let cb' = wrap_UserContentManagerScriptMessageReceivedCallback cb
    mk_UserContentManagerScriptMessageReceivedCallback cb' >>= newCClosure


wrap_UserContentManagerScriptMessageReceivedCallback ::
    UserContentManagerScriptMessageReceivedCallback ->
    Ptr () ->
    Ptr WebKit2.JavascriptResult.JavascriptResult ->
    Ptr () ->
    IO ()
wrap_UserContentManagerScriptMessageReceivedCallback _cb _ jsResult _ = do
    jsResult' <- (newBoxed WebKit2.JavascriptResult.JavascriptResult) jsResult
    _cb  jsResult'


onUserContentManagerScriptMessageReceived :: (GObject a, MonadIO m) => a -> UserContentManagerScriptMessageReceivedCallback -> m SignalHandlerId
onUserContentManagerScriptMessageReceived obj cb = liftIO $ connectUserContentManagerScriptMessageReceived obj cb SignalConnectBefore
afterUserContentManagerScriptMessageReceived :: (GObject a, MonadIO m) => a -> UserContentManagerScriptMessageReceivedCallback -> m SignalHandlerId
afterUserContentManagerScriptMessageReceived obj cb = connectUserContentManagerScriptMessageReceived obj cb SignalConnectAfter

connectUserContentManagerScriptMessageReceived :: (GObject a, MonadIO m) =>
                                                  a -> UserContentManagerScriptMessageReceivedCallback -> SignalConnectMode -> m SignalHandlerId
connectUserContentManagerScriptMessageReceived obj cb after = liftIO $ do
    let cb' = wrap_UserContentManagerScriptMessageReceivedCallback cb
    cb'' <- mk_UserContentManagerScriptMessageReceivedCallback cb'
    connectSignalFunPtr obj "script-message-received" cb'' after

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

data UserContentManagerScriptMessageReceivedSignalInfo
instance SignalInfo UserContentManagerScriptMessageReceivedSignalInfo where
    type HaskellCallbackType UserContentManagerScriptMessageReceivedSignalInfo = UserContentManagerScriptMessageReceivedCallback
    connectSignal _ = connectUserContentManagerScriptMessageReceived

type instance O.SignalList UserContentManager = UserContentManagerSignalList
type UserContentManagerSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo), '("scriptMessageReceived", UserContentManagerScriptMessageReceivedSignalInfo)] :: [(Symbol, *)])

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

foreign import ccall "webkit_user_content_manager_new" webkit_user_content_manager_new :: 
    IO (Ptr UserContentManager)

{- |
Creates a new user content manager.

@since 2.6
-}
userContentManagerNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m UserContentManager
    {- ^ __Returns:__ A 'GI.WebKit2.Objects.UserContentManager.UserContentManager' -}
userContentManagerNew  = liftIO $ do
    result <- webkit_user_content_manager_new
    checkUnexpectedReturnNULL "userContentManagerNew" result
    result' <- (wrapObject UserContentManager) result
    return result'

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

foreign import ccall "webkit_user_content_manager_add_script" webkit_user_content_manager_add_script :: 
    Ptr UserContentManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "UserContentManager"})
    Ptr WebKit2.UserScript.UserScript ->    -- script : TInterface (Name {namespace = "WebKit2", name = "UserScript"})
    IO ()

{- |
Adds a 'GI.WebKit2.Structs.UserScript.UserScript' to the given 'GI.WebKit2.Objects.UserContentManager.UserContentManager'.
The same 'GI.WebKit2.Structs.UserScript.UserScript' can be reused with multiple
'GI.WebKit2.Objects.UserContentManager.UserContentManager' instances.

@since 2.6
-}
userContentManagerAddScript ::
    (B.CallStack.HasCallStack, MonadIO m, IsUserContentManager a) =>
    a
    {- ^ /@manager@/: A 'GI.WebKit2.Objects.UserContentManager.UserContentManager' -}
    -> WebKit2.UserScript.UserScript
    {- ^ /@script@/: A 'GI.WebKit2.Structs.UserScript.UserScript' -}
    -> m ()
userContentManagerAddScript manager script = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    script' <- unsafeManagedPtrGetPtr script
    webkit_user_content_manager_add_script manager' script'
    touchManagedPtr manager
    touchManagedPtr script
    return ()

data UserContentManagerAddScriptMethodInfo
instance (signature ~ (WebKit2.UserScript.UserScript -> m ()), MonadIO m, IsUserContentManager a) => O.MethodInfo UserContentManagerAddScriptMethodInfo a signature where
    overloadedMethod _ = userContentManagerAddScript

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

foreign import ccall "webkit_user_content_manager_add_style_sheet" webkit_user_content_manager_add_style_sheet :: 
    Ptr UserContentManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "UserContentManager"})
    Ptr WebKit2.UserStyleSheet.UserStyleSheet -> -- stylesheet : TInterface (Name {namespace = "WebKit2", name = "UserStyleSheet"})
    IO ()

{- |
Adds a 'GI.WebKit2.Structs.UserStyleSheet.UserStyleSheet' to the given 'GI.WebKit2.Objects.UserContentManager.UserContentManager'.
The same 'GI.WebKit2.Structs.UserStyleSheet.UserStyleSheet' can be reused with multiple
'GI.WebKit2.Objects.UserContentManager.UserContentManager' instances.

@since 2.6
-}
userContentManagerAddStyleSheet ::
    (B.CallStack.HasCallStack, MonadIO m, IsUserContentManager a) =>
    a
    {- ^ /@manager@/: A 'GI.WebKit2.Objects.UserContentManager.UserContentManager' -}
    -> WebKit2.UserStyleSheet.UserStyleSheet
    {- ^ /@stylesheet@/: A 'GI.WebKit2.Structs.UserStyleSheet.UserStyleSheet' -}
    -> m ()
userContentManagerAddStyleSheet manager stylesheet = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    stylesheet' <- unsafeManagedPtrGetPtr stylesheet
    webkit_user_content_manager_add_style_sheet manager' stylesheet'
    touchManagedPtr manager
    touchManagedPtr stylesheet
    return ()

data UserContentManagerAddStyleSheetMethodInfo
instance (signature ~ (WebKit2.UserStyleSheet.UserStyleSheet -> m ()), MonadIO m, IsUserContentManager a) => O.MethodInfo UserContentManagerAddStyleSheetMethodInfo a signature where
    overloadedMethod _ = userContentManagerAddStyleSheet

-- method UserContentManager::register_script_message_handler
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "UserContentManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitUserContentManager", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Name of the script message channel", 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_user_content_manager_register_script_message_handler" webkit_user_content_manager_register_script_message_handler :: 
    Ptr UserContentManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "UserContentManager"})
    CString ->                              -- name : TBasicType TUTF8
    IO CInt

{- |
Registers a new user script message handler. After it is registered,
scripts can use @window.webkit.messageHandlers.&lt;name&gt;.postMessage(value)@
to send messages. Those messages are received by connecting handlers
to the 'GI.WebKit2.Objects.UserContentManager.UserContentManager'::@/script-message-received/@ signal. The
handler name is used as the detail of the signal. To avoid race
conditions between registering the handler name, and starting to
receive the signals, it is recommended to connect to the signal
*before* registering the handler name:

\<informalexample>\<programlisting>
WebKitWebView *view = webkit_web_view_new ();
WebKitUserContentManager *manager = webkit_web_view_get_user_content_manager ();
g_signal_connect (manager, \"script-message-received::foobar\",
                  G_CALLBACK (handle_script_message), NULL);
webkit_user_content_manager_register_script_message_handler (manager, \"foobar\");
\<\/programlisting>\<\/informalexample>

Registering a script message handler will fail if the requested
name has been already registered before.

@since 2.8
-}
userContentManagerRegisterScriptMessageHandler ::
    (B.CallStack.HasCallStack, MonadIO m, IsUserContentManager a) =>
    a
    {- ^ /@manager@/: A 'GI.WebKit2.Objects.UserContentManager.UserContentManager' -}
    -> T.Text
    {- ^ /@name@/: Name of the script message channel -}
    -> m Bool
    {- ^ __Returns:__ 'True' if message handler was registered successfully, or 'False' otherwise. -}
userContentManagerRegisterScriptMessageHandler manager name = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    name' <- textToCString name
    result <- webkit_user_content_manager_register_script_message_handler manager' name'
    let result' = (/= 0) result
    touchManagedPtr manager
    freeMem name'
    return result'

data UserContentManagerRegisterScriptMessageHandlerMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsUserContentManager a) => O.MethodInfo UserContentManagerRegisterScriptMessageHandlerMethodInfo a signature where
    overloadedMethod _ = userContentManagerRegisterScriptMessageHandler

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

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

{- |
Removes all user scripts from the given 'GI.WebKit2.Objects.UserContentManager.UserContentManager'

@since 2.6
-}
userContentManagerRemoveAllScripts ::
    (B.CallStack.HasCallStack, MonadIO m, IsUserContentManager a) =>
    a
    {- ^ /@manager@/: A 'GI.WebKit2.Objects.UserContentManager.UserContentManager' -}
    -> m ()
userContentManagerRemoveAllScripts manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    webkit_user_content_manager_remove_all_scripts manager'
    touchManagedPtr manager
    return ()

data UserContentManagerRemoveAllScriptsMethodInfo
instance (signature ~ (m ()), MonadIO m, IsUserContentManager a) => O.MethodInfo UserContentManagerRemoveAllScriptsMethodInfo a signature where
    overloadedMethod _ = userContentManagerRemoveAllScripts

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

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

{- |
Removes all user style sheets from the given 'GI.WebKit2.Objects.UserContentManager.UserContentManager'.

@since 2.6
-}
userContentManagerRemoveAllStyleSheets ::
    (B.CallStack.HasCallStack, MonadIO m, IsUserContentManager a) =>
    a
    {- ^ /@manager@/: A 'GI.WebKit2.Objects.UserContentManager.UserContentManager' -}
    -> m ()
userContentManagerRemoveAllStyleSheets manager = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    webkit_user_content_manager_remove_all_style_sheets manager'
    touchManagedPtr manager
    return ()

data UserContentManagerRemoveAllStyleSheetsMethodInfo
instance (signature ~ (m ()), MonadIO m, IsUserContentManager a) => O.MethodInfo UserContentManagerRemoveAllStyleSheetsMethodInfo a signature where
    overloadedMethod _ = userContentManagerRemoveAllStyleSheets

-- method UserContentManager::unregister_script_message_handler
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "manager", argType = TInterface (Name {namespace = "WebKit2", name = "UserContentManager"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #WebKitUserContentManager", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Name of the script message channel", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_user_content_manager_unregister_script_message_handler" webkit_user_content_manager_unregister_script_message_handler :: 
    Ptr UserContentManager ->               -- manager : TInterface (Name {namespace = "WebKit2", name = "UserContentManager"})
    CString ->                              -- name : TBasicType TUTF8
    IO ()

{- |
Unregisters a previously registered message handler.

Note that this does *not* disconnect handlers for the
'GI.WebKit2.Objects.UserContentManager.UserContentManager'::@/script-message-received/@ signal,
they will be kept connected, but the signal will not be emitted
unless the handler name is registered again.

See also 'GI.WebKit2.Objects.UserContentManager.userContentManagerRegisterScriptMessageHandler'

@since 2.8
-}
userContentManagerUnregisterScriptMessageHandler ::
    (B.CallStack.HasCallStack, MonadIO m, IsUserContentManager a) =>
    a
    {- ^ /@manager@/: A 'GI.WebKit2.Objects.UserContentManager.UserContentManager' -}
    -> T.Text
    {- ^ /@name@/: Name of the script message channel -}
    -> m ()
userContentManagerUnregisterScriptMessageHandler manager name = liftIO $ do
    manager' <- unsafeManagedPtrCastPtr manager
    name' <- textToCString name
    webkit_user_content_manager_unregister_script_message_handler manager' name'
    touchManagedPtr manager
    freeMem name'
    return ()

data UserContentManagerUnregisterScriptMessageHandlerMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsUserContentManager a) => O.MethodInfo UserContentManagerUnregisterScriptMessageHandlerMethodInfo a signature where
    overloadedMethod _ = userContentManagerUnregisterScriptMessageHandler