{-# 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.Structs.NavigationAction
    ( 

-- * Exported types
    NavigationAction(..)                    ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [copy]("GI.WebKit2.Structs.NavigationAction#g:method:copy"), [free]("GI.WebKit2.Structs.NavigationAction#g:method:free"), [isRedirect]("GI.WebKit2.Structs.NavigationAction#g:method:isRedirect"), [isUserGesture]("GI.WebKit2.Structs.NavigationAction#g:method:isUserGesture").
-- 
-- ==== Getters
-- [getModifiers]("GI.WebKit2.Structs.NavigationAction#g:method:getModifiers"), [getMouseButton]("GI.WebKit2.Structs.NavigationAction#g:method:getMouseButton"), [getNavigationType]("GI.WebKit2.Structs.NavigationAction#g:method:getNavigationType"), [getRequest]("GI.WebKit2.Structs.NavigationAction#g:method:getRequest").
-- 
-- ==== Setters
-- /None/.

#if defined(ENABLE_OVERLOADING)
    ResolveNavigationActionMethod           ,
#endif

-- ** copy #method:copy#

#if defined(ENABLE_OVERLOADING)
    NavigationActionCopyMethodInfo          ,
#endif
    navigationActionCopy                    ,


-- ** free #method:free#

#if defined(ENABLE_OVERLOADING)
    NavigationActionFreeMethodInfo          ,
#endif
    navigationActionFree                    ,


-- ** getModifiers #method:getModifiers#

#if defined(ENABLE_OVERLOADING)
    NavigationActionGetModifiersMethodInfo  ,
#endif
    navigationActionGetModifiers            ,


-- ** getMouseButton #method:getMouseButton#

#if defined(ENABLE_OVERLOADING)
    NavigationActionGetMouseButtonMethodInfo,
#endif
    navigationActionGetMouseButton          ,


-- ** getNavigationType #method:getNavigationType#

#if defined(ENABLE_OVERLOADING)
    NavigationActionGetNavigationTypeMethodInfo,
#endif
    navigationActionGetNavigationType       ,


-- ** getRequest #method:getRequest#

#if defined(ENABLE_OVERLOADING)
    NavigationActionGetRequestMethodInfo    ,
#endif
    navigationActionGetRequest              ,


-- ** isRedirect #method:isRedirect#

#if defined(ENABLE_OVERLOADING)
    NavigationActionIsRedirectMethodInfo    ,
#endif
    navigationActionIsRedirect              ,


-- ** isUserGesture #method:isUserGesture#

#if defined(ENABLE_OVERLOADING)
    NavigationActionIsUserGestureMethodInfo ,
#endif
    navigationActionIsUserGesture           ,




    ) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
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 Control.Monad.IO.Class as MIO
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 GHC.Records as R

import {-# SOURCE #-} qualified GI.WebKit2.Enums as WebKit2.Enums
import {-# SOURCE #-} qualified GI.WebKit2.Objects.URIRequest as WebKit2.URIRequest

-- | Memory-managed wrapper type.
newtype NavigationAction = NavigationAction (SP.ManagedPtr NavigationAction)
    deriving (NavigationAction -> NavigationAction -> Bool
(NavigationAction -> NavigationAction -> Bool)
-> (NavigationAction -> NavigationAction -> Bool)
-> Eq NavigationAction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NavigationAction -> NavigationAction -> Bool
$c/= :: NavigationAction -> NavigationAction -> Bool
== :: NavigationAction -> NavigationAction -> Bool
$c== :: NavigationAction -> NavigationAction -> Bool
Eq)

instance SP.ManagedPtrNewtype NavigationAction where
    toManagedPtr :: NavigationAction -> ManagedPtr NavigationAction
toManagedPtr (NavigationAction ManagedPtr NavigationAction
p) = ManagedPtr NavigationAction
p

foreign import ccall "webkit_navigation_action_get_type" c_webkit_navigation_action_get_type :: 
    IO GType

type instance O.ParentTypes NavigationAction = '[]
instance O.HasParentTypes NavigationAction

instance B.Types.TypedObject NavigationAction where
    glibType :: IO GType
glibType = IO GType
c_webkit_navigation_action_get_type

instance B.Types.GBoxed NavigationAction

-- | Convert 'NavigationAction' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe NavigationAction) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_webkit_navigation_action_get_type
    gvalueSet_ :: Ptr GValue -> Maybe NavigationAction -> IO ()
gvalueSet_ Ptr GValue
gv Maybe NavigationAction
P.Nothing = Ptr GValue -> Ptr NavigationAction -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr NavigationAction
forall a. Ptr a
FP.nullPtr :: FP.Ptr NavigationAction)
    gvalueSet_ Ptr GValue
gv (P.Just NavigationAction
obj) = NavigationAction -> (Ptr NavigationAction -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr NavigationAction
obj (Ptr GValue -> Ptr NavigationAction -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe NavigationAction)
gvalueGet_ Ptr GValue
gv = do
        Ptr NavigationAction
ptr <- Ptr GValue -> IO (Ptr NavigationAction)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr NavigationAction)
        if Ptr NavigationAction
ptr Ptr NavigationAction -> Ptr NavigationAction -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr NavigationAction
forall a. Ptr a
FP.nullPtr
        then NavigationAction -> Maybe NavigationAction
forall a. a -> Maybe a
P.Just (NavigationAction -> Maybe NavigationAction)
-> IO NavigationAction -> IO (Maybe NavigationAction)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr NavigationAction -> NavigationAction)
-> Ptr NavigationAction -> IO NavigationAction
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr NavigationAction -> NavigationAction
NavigationAction Ptr NavigationAction
ptr
        else Maybe NavigationAction -> IO (Maybe NavigationAction)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe NavigationAction
forall a. Maybe a
P.Nothing
        
    


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

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

foreign import ccall "webkit_navigation_action_copy" webkit_navigation_action_copy :: 
    Ptr NavigationAction ->                 -- navigation : TInterface (Name {namespace = "WebKit2", name = "NavigationAction"})
    IO (Ptr NavigationAction)

-- | Make a copy of /@navigation@/.
-- 
-- /Since: 2.6/
navigationActionCopy ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    NavigationAction
    -- ^ /@navigation@/: a t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
    -> m NavigationAction
    -- ^ __Returns:__ A copy of passed in t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
navigationActionCopy :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
NavigationAction -> m NavigationAction
navigationActionCopy NavigationAction
navigation = IO NavigationAction -> m NavigationAction
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO NavigationAction -> m NavigationAction)
-> IO NavigationAction -> m NavigationAction
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationAction
navigation' <- NavigationAction -> IO (Ptr NavigationAction)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr NavigationAction
navigation
    Ptr NavigationAction
result <- Ptr NavigationAction -> IO (Ptr NavigationAction)
webkit_navigation_action_copy Ptr NavigationAction
navigation'
    Text -> Ptr NavigationAction -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"navigationActionCopy" Ptr NavigationAction
result
    NavigationAction
result' <- ((ManagedPtr NavigationAction -> NavigationAction)
-> Ptr NavigationAction -> IO NavigationAction
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr NavigationAction -> NavigationAction
NavigationAction) Ptr NavigationAction
result
    NavigationAction -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr NavigationAction
navigation
    NavigationAction -> IO NavigationAction
forall (m :: * -> *) a. Monad m => a -> m a
return NavigationAction
result'

#if defined(ENABLE_OVERLOADING)
data NavigationActionCopyMethodInfo
instance (signature ~ (m NavigationAction), MonadIO m) => O.OverloadedMethod NavigationActionCopyMethodInfo NavigationAction signature where
    overloadedMethod = navigationActionCopy

instance O.OverloadedMethodInfo NavigationActionCopyMethodInfo NavigationAction where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.NavigationAction.navigationActionCopy",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-NavigationAction.html#v:navigationActionCopy"
        }


#endif

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

foreign import ccall "webkit_navigation_action_free" webkit_navigation_action_free :: 
    Ptr NavigationAction ->                 -- navigation : TInterface (Name {namespace = "WebKit2", name = "NavigationAction"})
    IO ()

-- | Free the t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
-- 
-- /Since: 2.6/
navigationActionFree ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    NavigationAction
    -- ^ /@navigation@/: a t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
    -> m ()
navigationActionFree :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
NavigationAction -> m ()
navigationActionFree NavigationAction
navigation = 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 NavigationAction
navigation' <- NavigationAction -> IO (Ptr NavigationAction)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr NavigationAction
navigation
    Ptr NavigationAction -> IO ()
webkit_navigation_action_free Ptr NavigationAction
navigation'
    NavigationAction -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr NavigationAction
navigation
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data NavigationActionFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod NavigationActionFreeMethodInfo NavigationAction signature where
    overloadedMethod = navigationActionFree

instance O.OverloadedMethodInfo NavigationActionFreeMethodInfo NavigationAction where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.NavigationAction.navigationActionFree",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-NavigationAction.html#v:navigationActionFree"
        }


#endif

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

foreign import ccall "webkit_navigation_action_get_modifiers" webkit_navigation_action_get_modifiers :: 
    Ptr NavigationAction ->                 -- navigation : TInterface (Name {namespace = "WebKit2", name = "NavigationAction"})
    IO Word32

-- | Return a bitmask of t'GI.Gdk.Flags.ModifierType' values describing the modifier keys that were in effect
-- when the navigation was requested
-- 
-- /Since: 2.6/
navigationActionGetModifiers ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    NavigationAction
    -- ^ /@navigation@/: a t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
    -> m Word32
    -- ^ __Returns:__ the modifier keys
navigationActionGetModifiers :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
NavigationAction -> m Word32
navigationActionGetModifiers NavigationAction
navigation = IO Word32 -> m Word32
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationAction
navigation' <- NavigationAction -> IO (Ptr NavigationAction)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr NavigationAction
navigation
    Word32
result <- Ptr NavigationAction -> IO Word32
webkit_navigation_action_get_modifiers Ptr NavigationAction
navigation'
    NavigationAction -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr NavigationAction
navigation
    Word32 -> IO Word32
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data NavigationActionGetModifiersMethodInfo
instance (signature ~ (m Word32), MonadIO m) => O.OverloadedMethod NavigationActionGetModifiersMethodInfo NavigationAction signature where
    overloadedMethod = navigationActionGetModifiers

instance O.OverloadedMethodInfo NavigationActionGetModifiersMethodInfo NavigationAction where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.NavigationAction.navigationActionGetModifiers",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-NavigationAction.html#v:navigationActionGetModifiers"
        }


#endif

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

foreign import ccall "webkit_navigation_action_get_mouse_button" webkit_navigation_action_get_mouse_button :: 
    Ptr NavigationAction ->                 -- navigation : TInterface (Name {namespace = "WebKit2", name = "NavigationAction"})
    IO Word32

-- | Return the number of the mouse button that triggered the navigation, or 0 if
-- the navigation was not started by a mouse event.
-- 
-- /Since: 2.6/
navigationActionGetMouseButton ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    NavigationAction
    -- ^ /@navigation@/: a t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
    -> m Word32
    -- ^ __Returns:__ the mouse button number or 0
navigationActionGetMouseButton :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
NavigationAction -> m Word32
navigationActionGetMouseButton NavigationAction
navigation = IO Word32 -> m Word32
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationAction
navigation' <- NavigationAction -> IO (Ptr NavigationAction)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr NavigationAction
navigation
    Word32
result <- Ptr NavigationAction -> IO Word32
webkit_navigation_action_get_mouse_button Ptr NavigationAction
navigation'
    NavigationAction -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr NavigationAction
navigation
    Word32 -> IO Word32
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data NavigationActionGetMouseButtonMethodInfo
instance (signature ~ (m Word32), MonadIO m) => O.OverloadedMethod NavigationActionGetMouseButtonMethodInfo NavigationAction signature where
    overloadedMethod = navigationActionGetMouseButton

instance O.OverloadedMethodInfo NavigationActionGetMouseButtonMethodInfo NavigationAction where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.NavigationAction.navigationActionGetMouseButton",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-NavigationAction.html#v:navigationActionGetMouseButton"
        }


#endif

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

foreign import ccall "webkit_navigation_action_get_navigation_type" webkit_navigation_action_get_navigation_type :: 
    Ptr NavigationAction ->                 -- navigation : TInterface (Name {namespace = "WebKit2", name = "NavigationAction"})
    IO CUInt

-- | Return the type of action that triggered the navigation.
-- 
-- /Since: 2.6/
navigationActionGetNavigationType ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    NavigationAction
    -- ^ /@navigation@/: a t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
    -> m WebKit2.Enums.NavigationType
    -- ^ __Returns:__ a t'GI.WebKit2.Enums.NavigationType'
navigationActionGetNavigationType :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
NavigationAction -> m NavigationType
navigationActionGetNavigationType NavigationAction
navigation = IO NavigationType -> m NavigationType
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO NavigationType -> m NavigationType)
-> IO NavigationType -> m NavigationType
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationAction
navigation' <- NavigationAction -> IO (Ptr NavigationAction)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr NavigationAction
navigation
    CUInt
result <- Ptr NavigationAction -> IO CUInt
webkit_navigation_action_get_navigation_type Ptr NavigationAction
navigation'
    let result' :: NavigationType
result' = (Int -> NavigationType
forall a. Enum a => Int -> a
toEnum (Int -> NavigationType)
-> (CUInt -> Int) -> CUInt -> NavigationType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
    NavigationAction -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr NavigationAction
navigation
    NavigationType -> IO NavigationType
forall (m :: * -> *) a. Monad m => a -> m a
return NavigationType
result'

#if defined(ENABLE_OVERLOADING)
data NavigationActionGetNavigationTypeMethodInfo
instance (signature ~ (m WebKit2.Enums.NavigationType), MonadIO m) => O.OverloadedMethod NavigationActionGetNavigationTypeMethodInfo NavigationAction signature where
    overloadedMethod = navigationActionGetNavigationType

instance O.OverloadedMethodInfo NavigationActionGetNavigationTypeMethodInfo NavigationAction where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.NavigationAction.navigationActionGetNavigationType",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-NavigationAction.html#v:navigationActionGetNavigationType"
        }


#endif

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

foreign import ccall "webkit_navigation_action_get_request" webkit_navigation_action_get_request :: 
    Ptr NavigationAction ->                 -- navigation : TInterface (Name {namespace = "WebKit2", name = "NavigationAction"})
    IO (Ptr WebKit2.URIRequest.URIRequest)

-- | Return the t'GI.WebKit2.Objects.URIRequest.URIRequest' associated with the navigation action.
-- Modifications to the returned object are \<emphasis>not\<\/emphasis> taken
-- into account when the request is sent over the network, and is intended
-- only to aid in evaluating whether a navigation action should be taken or
-- not. To modify requests before they are sent over the network the
-- @/WebKitPage::send-request/@ signal can be used instead.
-- 
-- /Since: 2.6/
navigationActionGetRequest ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    NavigationAction
    -- ^ /@navigation@/: a t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
    -> m WebKit2.URIRequest.URIRequest
    -- ^ __Returns:__ a t'GI.WebKit2.Objects.URIRequest.URIRequest'
navigationActionGetRequest :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
NavigationAction -> m URIRequest
navigationActionGetRequest NavigationAction
navigation = IO URIRequest -> m URIRequest
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO URIRequest -> m URIRequest) -> IO URIRequest -> m URIRequest
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationAction
navigation' <- NavigationAction -> IO (Ptr NavigationAction)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr NavigationAction
navigation
    Ptr URIRequest
result <- Ptr NavigationAction -> IO (Ptr URIRequest)
webkit_navigation_action_get_request Ptr NavigationAction
navigation'
    Text -> Ptr URIRequest -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"navigationActionGetRequest" Ptr URIRequest
result
    URIRequest
result' <- ((ManagedPtr URIRequest -> URIRequest)
-> Ptr URIRequest -> IO URIRequest
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr URIRequest -> URIRequest
WebKit2.URIRequest.URIRequest) Ptr URIRequest
result
    NavigationAction -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr NavigationAction
navigation
    URIRequest -> IO URIRequest
forall (m :: * -> *) a. Monad m => a -> m a
return URIRequest
result'

#if defined(ENABLE_OVERLOADING)
data NavigationActionGetRequestMethodInfo
instance (signature ~ (m WebKit2.URIRequest.URIRequest), MonadIO m) => O.OverloadedMethod NavigationActionGetRequestMethodInfo NavigationAction signature where
    overloadedMethod = navigationActionGetRequest

instance O.OverloadedMethodInfo NavigationActionGetRequestMethodInfo NavigationAction where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.NavigationAction.navigationActionGetRequest",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-NavigationAction.html#v:navigationActionGetRequest"
        }


#endif

-- method NavigationAction::is_redirect
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "navigation"
--           , argType =
--               TInterface
--                 Name { namespace = "WebKit2" , name = "NavigationAction" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #WebKitNavigationAction"
--                 , 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_navigation_action_is_redirect" webkit_navigation_action_is_redirect :: 
    Ptr NavigationAction ->                 -- navigation : TInterface (Name {namespace = "WebKit2", name = "NavigationAction"})
    IO CInt

-- | Returns whether the /@navigation@/ was redirected.
-- 
-- /Since: 2.20/
navigationActionIsRedirect ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    NavigationAction
    -- ^ /@navigation@/: a t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
    -> m Bool
    -- ^ __Returns:__ 'P.True' if the original navigation was redirected, 'P.False' otherwise.
navigationActionIsRedirect :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
NavigationAction -> m Bool
navigationActionIsRedirect NavigationAction
navigation = IO Bool -> m Bool
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationAction
navigation' <- NavigationAction -> IO (Ptr NavigationAction)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr NavigationAction
navigation
    CInt
result <- Ptr NavigationAction -> IO CInt
webkit_navigation_action_is_redirect Ptr NavigationAction
navigation'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    NavigationAction -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr NavigationAction
navigation
    Bool -> IO Bool
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data NavigationActionIsRedirectMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.OverloadedMethod NavigationActionIsRedirectMethodInfo NavigationAction signature where
    overloadedMethod = navigationActionIsRedirect

instance O.OverloadedMethodInfo NavigationActionIsRedirectMethodInfo NavigationAction where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.NavigationAction.navigationActionIsRedirect",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-NavigationAction.html#v:navigationActionIsRedirect"
        }


#endif

-- method NavigationAction::is_user_gesture
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "navigation"
--           , argType =
--               TInterface
--                 Name { namespace = "WebKit2" , name = "NavigationAction" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #WebKitNavigationAction"
--                 , 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_navigation_action_is_user_gesture" webkit_navigation_action_is_user_gesture :: 
    Ptr NavigationAction ->                 -- navigation : TInterface (Name {namespace = "WebKit2", name = "NavigationAction"})
    IO CInt

-- | Return whether the navigation was triggered by a user gesture like a mouse click.
-- 
-- /Since: 2.6/
navigationActionIsUserGesture ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    NavigationAction
    -- ^ /@navigation@/: a t'GI.WebKit2.Structs.NavigationAction.NavigationAction'
    -> m Bool
    -- ^ __Returns:__ whether navigation action is a user gesture
navigationActionIsUserGesture :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
NavigationAction -> m Bool
navigationActionIsUserGesture NavigationAction
navigation = IO Bool -> m Bool
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr NavigationAction
navigation' <- NavigationAction -> IO (Ptr NavigationAction)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr NavigationAction
navigation
    CInt
result <- Ptr NavigationAction -> IO CInt
webkit_navigation_action_is_user_gesture Ptr NavigationAction
navigation'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    NavigationAction -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr NavigationAction
navigation
    Bool -> IO Bool
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data NavigationActionIsUserGestureMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.OverloadedMethod NavigationActionIsUserGestureMethodInfo NavigationAction signature where
    overloadedMethod = navigationActionIsUserGesture

instance O.OverloadedMethodInfo NavigationActionIsUserGestureMethodInfo NavigationAction where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.WebKit2.Structs.NavigationAction.navigationActionIsUserGesture",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-webkit2-4.0.27/docs/GI-WebKit2-Structs-NavigationAction.html#v:navigationActionIsUserGesture"
        }


#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveNavigationActionMethod (t :: Symbol) (o :: *) :: * where
    ResolveNavigationActionMethod "copy" o = NavigationActionCopyMethodInfo
    ResolveNavigationActionMethod "free" o = NavigationActionFreeMethodInfo
    ResolveNavigationActionMethod "isRedirect" o = NavigationActionIsRedirectMethodInfo
    ResolveNavigationActionMethod "isUserGesture" o = NavigationActionIsUserGestureMethodInfo
    ResolveNavigationActionMethod "getModifiers" o = NavigationActionGetModifiersMethodInfo
    ResolveNavigationActionMethod "getMouseButton" o = NavigationActionGetMouseButtonMethodInfo
    ResolveNavigationActionMethod "getNavigationType" o = NavigationActionGetNavigationTypeMethodInfo
    ResolveNavigationActionMethod "getRequest" o = NavigationActionGetRequestMethodInfo
    ResolveNavigationActionMethod l o = O.MethodResolutionFailed l o

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

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveNavigationActionMethod t NavigationAction, O.OverloadedMethod info NavigationAction p, R.HasField t NavigationAction p) => R.HasField t NavigationAction p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveNavigationActionMethod t NavigationAction, O.OverloadedMethodInfo info NavigationAction) => OL.IsLabel t (O.MethodProxy info NavigationAction) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif