{- |
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.NavigationPolicyDecision
    ( 

-- * Exported types
    NavigationPolicyDecision(..)            ,
    NavigationPolicyDecisionK               ,
    toNavigationPolicyDecision              ,
    noNavigationPolicyDecision              ,


 -- * Methods
-- ** navigationPolicyDecisionGetFrameName
    navigationPolicyDecisionGetFrameName    ,


-- ** navigationPolicyDecisionGetModifiers
    navigationPolicyDecisionGetModifiers    ,


-- ** navigationPolicyDecisionGetMouseButton
    navigationPolicyDecisionGetMouseButton  ,


-- ** navigationPolicyDecisionGetNavigationAction
    navigationPolicyDecisionGetNavigationAction,


-- ** navigationPolicyDecisionGetNavigationType
    navigationPolicyDecisionGetNavigationType,


-- ** navigationPolicyDecisionGetRequest
    navigationPolicyDecisionGetRequest      ,




 -- * Properties
-- ** FrameName
    NavigationPolicyDecisionFrameNamePropertyInfo,
    getNavigationPolicyDecisionFrameName    ,


-- ** Modifiers
    NavigationPolicyDecisionModifiersPropertyInfo,
    getNavigationPolicyDecisionModifiers    ,


-- ** MouseButton
    NavigationPolicyDecisionMouseButtonPropertyInfo,
    getNavigationPolicyDecisionMouseButton  ,


-- ** NavigationAction
    NavigationPolicyDecisionNavigationActionPropertyInfo,
    getNavigationPolicyDecisionNavigationAction,


-- ** NavigationType
    NavigationPolicyDecisionNavigationTypePropertyInfo,
    getNavigationPolicyDecisionNavigationType,


-- ** Request
    NavigationPolicyDecisionRequestPropertyInfo,
    getNavigationPolicyDecisionRequest      ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.WebKit2.Types
import GI.WebKit2.Callbacks
import qualified GI.GObject as GObject

newtype NavigationPolicyDecision = NavigationPolicyDecision (ForeignPtr NavigationPolicyDecision)
foreign import ccall "webkit_navigation_policy_decision_get_type"
    c_webkit_navigation_policy_decision_get_type :: IO GType

type instance ParentTypes NavigationPolicyDecision = NavigationPolicyDecisionParentTypes
type NavigationPolicyDecisionParentTypes = '[PolicyDecision, GObject.Object]

instance GObject NavigationPolicyDecision where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_webkit_navigation_policy_decision_get_type
    

class GObject o => NavigationPolicyDecisionK o
instance (GObject o, IsDescendantOf NavigationPolicyDecision o) => NavigationPolicyDecisionK o

toNavigationPolicyDecision :: NavigationPolicyDecisionK o => o -> IO NavigationPolicyDecision
toNavigationPolicyDecision = unsafeCastTo NavigationPolicyDecision

noNavigationPolicyDecision :: Maybe NavigationPolicyDecision
noNavigationPolicyDecision = Nothing

-- VVV Prop "frame-name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable]

getNavigationPolicyDecisionFrameName :: (MonadIO m, NavigationPolicyDecisionK o) => o -> m T.Text
getNavigationPolicyDecisionFrameName obj = liftIO $ getObjectPropertyString obj "frame-name"

data NavigationPolicyDecisionFrameNamePropertyInfo
instance AttrInfo NavigationPolicyDecisionFrameNamePropertyInfo where
    type AttrAllowedOps NavigationPolicyDecisionFrameNamePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint NavigationPolicyDecisionFrameNamePropertyInfo = (~) ()
    type AttrBaseTypeConstraint NavigationPolicyDecisionFrameNamePropertyInfo = NavigationPolicyDecisionK
    type AttrGetType NavigationPolicyDecisionFrameNamePropertyInfo = T.Text
    type AttrLabel NavigationPolicyDecisionFrameNamePropertyInfo = "NavigationPolicyDecision::frame-name"
    attrGet _ = getNavigationPolicyDecisionFrameName
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "modifiers"
   -- Type: TBasicType TUInt32
   -- Flags: [PropertyReadable]

getNavigationPolicyDecisionModifiers :: (MonadIO m, NavigationPolicyDecisionK o) => o -> m Word32
getNavigationPolicyDecisionModifiers obj = liftIO $ getObjectPropertyCUInt obj "modifiers"

data NavigationPolicyDecisionModifiersPropertyInfo
instance AttrInfo NavigationPolicyDecisionModifiersPropertyInfo where
    type AttrAllowedOps NavigationPolicyDecisionModifiersPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint NavigationPolicyDecisionModifiersPropertyInfo = (~) ()
    type AttrBaseTypeConstraint NavigationPolicyDecisionModifiersPropertyInfo = NavigationPolicyDecisionK
    type AttrGetType NavigationPolicyDecisionModifiersPropertyInfo = Word32
    type AttrLabel NavigationPolicyDecisionModifiersPropertyInfo = "NavigationPolicyDecision::modifiers"
    attrGet _ = getNavigationPolicyDecisionModifiers
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "mouse-button"
   -- Type: TBasicType TUInt32
   -- Flags: [PropertyReadable]

getNavigationPolicyDecisionMouseButton :: (MonadIO m, NavigationPolicyDecisionK o) => o -> m Word32
getNavigationPolicyDecisionMouseButton obj = liftIO $ getObjectPropertyCUInt obj "mouse-button"

data NavigationPolicyDecisionMouseButtonPropertyInfo
instance AttrInfo NavigationPolicyDecisionMouseButtonPropertyInfo where
    type AttrAllowedOps NavigationPolicyDecisionMouseButtonPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint NavigationPolicyDecisionMouseButtonPropertyInfo = (~) ()
    type AttrBaseTypeConstraint NavigationPolicyDecisionMouseButtonPropertyInfo = NavigationPolicyDecisionK
    type AttrGetType NavigationPolicyDecisionMouseButtonPropertyInfo = Word32
    type AttrLabel NavigationPolicyDecisionMouseButtonPropertyInfo = "NavigationPolicyDecision::mouse-button"
    attrGet _ = getNavigationPolicyDecisionMouseButton
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "navigation-action"
   -- Type: TInterface "WebKit2" "NavigationAction"
   -- Flags: [PropertyReadable]

getNavigationPolicyDecisionNavigationAction :: (MonadIO m, NavigationPolicyDecisionK o) => o -> m NavigationAction
getNavigationPolicyDecisionNavigationAction obj = liftIO $ getObjectPropertyBoxed obj "navigation-action" NavigationAction

data NavigationPolicyDecisionNavigationActionPropertyInfo
instance AttrInfo NavigationPolicyDecisionNavigationActionPropertyInfo where
    type AttrAllowedOps NavigationPolicyDecisionNavigationActionPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint NavigationPolicyDecisionNavigationActionPropertyInfo = (~) ()
    type AttrBaseTypeConstraint NavigationPolicyDecisionNavigationActionPropertyInfo = NavigationPolicyDecisionK
    type AttrGetType NavigationPolicyDecisionNavigationActionPropertyInfo = NavigationAction
    type AttrLabel NavigationPolicyDecisionNavigationActionPropertyInfo = "NavigationPolicyDecision::navigation-action"
    attrGet _ = getNavigationPolicyDecisionNavigationAction
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "navigation-type"
   -- Type: TInterface "WebKit2" "NavigationType"
   -- Flags: [PropertyReadable]

getNavigationPolicyDecisionNavigationType :: (MonadIO m, NavigationPolicyDecisionK o) => o -> m NavigationType
getNavigationPolicyDecisionNavigationType obj = liftIO $ getObjectPropertyEnum obj "navigation-type"

data NavigationPolicyDecisionNavigationTypePropertyInfo
instance AttrInfo NavigationPolicyDecisionNavigationTypePropertyInfo where
    type AttrAllowedOps NavigationPolicyDecisionNavigationTypePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint NavigationPolicyDecisionNavigationTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint NavigationPolicyDecisionNavigationTypePropertyInfo = NavigationPolicyDecisionK
    type AttrGetType NavigationPolicyDecisionNavigationTypePropertyInfo = NavigationType
    type AttrLabel NavigationPolicyDecisionNavigationTypePropertyInfo = "NavigationPolicyDecision::navigation-type"
    attrGet _ = getNavigationPolicyDecisionNavigationType
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "request"
   -- Type: TInterface "WebKit2" "URIRequest"
   -- Flags: [PropertyReadable]

getNavigationPolicyDecisionRequest :: (MonadIO m, NavigationPolicyDecisionK o) => o -> m URIRequest
getNavigationPolicyDecisionRequest obj = liftIO $ getObjectPropertyObject obj "request" URIRequest

data NavigationPolicyDecisionRequestPropertyInfo
instance AttrInfo NavigationPolicyDecisionRequestPropertyInfo where
    type AttrAllowedOps NavigationPolicyDecisionRequestPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint NavigationPolicyDecisionRequestPropertyInfo = (~) ()
    type AttrBaseTypeConstraint NavigationPolicyDecisionRequestPropertyInfo = NavigationPolicyDecisionK
    type AttrGetType NavigationPolicyDecisionRequestPropertyInfo = URIRequest
    type AttrLabel NavigationPolicyDecisionRequestPropertyInfo = "NavigationPolicyDecision::request"
    attrGet _ = getNavigationPolicyDecisionRequest
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList NavigationPolicyDecision = NavigationPolicyDecisionAttributeList
type NavigationPolicyDecisionAttributeList = ('[ '("frame-name", NavigationPolicyDecisionFrameNamePropertyInfo), '("modifiers", NavigationPolicyDecisionModifiersPropertyInfo), '("mouse-button", NavigationPolicyDecisionMouseButtonPropertyInfo), '("navigation-action", NavigationPolicyDecisionNavigationActionPropertyInfo), '("navigation-type", NavigationPolicyDecisionNavigationTypePropertyInfo), '("request", NavigationPolicyDecisionRequestPropertyInfo)] :: [(Symbol, *)])

type instance SignalList NavigationPolicyDecision = NavigationPolicyDecisionSignalList
type NavigationPolicyDecisionSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method NavigationPolicyDecision::get_frame_name
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False

foreign import ccall "webkit_navigation_policy_decision_get_frame_name" webkit_navigation_policy_decision_get_frame_name :: 
    Ptr NavigationPolicyDecision ->         -- _obj : TInterface "WebKit2" "NavigationPolicyDecision"
    IO CString


navigationPolicyDecisionGetFrameName ::
    (MonadIO m, NavigationPolicyDecisionK a) =>
    a ->                                    -- _obj
    m T.Text
navigationPolicyDecisionGetFrameName _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_navigation_policy_decision_get_frame_name _obj'
    checkUnexpectedReturnNULL "webkit_navigation_policy_decision_get_frame_name" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

-- method NavigationPolicyDecision::get_modifiers
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "webkit_navigation_policy_decision_get_modifiers" webkit_navigation_policy_decision_get_modifiers :: 
    Ptr NavigationPolicyDecision ->         -- _obj : TInterface "WebKit2" "NavigationPolicyDecision"
    IO Word32

{-# DEPRECATED navigationPolicyDecisionGetModifiers ["(Since version 2.6)","Use webkit_navigation_policy_decision_get_navigation_action() instead."]#-}
navigationPolicyDecisionGetModifiers ::
    (MonadIO m, NavigationPolicyDecisionK a) =>
    a ->                                    -- _obj
    m Word32
navigationPolicyDecisionGetModifiers _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_navigation_policy_decision_get_modifiers _obj'
    touchManagedPtr _obj
    return result

-- method NavigationPolicyDecision::get_mouse_button
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "webkit_navigation_policy_decision_get_mouse_button" webkit_navigation_policy_decision_get_mouse_button :: 
    Ptr NavigationPolicyDecision ->         -- _obj : TInterface "WebKit2" "NavigationPolicyDecision"
    IO Word32

{-# DEPRECATED navigationPolicyDecisionGetMouseButton ["(Since version 2.6)","Use webkit_navigation_policy_decision_get_navigation_action() instead."]#-}
navigationPolicyDecisionGetMouseButton ::
    (MonadIO m, NavigationPolicyDecisionK a) =>
    a ->                                    -- _obj
    m Word32
navigationPolicyDecisionGetMouseButton _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_navigation_policy_decision_get_mouse_button _obj'
    touchManagedPtr _obj
    return result

-- method NavigationPolicyDecision::get_navigation_action
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "WebKit2" "NavigationAction"
-- throws : False
-- Skip return : False

foreign import ccall "webkit_navigation_policy_decision_get_navigation_action" webkit_navigation_policy_decision_get_navigation_action :: 
    Ptr NavigationPolicyDecision ->         -- _obj : TInterface "WebKit2" "NavigationPolicyDecision"
    IO (Ptr NavigationAction)


navigationPolicyDecisionGetNavigationAction ::
    (MonadIO m, NavigationPolicyDecisionK a) =>
    a ->                                    -- _obj
    m NavigationAction
navigationPolicyDecisionGetNavigationAction _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_navigation_policy_decision_get_navigation_action _obj'
    checkUnexpectedReturnNULL "webkit_navigation_policy_decision_get_navigation_action" result
    result' <- (newBoxed NavigationAction) result
    touchManagedPtr _obj
    return result'

-- method NavigationPolicyDecision::get_navigation_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "WebKit2" "NavigationType"
-- throws : False
-- Skip return : False

foreign import ccall "webkit_navigation_policy_decision_get_navigation_type" webkit_navigation_policy_decision_get_navigation_type :: 
    Ptr NavigationPolicyDecision ->         -- _obj : TInterface "WebKit2" "NavigationPolicyDecision"
    IO CUInt

{-# DEPRECATED navigationPolicyDecisionGetNavigationType ["(Since version 2.6)","Use webkit_navigation_policy_decision_get_navigation_action() instead."]#-}
navigationPolicyDecisionGetNavigationType ::
    (MonadIO m, NavigationPolicyDecisionK a) =>
    a ->                                    -- _obj
    m NavigationType
navigationPolicyDecisionGetNavigationType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_navigation_policy_decision_get_navigation_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method NavigationPolicyDecision::get_request
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "WebKit2" "NavigationPolicyDecision", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "WebKit2" "URIRequest"
-- throws : False
-- Skip return : False

foreign import ccall "webkit_navigation_policy_decision_get_request" webkit_navigation_policy_decision_get_request :: 
    Ptr NavigationPolicyDecision ->         -- _obj : TInterface "WebKit2" "NavigationPolicyDecision"
    IO (Ptr URIRequest)

{-# DEPRECATED navigationPolicyDecisionGetRequest ["(Since version 2.6)","Use webkit_navigation_policy_decision_get_navigation_action() instead."]#-}
navigationPolicyDecisionGetRequest ::
    (MonadIO m, NavigationPolicyDecisionK a) =>
    a ->                                    -- _obj
    m URIRequest
navigationPolicyDecisionGetRequest _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- webkit_navigation_policy_decision_get_request _obj'
    checkUnexpectedReturnNULL "webkit_navigation_policy_decision_get_request" result
    result' <- (newObject URIRequest) result
    touchManagedPtr _obj
    return result'