{- |
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.WebKit.Flags
    ( 

-- * Exported types
    SecurityPolicy(..)                      ,
    HitTestResultContext(..)                ,


    ) 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


-- Flags SecurityPolicy
{- |
Flags used to represent the security policy of a URI scheme.

@since 2.0
-}
data SecurityPolicy = 
      SecurityPolicyLocal
    {- ^
    Local URI scheme, other non-local pages
      cannot link to or access URIs of this scheme.
    -}
    | SecurityPolicyNoAccessToOtherScheme
    {- ^
    Pages loaded with this URI scheme
      cannot access pages loaded with any other URI scheme.
    -}
    | SecurityPolicyDisplayIsolated
    {- ^
    Pages cannot display these URIs
      unless they are from the same scheme.
    -}
    | SecurityPolicySecure
    {- ^
    Secure URI scheme, doesn\'t generate mixed
      content warnings when included by an HTTPS page.
    -}
    | SecurityPolicyCorsEnabled
    {- ^
    URI scheme that can be sent
      CORS (Cross-origin resource sharing) requests. See W3C CORS specification
      http:\/\/www.w3.org\/TR\/cors\/.
    -}
    | SecurityPolicyEmptyDocument
    {- ^
    Strictly empty documents allowed
      to commit synchronously.
    -}
    | AnotherSecurityPolicy Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum SecurityPolicy where
    fromEnum SecurityPolicyLocal = 2
    fromEnum SecurityPolicyNoAccessToOtherScheme = 4
    fromEnum SecurityPolicyDisplayIsolated = 8
    fromEnum SecurityPolicySecure = 16
    fromEnum SecurityPolicyCorsEnabled = 32
    fromEnum SecurityPolicyEmptyDocument = 64
    fromEnum (AnotherSecurityPolicy k) = k

    toEnum 2 = SecurityPolicyLocal
    toEnum 4 = SecurityPolicyNoAccessToOtherScheme
    toEnum 8 = SecurityPolicyDisplayIsolated
    toEnum 16 = SecurityPolicySecure
    toEnum 32 = SecurityPolicyCorsEnabled
    toEnum 64 = SecurityPolicyEmptyDocument
    toEnum k = AnotherSecurityPolicy k

instance P.Ord SecurityPolicy where
    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)

foreign import ccall "webkit_security_policy_get_type" c_webkit_security_policy_get_type :: 
    IO GType

instance BoxedFlags SecurityPolicy where
    boxedFlagsType _ = c_webkit_security_policy_get_type

instance IsGFlag SecurityPolicy

-- Flags HitTestResultContext
{- |
/No description available in the introspection data./
-}
data HitTestResultContext = 
      HitTestResultContextDocument
    {- ^
    anywhere in the document.
    -}
    | HitTestResultContextLink
    {- ^
    a hyperlink element.
    -}
    | HitTestResultContextImage
    {- ^
    an image element.
    -}
    | HitTestResultContextMedia
    {- ^
    a video or audio element.
    -}
    | HitTestResultContextSelection
    {- ^
    the area is selected by
    the user.
    -}
    | HitTestResultContextEditable
    {- ^
    the area is
    editable by the user.
    -}
    | AnotherHitTestResultContext Int
    -- ^ Catch-all for unknown values
    deriving (Show, Eq)

instance P.Enum HitTestResultContext where
    fromEnum HitTestResultContextDocument = 2
    fromEnum HitTestResultContextLink = 4
    fromEnum HitTestResultContextImage = 8
    fromEnum HitTestResultContextMedia = 16
    fromEnum HitTestResultContextSelection = 32
    fromEnum HitTestResultContextEditable = 64
    fromEnum (AnotherHitTestResultContext k) = k

    toEnum 2 = HitTestResultContextDocument
    toEnum 4 = HitTestResultContextLink
    toEnum 8 = HitTestResultContextImage
    toEnum 16 = HitTestResultContextMedia
    toEnum 32 = HitTestResultContextSelection
    toEnum 64 = HitTestResultContextEditable
    toEnum k = AnotherHitTestResultContext k

instance P.Ord HitTestResultContext where
    compare a b = P.compare (P.fromEnum a) (P.fromEnum b)

foreign import ccall "webkit_hit_test_result_context_get_type" c_webkit_hit_test_result_context_get_type :: 
    IO GType

instance BoxedFlags HitTestResultContext where
    boxedFlagsType _ = c_webkit_hit_test_result_context_get_type

instance IsGFlag HitTestResultContext