{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- /No description available in the introspection data./

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

module GI.WebKit2.Objects.PolicyDecision
    ( 

-- * Exported types
    PolicyDecision(..)                      ,
    IsPolicyDecision                        ,
    toPolicyDecision                        ,
    noPolicyDecision                        ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#if defined(ENABLE_OVERLOADING)
    ResolvePolicyDecisionMethod             ,
#endif


-- ** download #method:download#

#if defined(ENABLE_OVERLOADING)
    PolicyDecisionDownloadMethodInfo        ,
#endif
    policyDecisionDownload                  ,


-- ** ignore #method:ignore#

#if defined(ENABLE_OVERLOADING)
    PolicyDecisionIgnoreMethodInfo          ,
#endif
    policyDecisionIgnore                    ,


-- ** use #method:use#

#if defined(ENABLE_OVERLOADING)
    PolicyDecisionUseMethodInfo             ,
#endif
    policyDecisionUse                       ,




    ) 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.GI.Base.Signals as B.Signals
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

-- | Memory-managed wrapper type.
newtype PolicyDecision = PolicyDecision (ManagedPtr PolicyDecision)
    deriving (PolicyDecision -> PolicyDecision -> Bool
(PolicyDecision -> PolicyDecision -> Bool)
-> (PolicyDecision -> PolicyDecision -> Bool) -> Eq PolicyDecision
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PolicyDecision -> PolicyDecision -> Bool
$c/= :: PolicyDecision -> PolicyDecision -> Bool
== :: PolicyDecision -> PolicyDecision -> Bool
$c== :: PolicyDecision -> PolicyDecision -> Bool
Eq)
foreign import ccall "webkit_policy_decision_get_type"
    c_webkit_policy_decision_get_type :: IO GType

instance GObject PolicyDecision where
    gobjectType :: IO GType
gobjectType = IO GType
c_webkit_policy_decision_get_type
    

-- | Convert 'PolicyDecision' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue PolicyDecision where
    toGValue :: PolicyDecision -> IO GValue
toGValue o :: PolicyDecision
o = do
        GType
gtype <- IO GType
c_webkit_policy_decision_get_type
        PolicyDecision -> (Ptr PolicyDecision -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr PolicyDecision
o (GType
-> (GValue -> Ptr PolicyDecision -> IO ())
-> Ptr PolicyDecision
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr PolicyDecision -> IO ()
forall a. GObject a => GValue -> Ptr a -> IO ()
B.GValue.set_object)
        
    fromGValue :: GValue -> IO PolicyDecision
fromGValue gv :: GValue
gv = do
        Ptr PolicyDecision
ptr <- GValue -> IO (Ptr PolicyDecision)
forall b. GObject b => GValue -> IO (Ptr b)
B.GValue.get_object GValue
gv :: IO (Ptr PolicyDecision)
        (ManagedPtr PolicyDecision -> PolicyDecision)
-> Ptr PolicyDecision -> IO PolicyDecision
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr PolicyDecision -> PolicyDecision
PolicyDecision Ptr PolicyDecision
ptr
        
    

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

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

-- | Cast to `PolicyDecision`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toPolicyDecision :: (MonadIO m, IsPolicyDecision o) => o -> m PolicyDecision
toPolicyDecision :: o -> m PolicyDecision
toPolicyDecision = IO PolicyDecision -> m PolicyDecision
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO PolicyDecision -> m PolicyDecision)
-> (o -> IO PolicyDecision) -> o -> m PolicyDecision
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr PolicyDecision -> PolicyDecision)
-> o -> IO PolicyDecision
forall o o'.
(HasCallStack, GObject o, GObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
unsafeCastTo ManagedPtr PolicyDecision -> PolicyDecision
PolicyDecision

-- | A convenience alias for `Nothing` :: `Maybe` `PolicyDecision`.
noPolicyDecision :: Maybe PolicyDecision
noPolicyDecision :: Maybe PolicyDecision
noPolicyDecision = Maybe PolicyDecision
forall a. Maybe a
Nothing

#if defined(ENABLE_OVERLOADING)
type family ResolvePolicyDecisionMethod (t :: Symbol) (o :: *) :: * where
    ResolvePolicyDecisionMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolvePolicyDecisionMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolvePolicyDecisionMethod "download" o = PolicyDecisionDownloadMethodInfo
    ResolvePolicyDecisionMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolvePolicyDecisionMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolvePolicyDecisionMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolvePolicyDecisionMethod "ignore" o = PolicyDecisionIgnoreMethodInfo
    ResolvePolicyDecisionMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolvePolicyDecisionMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolvePolicyDecisionMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolvePolicyDecisionMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolvePolicyDecisionMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolvePolicyDecisionMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolvePolicyDecisionMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolvePolicyDecisionMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolvePolicyDecisionMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolvePolicyDecisionMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolvePolicyDecisionMethod "use" o = PolicyDecisionUseMethodInfo
    ResolvePolicyDecisionMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolvePolicyDecisionMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolvePolicyDecisionMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolvePolicyDecisionMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolvePolicyDecisionMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolvePolicyDecisionMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolvePolicyDecisionMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolvePolicyDecisionMethod l o = O.MethodResolutionFailed l o

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

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList PolicyDecision
type instance O.AttributeList PolicyDecision = PolicyDecisionAttributeList
type PolicyDecisionAttributeList = ('[ ] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

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

#endif

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

foreign import ccall "webkit_policy_decision_download" webkit_policy_decision_download :: 
    Ptr PolicyDecision ->                   -- decision : TInterface (Name {namespace = "WebKit2", name = "PolicyDecision"})
    IO ()

-- | Spawn a download from this decision.
policyDecisionDownload ::
    (B.CallStack.HasCallStack, MonadIO m, IsPolicyDecision a) =>
    a
    -- ^ /@decision@/: a t'GI.WebKit2.Objects.PolicyDecision.PolicyDecision'
    -> m ()
policyDecisionDownload :: a -> m ()
policyDecisionDownload decision :: a
decision = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr PolicyDecision
decision' <- a -> IO (Ptr PolicyDecision)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
decision
    Ptr PolicyDecision -> IO ()
webkit_policy_decision_download Ptr PolicyDecision
decision'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
decision
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data PolicyDecisionDownloadMethodInfo
instance (signature ~ (m ()), MonadIO m, IsPolicyDecision a) => O.MethodInfo PolicyDecisionDownloadMethodInfo a signature where
    overloadedMethod = policyDecisionDownload

#endif

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

foreign import ccall "webkit_policy_decision_ignore" webkit_policy_decision_ignore :: 
    Ptr PolicyDecision ->                   -- decision : TInterface (Name {namespace = "WebKit2", name = "PolicyDecision"})
    IO ()

-- | Ignore the action which triggered this decision. For instance, for a
-- t'GI.WebKit2.Objects.ResponsePolicyDecision.ResponsePolicyDecision', this would cancel the request.
policyDecisionIgnore ::
    (B.CallStack.HasCallStack, MonadIO m, IsPolicyDecision a) =>
    a
    -- ^ /@decision@/: a t'GI.WebKit2.Objects.PolicyDecision.PolicyDecision'
    -> m ()
policyDecisionIgnore :: a -> m ()
policyDecisionIgnore decision :: a
decision = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr PolicyDecision
decision' <- a -> IO (Ptr PolicyDecision)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
decision
    Ptr PolicyDecision -> IO ()
webkit_policy_decision_ignore Ptr PolicyDecision
decision'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
decision
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data PolicyDecisionIgnoreMethodInfo
instance (signature ~ (m ()), MonadIO m, IsPolicyDecision a) => O.MethodInfo PolicyDecisionIgnoreMethodInfo a signature where
    overloadedMethod = policyDecisionIgnore

#endif

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

foreign import ccall "webkit_policy_decision_use" webkit_policy_decision_use :: 
    Ptr PolicyDecision ->                   -- decision : TInterface (Name {namespace = "WebKit2", name = "PolicyDecision"})
    IO ()

-- | Accept the action which triggered this decision.
policyDecisionUse ::
    (B.CallStack.HasCallStack, MonadIO m, IsPolicyDecision a) =>
    a
    -- ^ /@decision@/: a t'GI.WebKit2.Objects.PolicyDecision.PolicyDecision'
    -> m ()
policyDecisionUse :: a -> m ()
policyDecisionUse decision :: a
decision = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr PolicyDecision
decision' <- a -> IO (Ptr PolicyDecision)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
decision
    Ptr PolicyDecision -> IO ()
webkit_policy_decision_use Ptr PolicyDecision
decision'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
decision
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data PolicyDecisionUseMethodInfo
instance (signature ~ (m ()), MonadIO m, IsPolicyDecision a) => O.MethodInfo PolicyDecisionUseMethodInfo a signature where
    overloadedMethod = policyDecisionUse

#endif