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

'GI.WebKit.Objects.GeolocationPolicyDecision.GeolocationPolicyDecision' objects are given to the application when
geolocation-policy-decision-requested signal is emitted. The application
uses it to tell the engine whether it wants to allow or deny geolocation for
a given frame.
-}

module GI.WebKit.Objects.GeolocationPolicyDecision
    ( 

-- * Exported types
    GeolocationPolicyDecision(..)           ,
    IsGeolocationPolicyDecision             ,
    toGeolocationPolicyDecision             ,
    noGeolocationPolicyDecision             ,


    ) 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

newtype GeolocationPolicyDecision = GeolocationPolicyDecision (ManagedPtr GeolocationPolicyDecision)
foreign import ccall "webkit_geolocation_policy_decision_get_type"
    c_webkit_geolocation_policy_decision_get_type :: IO GType

instance GObject GeolocationPolicyDecision where
    gobjectType _ = c_webkit_geolocation_policy_decision_get_type
    

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

toGeolocationPolicyDecision :: IsGeolocationPolicyDecision o => o -> IO GeolocationPolicyDecision
toGeolocationPolicyDecision = unsafeCastTo GeolocationPolicyDecision

noGeolocationPolicyDecision :: Maybe GeolocationPolicyDecision
noGeolocationPolicyDecision = Nothing

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

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

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

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

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