{- |
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.WebNavigationAction.WebNavigationAction' is used in signals to provide details about
what led the navigation to happen. This includes, for instance, if the user
clicked a link to start that navigation, and what mouse button was used.
-}

module GI.WebKit.Objects.WebNavigationAction
    ( 

-- * Exported types
    WebNavigationAction(..)                 ,
    IsWebNavigationAction                   ,
    toWebNavigationAction                   ,
    noWebNavigationAction                   ,


 -- * Methods
-- ** getButton #method:getButton#
    WebNavigationActionGetButtonMethodInfo  ,
    webNavigationActionGetButton            ,


-- ** getModifierState #method:getModifierState#
    WebNavigationActionGetModifierStateMethodInfo,
    webNavigationActionGetModifierState     ,


-- ** getOriginalUri #method:getOriginalUri#
    WebNavigationActionGetOriginalUriMethodInfo,
    webNavigationActionGetOriginalUri       ,


-- ** getReason #method:getReason#
    WebNavigationActionGetReasonMethodInfo  ,
    webNavigationActionGetReason            ,


-- ** getTargetFrame #method:getTargetFrame#
    WebNavigationActionGetTargetFrameMethodInfo,
    webNavigationActionGetTargetFrame       ,


-- ** setOriginalUri #method:setOriginalUri#
    WebNavigationActionSetOriginalUriMethodInfo,
    webNavigationActionSetOriginalUri       ,


-- ** setReason #method:setReason#
    WebNavigationActionSetReasonMethodInfo  ,
    webNavigationActionSetReason            ,




 -- * Properties
-- ** button #attr:button#
    WebNavigationActionButtonPropertyInfo   ,
    constructWebNavigationActionButton      ,
    getWebNavigationActionButton            ,
    webNavigationActionButton               ,


-- ** modifierState #attr:modifierState#
    WebNavigationActionModifierStatePropertyInfo,
    constructWebNavigationActionModifierState,
    getWebNavigationActionModifierState     ,
    webNavigationActionModifierState        ,


-- ** originalUri #attr:originalUri#
    WebNavigationActionOriginalUriPropertyInfo,
    constructWebNavigationActionOriginalUri ,
    getWebNavigationActionOriginalUri       ,
    setWebNavigationActionOriginalUri       ,
    webNavigationActionOriginalUri          ,


-- ** reason #attr:reason#
    WebNavigationActionReasonPropertyInfo   ,
    constructWebNavigationActionReason      ,
    getWebNavigationActionReason            ,
    setWebNavigationActionReason            ,
    webNavigationActionReason               ,


-- ** targetFrame #attr:targetFrame#
    WebNavigationActionTargetFramePropertyInfo,
    constructWebNavigationActionTargetFrame ,
    getWebNavigationActionTargetFrame       ,
    webNavigationActionTargetFrame          ,




    ) 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.WebKit.Enums as WebKit.Enums

newtype WebNavigationAction = WebNavigationAction (ManagedPtr WebNavigationAction)
foreign import ccall "webkit_web_navigation_action_get_type"
    c_webkit_web_navigation_action_get_type :: IO GType

instance GObject WebNavigationAction where
    gobjectType _ = c_webkit_web_navigation_action_get_type
    

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

toWebNavigationAction :: IsWebNavigationAction o => o -> IO WebNavigationAction
toWebNavigationAction = unsafeCastTo WebNavigationAction

noWebNavigationAction :: Maybe WebNavigationAction
noWebNavigationAction = Nothing

type family ResolveWebNavigationActionMethod (t :: Symbol) (o :: *) :: * where
    ResolveWebNavigationActionMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveWebNavigationActionMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveWebNavigationActionMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveWebNavigationActionMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveWebNavigationActionMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveWebNavigationActionMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveWebNavigationActionMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveWebNavigationActionMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveWebNavigationActionMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveWebNavigationActionMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveWebNavigationActionMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveWebNavigationActionMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveWebNavigationActionMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveWebNavigationActionMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveWebNavigationActionMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveWebNavigationActionMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveWebNavigationActionMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveWebNavigationActionMethod "getButton" o = WebNavigationActionGetButtonMethodInfo
    ResolveWebNavigationActionMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveWebNavigationActionMethod "getModifierState" o = WebNavigationActionGetModifierStateMethodInfo
    ResolveWebNavigationActionMethod "getOriginalUri" o = WebNavigationActionGetOriginalUriMethodInfo
    ResolveWebNavigationActionMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveWebNavigationActionMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveWebNavigationActionMethod "getReason" o = WebNavigationActionGetReasonMethodInfo
    ResolveWebNavigationActionMethod "getTargetFrame" o = WebNavigationActionGetTargetFrameMethodInfo
    ResolveWebNavigationActionMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveWebNavigationActionMethod "setOriginalUri" o = WebNavigationActionSetOriginalUriMethodInfo
    ResolveWebNavigationActionMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveWebNavigationActionMethod "setReason" o = WebNavigationActionSetReasonMethodInfo
    ResolveWebNavigationActionMethod l o = O.MethodResolutionFailed l o

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

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

-- VVV Prop "button"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just False,Nothing)

getWebNavigationActionButton :: (MonadIO m, IsWebNavigationAction o) => o -> m Int32
getWebNavigationActionButton obj = liftIO $ getObjectPropertyInt32 obj "button"

constructWebNavigationActionButton :: (IsWebNavigationAction o) => Int32 -> IO (GValueConstruct o)
constructWebNavigationActionButton val = constructObjectPropertyInt32 "button" val

data WebNavigationActionButtonPropertyInfo
instance AttrInfo WebNavigationActionButtonPropertyInfo where
    type AttrAllowedOps WebNavigationActionButtonPropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebNavigationActionButtonPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WebNavigationActionButtonPropertyInfo = IsWebNavigationAction
    type AttrGetType WebNavigationActionButtonPropertyInfo = Int32
    type AttrLabel WebNavigationActionButtonPropertyInfo = "button"
    type AttrOrigin WebNavigationActionButtonPropertyInfo = WebNavigationAction
    attrGet _ = getWebNavigationActionButton
    attrSet _ = undefined
    attrConstruct _ = constructWebNavigationActionButton
    attrClear _ = undefined

-- VVV Prop "modifier-state"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just False,Nothing)

getWebNavigationActionModifierState :: (MonadIO m, IsWebNavigationAction o) => o -> m Int32
getWebNavigationActionModifierState obj = liftIO $ getObjectPropertyInt32 obj "modifier-state"

constructWebNavigationActionModifierState :: (IsWebNavigationAction o) => Int32 -> IO (GValueConstruct o)
constructWebNavigationActionModifierState val = constructObjectPropertyInt32 "modifier-state" val

data WebNavigationActionModifierStatePropertyInfo
instance AttrInfo WebNavigationActionModifierStatePropertyInfo where
    type AttrAllowedOps WebNavigationActionModifierStatePropertyInfo = '[ 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebNavigationActionModifierStatePropertyInfo = (~) Int32
    type AttrBaseTypeConstraint WebNavigationActionModifierStatePropertyInfo = IsWebNavigationAction
    type AttrGetType WebNavigationActionModifierStatePropertyInfo = Int32
    type AttrLabel WebNavigationActionModifierStatePropertyInfo = "modifier-state"
    type AttrOrigin WebNavigationActionModifierStatePropertyInfo = WebNavigationAction
    attrGet _ = getWebNavigationActionModifierState
    attrSet _ = undefined
    attrConstruct _ = constructWebNavigationActionModifierState
    attrClear _ = undefined

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

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

setWebNavigationActionOriginalUri :: (MonadIO m, IsWebNavigationAction o) => o -> T.Text -> m ()
setWebNavigationActionOriginalUri obj val = liftIO $ setObjectPropertyString obj "original-uri" (Just val)

constructWebNavigationActionOriginalUri :: (IsWebNavigationAction o) => T.Text -> IO (GValueConstruct o)
constructWebNavigationActionOriginalUri val = constructObjectPropertyString "original-uri" (Just val)

data WebNavigationActionOriginalUriPropertyInfo
instance AttrInfo WebNavigationActionOriginalUriPropertyInfo where
    type AttrAllowedOps WebNavigationActionOriginalUriPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebNavigationActionOriginalUriPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WebNavigationActionOriginalUriPropertyInfo = IsWebNavigationAction
    type AttrGetType WebNavigationActionOriginalUriPropertyInfo = T.Text
    type AttrLabel WebNavigationActionOriginalUriPropertyInfo = "original-uri"
    type AttrOrigin WebNavigationActionOriginalUriPropertyInfo = WebNavigationAction
    attrGet _ = getWebNavigationActionOriginalUri
    attrSet _ = setWebNavigationActionOriginalUri
    attrConstruct _ = constructWebNavigationActionOriginalUri
    attrClear _ = undefined

-- VVV Prop "reason"
   -- Type: TInterface (Name {namespace = "WebKit", name = "WebNavigationReason"})
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Just False,Just False)

getWebNavigationActionReason :: (MonadIO m, IsWebNavigationAction o) => o -> m WebKit.Enums.WebNavigationReason
getWebNavigationActionReason obj = liftIO $ getObjectPropertyEnum obj "reason"

setWebNavigationActionReason :: (MonadIO m, IsWebNavigationAction o) => o -> WebKit.Enums.WebNavigationReason -> m ()
setWebNavigationActionReason obj val = liftIO $ setObjectPropertyEnum obj "reason" val

constructWebNavigationActionReason :: (IsWebNavigationAction o) => WebKit.Enums.WebNavigationReason -> IO (GValueConstruct o)
constructWebNavigationActionReason val = constructObjectPropertyEnum "reason" val

data WebNavigationActionReasonPropertyInfo
instance AttrInfo WebNavigationActionReasonPropertyInfo where
    type AttrAllowedOps WebNavigationActionReasonPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint WebNavigationActionReasonPropertyInfo = (~) WebKit.Enums.WebNavigationReason
    type AttrBaseTypeConstraint WebNavigationActionReasonPropertyInfo = IsWebNavigationAction
    type AttrGetType WebNavigationActionReasonPropertyInfo = WebKit.Enums.WebNavigationReason
    type AttrLabel WebNavigationActionReasonPropertyInfo = "reason"
    type AttrOrigin WebNavigationActionReasonPropertyInfo = WebNavigationAction
    attrGet _ = getWebNavigationActionReason
    attrSet _ = setWebNavigationActionReason
    attrConstruct _ = constructWebNavigationActionReason
    attrClear _ = undefined

-- VVV Prop "target-frame"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Just False,Nothing)

getWebNavigationActionTargetFrame :: (MonadIO m, IsWebNavigationAction o) => o -> m T.Text
getWebNavigationActionTargetFrame obj = liftIO $ checkUnexpectedNothing "getWebNavigationActionTargetFrame" $ getObjectPropertyString obj "target-frame"

constructWebNavigationActionTargetFrame :: (IsWebNavigationAction o) => T.Text -> IO (GValueConstruct o)
constructWebNavigationActionTargetFrame val = constructObjectPropertyString "target-frame" (Just val)

data WebNavigationActionTargetFramePropertyInfo
instance AttrInfo WebNavigationActionTargetFramePropertyInfo where
    type AttrAllowedOps WebNavigationActionTargetFramePropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint WebNavigationActionTargetFramePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint WebNavigationActionTargetFramePropertyInfo = IsWebNavigationAction
    type AttrGetType WebNavigationActionTargetFramePropertyInfo = T.Text
    type AttrLabel WebNavigationActionTargetFramePropertyInfo = "target-frame"
    type AttrOrigin WebNavigationActionTargetFramePropertyInfo = WebNavigationAction
    attrGet _ = getWebNavigationActionTargetFrame
    attrSet _ = undefined
    attrConstruct _ = constructWebNavigationActionTargetFrame
    attrClear _ = undefined

instance O.HasAttributeList WebNavigationAction
type instance O.AttributeList WebNavigationAction = WebNavigationActionAttributeList
type WebNavigationActionAttributeList = ('[ '("button", WebNavigationActionButtonPropertyInfo), '("modifierState", WebNavigationActionModifierStatePropertyInfo), '("originalUri", WebNavigationActionOriginalUriPropertyInfo), '("reason", WebNavigationActionReasonPropertyInfo), '("targetFrame", WebNavigationActionTargetFramePropertyInfo)] :: [(Symbol, *)])

webNavigationActionButton :: AttrLabelProxy "button"
webNavigationActionButton = AttrLabelProxy

webNavigationActionModifierState :: AttrLabelProxy "modifierState"
webNavigationActionModifierState = AttrLabelProxy

webNavigationActionOriginalUri :: AttrLabelProxy "originalUri"
webNavigationActionOriginalUri = AttrLabelProxy

webNavigationActionReason :: AttrLabelProxy "reason"
webNavigationActionReason = AttrLabelProxy

webNavigationActionTargetFrame :: AttrLabelProxy "targetFrame"
webNavigationActionTargetFrame = AttrLabelProxy

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

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

foreign import ccall "webkit_web_navigation_action_get_button" webkit_web_navigation_action_get_button :: 
    Ptr WebNavigationAction ->              -- navigationAction : TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"})
    IO Int32

{- |
The GTK+ identifier for the mouse button used to click. Notice that GTK+ button values
are 1, 2 and 3 for left, middle and right buttons, so they are DOM button values +1. If the action was not
initiated by a mouse click the value will be -1.

@since 1.0.3
-}
webNavigationActionGetButton ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebNavigationAction a) =>
    a
    {- ^ /@navigationAction@/: a 'GI.WebKit.Objects.WebNavigationAction.WebNavigationAction' -}
    -> m Int32
    {- ^ __Returns:__ the mouse button used to click -}
webNavigationActionGetButton navigationAction = liftIO $ do
    navigationAction' <- unsafeManagedPtrCastPtr navigationAction
    result <- webkit_web_navigation_action_get_button navigationAction'
    touchManagedPtr navigationAction
    return result

data WebNavigationActionGetButtonMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsWebNavigationAction a) => O.MethodInfo WebNavigationActionGetButtonMethodInfo a signature where
    overloadedMethod _ = webNavigationActionGetButton

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

foreign import ccall "webkit_web_navigation_action_get_modifier_state" webkit_web_navigation_action_get_modifier_state :: 
    Ptr WebNavigationAction ->              -- navigationAction : TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"})
    IO Int32

{- |
Returns a bitmask with the the state of the modifier keys.

@since 1.0.3
-}
webNavigationActionGetModifierState ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebNavigationAction a) =>
    a
    {- ^ /@navigationAction@/: a 'GI.WebKit.Objects.WebNavigationAction.WebNavigationAction' -}
    -> m Int32
    {- ^ __Returns:__ a bitmask with the state of the modifier keys -}
webNavigationActionGetModifierState navigationAction = liftIO $ do
    navigationAction' <- unsafeManagedPtrCastPtr navigationAction
    result <- webkit_web_navigation_action_get_modifier_state navigationAction'
    touchManagedPtr navigationAction
    return result

data WebNavigationActionGetModifierStateMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsWebNavigationAction a) => O.MethodInfo WebNavigationActionGetModifierStateMethodInfo a signature where
    overloadedMethod _ = webNavigationActionGetModifierState

-- method WebNavigationAction::get_original_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "navigationAction", argType = TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebNavigationAction", 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_navigation_action_get_original_uri" webkit_web_navigation_action_get_original_uri :: 
    Ptr WebNavigationAction ->              -- navigationAction : TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"})
    IO CString

{- |
Returns the URI that was originally requested. This may differ from the
navigation target, for instance because of a redirect.

@since 1.0.3
-}
webNavigationActionGetOriginalUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebNavigationAction a) =>
    a
    {- ^ /@navigationAction@/: a 'GI.WebKit.Objects.WebNavigationAction.WebNavigationAction' -}
    -> m T.Text
    {- ^ __Returns:__ the originally requested URI -}
webNavigationActionGetOriginalUri navigationAction = liftIO $ do
    navigationAction' <- unsafeManagedPtrCastPtr navigationAction
    result <- webkit_web_navigation_action_get_original_uri navigationAction'
    checkUnexpectedReturnNULL "webNavigationActionGetOriginalUri" result
    result' <- cstringToText result
    touchManagedPtr navigationAction
    return result'

data WebNavigationActionGetOriginalUriMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsWebNavigationAction a) => O.MethodInfo WebNavigationActionGetOriginalUriMethodInfo a signature where
    overloadedMethod _ = webNavigationActionGetOriginalUri

-- method WebNavigationAction::get_reason
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "navigationAction", argType = TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebNavigationAction", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "WebKit", name = "WebNavigationReason"}))
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_navigation_action_get_reason" webkit_web_navigation_action_get_reason :: 
    Ptr WebNavigationAction ->              -- navigationAction : TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"})
    IO CUInt

{- |
Returns the reason why WebKit is requesting a navigation.

@since 1.0.3
-}
webNavigationActionGetReason ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebNavigationAction a) =>
    a
    {- ^ /@navigationAction@/: a 'GI.WebKit.Objects.WebNavigationAction.WebNavigationAction' -}
    -> m WebKit.Enums.WebNavigationReason
    {- ^ __Returns:__ a 'GI.WebKit.Enums.WebNavigationReason' -}
webNavigationActionGetReason navigationAction = liftIO $ do
    navigationAction' <- unsafeManagedPtrCastPtr navigationAction
    result <- webkit_web_navigation_action_get_reason navigationAction'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr navigationAction
    return result'

data WebNavigationActionGetReasonMethodInfo
instance (signature ~ (m WebKit.Enums.WebNavigationReason), MonadIO m, IsWebNavigationAction a) => O.MethodInfo WebNavigationActionGetReasonMethodInfo a signature where
    overloadedMethod _ = webNavigationActionGetReason

-- method WebNavigationAction::get_target_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "navigationAction", argType = TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebNavigationAction", 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_navigation_action_get_target_frame" webkit_web_navigation_action_get_target_frame :: 
    Ptr WebNavigationAction ->              -- navigationAction : TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"})
    IO CString

{- |
Returns the target frame of the action.

@since 1.1.13
-}
webNavigationActionGetTargetFrame ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebNavigationAction a) =>
    a
    {- ^ /@navigationAction@/: a 'GI.WebKit.Objects.WebNavigationAction.WebNavigationAction' -}
    -> m T.Text
    {- ^ __Returns:__ the target frame of the action or NULL
if there is no target. -}
webNavigationActionGetTargetFrame navigationAction = liftIO $ do
    navigationAction' <- unsafeManagedPtrCastPtr navigationAction
    result <- webkit_web_navigation_action_get_target_frame navigationAction'
    checkUnexpectedReturnNULL "webNavigationActionGetTargetFrame" result
    result' <- cstringToText result
    touchManagedPtr navigationAction
    return result'

data WebNavigationActionGetTargetFrameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsWebNavigationAction a) => O.MethodInfo WebNavigationActionGetTargetFrameMethodInfo a signature where
    overloadedMethod _ = webNavigationActionGetTargetFrame

-- method WebNavigationAction::set_original_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "navigationAction", argType = TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebNavigationAction", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "originalUri", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a URI", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_navigation_action_set_original_uri" webkit_web_navigation_action_set_original_uri :: 
    Ptr WebNavigationAction ->              -- navigationAction : TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"})
    CString ->                              -- originalUri : TBasicType TUTF8
    IO ()

{- |
Sets the URI that was originally requested. This may differ from the
navigation target, for instance because of a redirect.

@since 1.0.3
-}
webNavigationActionSetOriginalUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebNavigationAction a) =>
    a
    {- ^ /@navigationAction@/: a 'GI.WebKit.Objects.WebNavigationAction.WebNavigationAction' -}
    -> T.Text
    {- ^ /@originalUri@/: a URI -}
    -> m ()
webNavigationActionSetOriginalUri navigationAction originalUri = liftIO $ do
    navigationAction' <- unsafeManagedPtrCastPtr navigationAction
    originalUri' <- textToCString originalUri
    webkit_web_navigation_action_set_original_uri navigationAction' originalUri'
    touchManagedPtr navigationAction
    freeMem originalUri'
    return ()

data WebNavigationActionSetOriginalUriMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsWebNavigationAction a) => O.MethodInfo WebNavigationActionSetOriginalUriMethodInfo a signature where
    overloadedMethod _ = webNavigationActionSetOriginalUri

-- method WebNavigationAction::set_reason
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "navigationAction", argType = TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebNavigationAction", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "reason", argType = TInterface (Name {namespace = "WebKit", name = "WebNavigationReason"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #WebKitWebNavigationReason", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "webkit_web_navigation_action_set_reason" webkit_web_navigation_action_set_reason :: 
    Ptr WebNavigationAction ->              -- navigationAction : TInterface (Name {namespace = "WebKit", name = "WebNavigationAction"})
    CUInt ->                                -- reason : TInterface (Name {namespace = "WebKit", name = "WebNavigationReason"})
    IO ()

{- |
Sets the reason why WebKit is requesting a navigation.

@since 1.0.3
-}
webNavigationActionSetReason ::
    (B.CallStack.HasCallStack, MonadIO m, IsWebNavigationAction a) =>
    a
    {- ^ /@navigationAction@/: a 'GI.WebKit.Objects.WebNavigationAction.WebNavigationAction' -}
    -> WebKit.Enums.WebNavigationReason
    {- ^ /@reason@/: a 'GI.WebKit.Enums.WebNavigationReason' -}
    -> m ()
webNavigationActionSetReason navigationAction reason = liftIO $ do
    navigationAction' <- unsafeManagedPtrCastPtr navigationAction
    let reason' = (fromIntegral . fromEnum) reason
    webkit_web_navigation_action_set_reason navigationAction' reason'
    touchManagedPtr navigationAction
    return ()

data WebNavigationActionSetReasonMethodInfo
instance (signature ~ (WebKit.Enums.WebNavigationReason -> m ()), MonadIO m, IsWebNavigationAction a) => O.MethodInfo WebNavigationActionSetReasonMethodInfo a signature where
    overloadedMethod _ = webNavigationActionSetReason