{- |
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.WebKit2WebExtension.Objects.DOMDOMWindow
    ( 

-- * Exported types
    DOMDOMWindow(..)                        ,
    IsDOMDOMWindow                          ,
    toDOMDOMWindow                          ,
    noDOMDOMWindow                          ,


 -- * Methods
-- ** webkitMessageHandlersPostMessage #method:webkitMessageHandlersPostMessage#
    DOMDOMWindowWebkitMessageHandlersPostMessageMethodInfo,
    dOMDOMWindowWebkitMessageHandlersPostMessage,




 -- * Properties
-- ** closed #attr:closed#
    DOMDOMWindowClosedPropertyInfo          ,
    dOMDOMWindowClosed                      ,
    getDOMDOMWindowClosed                   ,


-- ** defaultStatus #attr:defaultStatus#
    DOMDOMWindowDefaultStatusPropertyInfo   ,
    clearDOMDOMWindowDefaultStatus          ,
    constructDOMDOMWindowDefaultStatus      ,
    dOMDOMWindowDefaultStatus               ,
    getDOMDOMWindowDefaultStatus            ,
    setDOMDOMWindowDefaultStatus            ,


-- ** devicePixelRatio #attr:devicePixelRatio#
    DOMDOMWindowDevicePixelRatioPropertyInfo,
    dOMDOMWindowDevicePixelRatio            ,
    getDOMDOMWindowDevicePixelRatio         ,


-- ** document #attr:document#
    DOMDOMWindowDocumentPropertyInfo        ,
    dOMDOMWindowDocument                    ,
    getDOMDOMWindowDocument                 ,


-- ** frameElement #attr:frameElement#
    DOMDOMWindowFrameElementPropertyInfo    ,
    dOMDOMWindowFrameElement                ,
    getDOMDOMWindowFrameElement             ,


-- ** frames #attr:frames#
    DOMDOMWindowFramesPropertyInfo          ,
    dOMDOMWindowFrames                      ,
    getDOMDOMWindowFrames                   ,


-- ** innerHeight #attr:innerHeight#
    DOMDOMWindowInnerHeightPropertyInfo     ,
    dOMDOMWindowInnerHeight                 ,
    getDOMDOMWindowInnerHeight              ,


-- ** innerWidth #attr:innerWidth#
    DOMDOMWindowInnerWidthPropertyInfo      ,
    dOMDOMWindowInnerWidth                  ,
    getDOMDOMWindowInnerWidth               ,


-- ** length #attr:length#
    DOMDOMWindowLengthPropertyInfo          ,
    dOMDOMWindowLength                      ,
    getDOMDOMWindowLength                   ,


-- ** name #attr:name#
    DOMDOMWindowNamePropertyInfo            ,
    clearDOMDOMWindowName                   ,
    constructDOMDOMWindowName               ,
    dOMDOMWindowName                        ,
    getDOMDOMWindowName                     ,
    setDOMDOMWindowName                     ,


-- ** offscreenBuffering #attr:offscreenBuffering#
    DOMDOMWindowOffscreenBufferingPropertyInfo,
    dOMDOMWindowOffscreenBuffering          ,
    getDOMDOMWindowOffscreenBuffering       ,


-- ** opener #attr:opener#
    DOMDOMWindowOpenerPropertyInfo          ,
    dOMDOMWindowOpener                      ,
    getDOMDOMWindowOpener                   ,


-- ** orientation #attr:orientation#
    DOMDOMWindowOrientationPropertyInfo     ,
    dOMDOMWindowOrientation                 ,
    getDOMDOMWindowOrientation              ,


-- ** outerHeight #attr:outerHeight#
    DOMDOMWindowOuterHeightPropertyInfo     ,
    dOMDOMWindowOuterHeight                 ,
    getDOMDOMWindowOuterHeight              ,


-- ** outerWidth #attr:outerWidth#
    DOMDOMWindowOuterWidthPropertyInfo      ,
    dOMDOMWindowOuterWidth                  ,
    getDOMDOMWindowOuterWidth               ,


-- ** pageXOffset #attr:pageXOffset#
    DOMDOMWindowPageXOffsetPropertyInfo     ,
    dOMDOMWindowPageXOffset                 ,
    getDOMDOMWindowPageXOffset              ,


-- ** pageYOffset #attr:pageYOffset#
    DOMDOMWindowPageYOffsetPropertyInfo     ,
    dOMDOMWindowPageYOffset                 ,
    getDOMDOMWindowPageYOffset              ,


-- ** parent #attr:parent#
    DOMDOMWindowParentPropertyInfo          ,
    dOMDOMWindowParent                      ,
    getDOMDOMWindowParent                   ,


-- ** screenLeft #attr:screenLeft#
    DOMDOMWindowScreenLeftPropertyInfo      ,
    dOMDOMWindowScreenLeft                  ,
    getDOMDOMWindowScreenLeft               ,


-- ** screenTop #attr:screenTop#
    DOMDOMWindowScreenTopPropertyInfo       ,
    dOMDOMWindowScreenTop                   ,
    getDOMDOMWindowScreenTop                ,


-- ** screenX #attr:screenX#
    DOMDOMWindowScreenXPropertyInfo         ,
    dOMDOMWindowScreenX                     ,
    getDOMDOMWindowScreenX                  ,


-- ** screenY #attr:screenY#
    DOMDOMWindowScreenYPropertyInfo         ,
    dOMDOMWindowScreenY                     ,
    getDOMDOMWindowScreenY                  ,


-- ** scrollX #attr:scrollX#
    DOMDOMWindowScrollXPropertyInfo         ,
    dOMDOMWindowScrollX                     ,
    getDOMDOMWindowScrollX                  ,


-- ** scrollY #attr:scrollY#
    DOMDOMWindowScrollYPropertyInfo         ,
    dOMDOMWindowScrollY                     ,
    getDOMDOMWindowScrollY                  ,


-- ** self #attr:self#
    DOMDOMWindowSelfPropertyInfo            ,
    dOMDOMWindowSelf                        ,
    getDOMDOMWindowSelf                     ,


-- ** status #attr:status#
    DOMDOMWindowStatusPropertyInfo          ,
    clearDOMDOMWindowStatus                 ,
    constructDOMDOMWindowStatus             ,
    dOMDOMWindowStatus                      ,
    getDOMDOMWindowStatus                   ,
    setDOMDOMWindowStatus                   ,


-- ** top #attr:top#
    DOMDOMWindowTopPropertyInfo             ,
    dOMDOMWindowTop                         ,
    getDOMDOMWindowTop                      ,


-- ** window #attr:window#
    DOMDOMWindowWindowPropertyInfo          ,
    dOMDOMWindowWindow                      ,
    getDOMDOMWindowWindow                   ,




    ) 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.WebKit2WebExtension.Interfaces.DOMEventTarget as WebKit2WebExtension.DOMEventTarget
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMDocument as WebKit2WebExtension.DOMDocument
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMElement as WebKit2WebExtension.DOMElement
import {-# SOURCE #-} qualified GI.WebKit2WebExtension.Objects.DOMObject as WebKit2WebExtension.DOMObject

newtype DOMDOMWindow = DOMDOMWindow (ManagedPtr DOMDOMWindow)
foreign import ccall "webkit_dom_dom_window_get_type"
    c_webkit_dom_dom_window_get_type :: IO GType

instance GObject DOMDOMWindow where
    gobjectType _ = c_webkit_dom_dom_window_get_type
    

class GObject o => IsDOMDOMWindow o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError DOMDOMWindow a) =>
    IsDOMDOMWindow a
#endif
instance IsDOMDOMWindow DOMDOMWindow
instance WebKit2WebExtension.DOMObject.IsDOMObject DOMDOMWindow
instance GObject.Object.IsObject DOMDOMWindow
instance WebKit2WebExtension.DOMEventTarget.IsDOMEventTarget DOMDOMWindow

toDOMDOMWindow :: IsDOMDOMWindow o => o -> IO DOMDOMWindow
toDOMDOMWindow = unsafeCastTo DOMDOMWindow

noDOMDOMWindow :: Maybe DOMDOMWindow
noDOMDOMWindow = Nothing

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

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

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

-- VVV Prop "closed"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowClosed :: (MonadIO m, IsDOMDOMWindow o) => o -> m Bool
getDOMDOMWindowClosed obj = liftIO $ getObjectPropertyBool obj "closed"

data DOMDOMWindowClosedPropertyInfo
instance AttrInfo DOMDOMWindowClosedPropertyInfo where
    type AttrAllowedOps DOMDOMWindowClosedPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowClosedPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowClosedPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowClosedPropertyInfo = Bool
    type AttrLabel DOMDOMWindowClosedPropertyInfo = "closed"
    type AttrOrigin DOMDOMWindowClosedPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowClosed
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "default-status"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowDefaultStatus :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe T.Text)
getDOMDOMWindowDefaultStatus obj = liftIO $ getObjectPropertyString obj "default-status"

setDOMDOMWindowDefaultStatus :: (MonadIO m, IsDOMDOMWindow o) => o -> T.Text -> m ()
setDOMDOMWindowDefaultStatus obj val = liftIO $ setObjectPropertyString obj "default-status" (Just val)

constructDOMDOMWindowDefaultStatus :: (IsDOMDOMWindow o) => T.Text -> IO (GValueConstruct o)
constructDOMDOMWindowDefaultStatus val = constructObjectPropertyString "default-status" (Just val)

clearDOMDOMWindowDefaultStatus :: (MonadIO m, IsDOMDOMWindow o) => o -> m ()
clearDOMDOMWindowDefaultStatus obj = liftIO $ setObjectPropertyString obj "default-status" (Nothing :: Maybe T.Text)

data DOMDOMWindowDefaultStatusPropertyInfo
instance AttrInfo DOMDOMWindowDefaultStatusPropertyInfo where
    type AttrAllowedOps DOMDOMWindowDefaultStatusPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowDefaultStatusPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint DOMDOMWindowDefaultStatusPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowDefaultStatusPropertyInfo = (Maybe T.Text)
    type AttrLabel DOMDOMWindowDefaultStatusPropertyInfo = "default-status"
    type AttrOrigin DOMDOMWindowDefaultStatusPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowDefaultStatus
    attrSet _ = setDOMDOMWindowDefaultStatus
    attrConstruct _ = constructDOMDOMWindowDefaultStatus
    attrClear _ = clearDOMDOMWindowDefaultStatus

-- VVV Prop "device-pixel-ratio"
   -- Type: TBasicType TDouble
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowDevicePixelRatio :: (MonadIO m, IsDOMDOMWindow o) => o -> m Double
getDOMDOMWindowDevicePixelRatio obj = liftIO $ getObjectPropertyDouble obj "device-pixel-ratio"

data DOMDOMWindowDevicePixelRatioPropertyInfo
instance AttrInfo DOMDOMWindowDevicePixelRatioPropertyInfo where
    type AttrAllowedOps DOMDOMWindowDevicePixelRatioPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowDevicePixelRatioPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowDevicePixelRatioPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowDevicePixelRatioPropertyInfo = Double
    type AttrLabel DOMDOMWindowDevicePixelRatioPropertyInfo = "device-pixel-ratio"
    type AttrOrigin DOMDOMWindowDevicePixelRatioPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowDevicePixelRatio
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "document"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDocument"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowDocument :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe WebKit2WebExtension.DOMDocument.DOMDocument)
getDOMDOMWindowDocument obj = liftIO $ getObjectPropertyObject obj "document" WebKit2WebExtension.DOMDocument.DOMDocument

data DOMDOMWindowDocumentPropertyInfo
instance AttrInfo DOMDOMWindowDocumentPropertyInfo where
    type AttrAllowedOps DOMDOMWindowDocumentPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowDocumentPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowDocumentPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowDocumentPropertyInfo = (Maybe WebKit2WebExtension.DOMDocument.DOMDocument)
    type AttrLabel DOMDOMWindowDocumentPropertyInfo = "document"
    type AttrOrigin DOMDOMWindowDocumentPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowDocument
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "frame-element"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMElement"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowFrameElement :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe WebKit2WebExtension.DOMElement.DOMElement)
getDOMDOMWindowFrameElement obj = liftIO $ getObjectPropertyObject obj "frame-element" WebKit2WebExtension.DOMElement.DOMElement

data DOMDOMWindowFrameElementPropertyInfo
instance AttrInfo DOMDOMWindowFrameElementPropertyInfo where
    type AttrAllowedOps DOMDOMWindowFrameElementPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowFrameElementPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowFrameElementPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowFrameElementPropertyInfo = (Maybe WebKit2WebExtension.DOMElement.DOMElement)
    type AttrLabel DOMDOMWindowFrameElementPropertyInfo = "frame-element"
    type AttrOrigin DOMDOMWindowFrameElementPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowFrameElement
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "frames"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMWindow"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowFrames :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe DOMDOMWindow)
getDOMDOMWindowFrames obj = liftIO $ getObjectPropertyObject obj "frames" DOMDOMWindow

data DOMDOMWindowFramesPropertyInfo
instance AttrInfo DOMDOMWindowFramesPropertyInfo where
    type AttrAllowedOps DOMDOMWindowFramesPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowFramesPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowFramesPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowFramesPropertyInfo = (Maybe DOMDOMWindow)
    type AttrLabel DOMDOMWindowFramesPropertyInfo = "frames"
    type AttrOrigin DOMDOMWindowFramesPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowFrames
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "inner-height"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowInnerHeight :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowInnerHeight obj = liftIO $ getObjectPropertyLong obj "inner-height"

data DOMDOMWindowInnerHeightPropertyInfo
instance AttrInfo DOMDOMWindowInnerHeightPropertyInfo where
    type AttrAllowedOps DOMDOMWindowInnerHeightPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowInnerHeightPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowInnerHeightPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowInnerHeightPropertyInfo = CLong
    type AttrLabel DOMDOMWindowInnerHeightPropertyInfo = "inner-height"
    type AttrOrigin DOMDOMWindowInnerHeightPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowInnerHeight
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "inner-width"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowInnerWidth :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowInnerWidth obj = liftIO $ getObjectPropertyLong obj "inner-width"

data DOMDOMWindowInnerWidthPropertyInfo
instance AttrInfo DOMDOMWindowInnerWidthPropertyInfo where
    type AttrAllowedOps DOMDOMWindowInnerWidthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowInnerWidthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowInnerWidthPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowInnerWidthPropertyInfo = CLong
    type AttrLabel DOMDOMWindowInnerWidthPropertyInfo = "inner-width"
    type AttrOrigin DOMDOMWindowInnerWidthPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowInnerWidth
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "length"
   -- Type: TBasicType TULong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowLength :: (MonadIO m, IsDOMDOMWindow o) => o -> m CULong
getDOMDOMWindowLength obj = liftIO $ getObjectPropertyULong obj "length"

data DOMDOMWindowLengthPropertyInfo
instance AttrInfo DOMDOMWindowLengthPropertyInfo where
    type AttrAllowedOps DOMDOMWindowLengthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowLengthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowLengthPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowLengthPropertyInfo = CULong
    type AttrLabel DOMDOMWindowLengthPropertyInfo = "length"
    type AttrOrigin DOMDOMWindowLengthPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowLength
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowName :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe T.Text)
getDOMDOMWindowName obj = liftIO $ getObjectPropertyString obj "name"

setDOMDOMWindowName :: (MonadIO m, IsDOMDOMWindow o) => o -> T.Text -> m ()
setDOMDOMWindowName obj val = liftIO $ setObjectPropertyString obj "name" (Just val)

constructDOMDOMWindowName :: (IsDOMDOMWindow o) => T.Text -> IO (GValueConstruct o)
constructDOMDOMWindowName val = constructObjectPropertyString "name" (Just val)

clearDOMDOMWindowName :: (MonadIO m, IsDOMDOMWindow o) => o -> m ()
clearDOMDOMWindowName obj = liftIO $ setObjectPropertyString obj "name" (Nothing :: Maybe T.Text)

data DOMDOMWindowNamePropertyInfo
instance AttrInfo DOMDOMWindowNamePropertyInfo where
    type AttrAllowedOps DOMDOMWindowNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowNamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint DOMDOMWindowNamePropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowNamePropertyInfo = (Maybe T.Text)
    type AttrLabel DOMDOMWindowNamePropertyInfo = "name"
    type AttrOrigin DOMDOMWindowNamePropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowName
    attrSet _ = setDOMDOMWindowName
    attrConstruct _ = constructDOMDOMWindowName
    attrClear _ = clearDOMDOMWindowName

-- VVV Prop "offscreen-buffering"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowOffscreenBuffering :: (MonadIO m, IsDOMDOMWindow o) => o -> m Bool
getDOMDOMWindowOffscreenBuffering obj = liftIO $ getObjectPropertyBool obj "offscreen-buffering"

data DOMDOMWindowOffscreenBufferingPropertyInfo
instance AttrInfo DOMDOMWindowOffscreenBufferingPropertyInfo where
    type AttrAllowedOps DOMDOMWindowOffscreenBufferingPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowOffscreenBufferingPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowOffscreenBufferingPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowOffscreenBufferingPropertyInfo = Bool
    type AttrLabel DOMDOMWindowOffscreenBufferingPropertyInfo = "offscreen-buffering"
    type AttrOrigin DOMDOMWindowOffscreenBufferingPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowOffscreenBuffering
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "opener"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMWindow"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowOpener :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe DOMDOMWindow)
getDOMDOMWindowOpener obj = liftIO $ getObjectPropertyObject obj "opener" DOMDOMWindow

data DOMDOMWindowOpenerPropertyInfo
instance AttrInfo DOMDOMWindowOpenerPropertyInfo where
    type AttrAllowedOps DOMDOMWindowOpenerPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowOpenerPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowOpenerPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowOpenerPropertyInfo = (Maybe DOMDOMWindow)
    type AttrLabel DOMDOMWindowOpenerPropertyInfo = "opener"
    type AttrOrigin DOMDOMWindowOpenerPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowOpener
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "orientation"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowOrientation :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowOrientation obj = liftIO $ getObjectPropertyLong obj "orientation"

data DOMDOMWindowOrientationPropertyInfo
instance AttrInfo DOMDOMWindowOrientationPropertyInfo where
    type AttrAllowedOps DOMDOMWindowOrientationPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowOrientationPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowOrientationPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowOrientationPropertyInfo = CLong
    type AttrLabel DOMDOMWindowOrientationPropertyInfo = "orientation"
    type AttrOrigin DOMDOMWindowOrientationPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowOrientation
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "outer-height"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowOuterHeight :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowOuterHeight obj = liftIO $ getObjectPropertyLong obj "outer-height"

data DOMDOMWindowOuterHeightPropertyInfo
instance AttrInfo DOMDOMWindowOuterHeightPropertyInfo where
    type AttrAllowedOps DOMDOMWindowOuterHeightPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowOuterHeightPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowOuterHeightPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowOuterHeightPropertyInfo = CLong
    type AttrLabel DOMDOMWindowOuterHeightPropertyInfo = "outer-height"
    type AttrOrigin DOMDOMWindowOuterHeightPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowOuterHeight
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "outer-width"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowOuterWidth :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowOuterWidth obj = liftIO $ getObjectPropertyLong obj "outer-width"

data DOMDOMWindowOuterWidthPropertyInfo
instance AttrInfo DOMDOMWindowOuterWidthPropertyInfo where
    type AttrAllowedOps DOMDOMWindowOuterWidthPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowOuterWidthPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowOuterWidthPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowOuterWidthPropertyInfo = CLong
    type AttrLabel DOMDOMWindowOuterWidthPropertyInfo = "outer-width"
    type AttrOrigin DOMDOMWindowOuterWidthPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowOuterWidth
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "page-x-offset"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowPageXOffset :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowPageXOffset obj = liftIO $ getObjectPropertyLong obj "page-x-offset"

data DOMDOMWindowPageXOffsetPropertyInfo
instance AttrInfo DOMDOMWindowPageXOffsetPropertyInfo where
    type AttrAllowedOps DOMDOMWindowPageXOffsetPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowPageXOffsetPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowPageXOffsetPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowPageXOffsetPropertyInfo = CLong
    type AttrLabel DOMDOMWindowPageXOffsetPropertyInfo = "page-x-offset"
    type AttrOrigin DOMDOMWindowPageXOffsetPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowPageXOffset
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "page-y-offset"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowPageYOffset :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowPageYOffset obj = liftIO $ getObjectPropertyLong obj "page-y-offset"

data DOMDOMWindowPageYOffsetPropertyInfo
instance AttrInfo DOMDOMWindowPageYOffsetPropertyInfo where
    type AttrAllowedOps DOMDOMWindowPageYOffsetPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowPageYOffsetPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowPageYOffsetPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowPageYOffsetPropertyInfo = CLong
    type AttrLabel DOMDOMWindowPageYOffsetPropertyInfo = "page-y-offset"
    type AttrOrigin DOMDOMWindowPageYOffsetPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowPageYOffset
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "parent"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMWindow"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowParent :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe DOMDOMWindow)
getDOMDOMWindowParent obj = liftIO $ getObjectPropertyObject obj "parent" DOMDOMWindow

data DOMDOMWindowParentPropertyInfo
instance AttrInfo DOMDOMWindowParentPropertyInfo where
    type AttrAllowedOps DOMDOMWindowParentPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowParentPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowParentPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowParentPropertyInfo = (Maybe DOMDOMWindow)
    type AttrLabel DOMDOMWindowParentPropertyInfo = "parent"
    type AttrOrigin DOMDOMWindowParentPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowParent
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "screen-left"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowScreenLeft :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowScreenLeft obj = liftIO $ getObjectPropertyLong obj "screen-left"

data DOMDOMWindowScreenLeftPropertyInfo
instance AttrInfo DOMDOMWindowScreenLeftPropertyInfo where
    type AttrAllowedOps DOMDOMWindowScreenLeftPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowScreenLeftPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowScreenLeftPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowScreenLeftPropertyInfo = CLong
    type AttrLabel DOMDOMWindowScreenLeftPropertyInfo = "screen-left"
    type AttrOrigin DOMDOMWindowScreenLeftPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowScreenLeft
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "screen-top"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowScreenTop :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowScreenTop obj = liftIO $ getObjectPropertyLong obj "screen-top"

data DOMDOMWindowScreenTopPropertyInfo
instance AttrInfo DOMDOMWindowScreenTopPropertyInfo where
    type AttrAllowedOps DOMDOMWindowScreenTopPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowScreenTopPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowScreenTopPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowScreenTopPropertyInfo = CLong
    type AttrLabel DOMDOMWindowScreenTopPropertyInfo = "screen-top"
    type AttrOrigin DOMDOMWindowScreenTopPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowScreenTop
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "screen-x"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowScreenX :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowScreenX obj = liftIO $ getObjectPropertyLong obj "screen-x"

data DOMDOMWindowScreenXPropertyInfo
instance AttrInfo DOMDOMWindowScreenXPropertyInfo where
    type AttrAllowedOps DOMDOMWindowScreenXPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowScreenXPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowScreenXPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowScreenXPropertyInfo = CLong
    type AttrLabel DOMDOMWindowScreenXPropertyInfo = "screen-x"
    type AttrOrigin DOMDOMWindowScreenXPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowScreenX
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "screen-y"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowScreenY :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowScreenY obj = liftIO $ getObjectPropertyLong obj "screen-y"

data DOMDOMWindowScreenYPropertyInfo
instance AttrInfo DOMDOMWindowScreenYPropertyInfo where
    type AttrAllowedOps DOMDOMWindowScreenYPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowScreenYPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowScreenYPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowScreenYPropertyInfo = CLong
    type AttrLabel DOMDOMWindowScreenYPropertyInfo = "screen-y"
    type AttrOrigin DOMDOMWindowScreenYPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowScreenY
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "scroll-x"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowScrollX :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowScrollX obj = liftIO $ getObjectPropertyLong obj "scroll-x"

data DOMDOMWindowScrollXPropertyInfo
instance AttrInfo DOMDOMWindowScrollXPropertyInfo where
    type AttrAllowedOps DOMDOMWindowScrollXPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowScrollXPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowScrollXPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowScrollXPropertyInfo = CLong
    type AttrLabel DOMDOMWindowScrollXPropertyInfo = "scroll-x"
    type AttrOrigin DOMDOMWindowScrollXPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowScrollX
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "scroll-y"
   -- Type: TBasicType TLong
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowScrollY :: (MonadIO m, IsDOMDOMWindow o) => o -> m CLong
getDOMDOMWindowScrollY obj = liftIO $ getObjectPropertyLong obj "scroll-y"

data DOMDOMWindowScrollYPropertyInfo
instance AttrInfo DOMDOMWindowScrollYPropertyInfo where
    type AttrAllowedOps DOMDOMWindowScrollYPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint DOMDOMWindowScrollYPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowScrollYPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowScrollYPropertyInfo = CLong
    type AttrLabel DOMDOMWindowScrollYPropertyInfo = "scroll-y"
    type AttrOrigin DOMDOMWindowScrollYPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowScrollY
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "self"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMWindow"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowSelf :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe DOMDOMWindow)
getDOMDOMWindowSelf obj = liftIO $ getObjectPropertyObject obj "self" DOMDOMWindow

data DOMDOMWindowSelfPropertyInfo
instance AttrInfo DOMDOMWindowSelfPropertyInfo where
    type AttrAllowedOps DOMDOMWindowSelfPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowSelfPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowSelfPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowSelfPropertyInfo = (Maybe DOMDOMWindow)
    type AttrLabel DOMDOMWindowSelfPropertyInfo = "self"
    type AttrOrigin DOMDOMWindowSelfPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowSelf
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "status"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowStatus :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe T.Text)
getDOMDOMWindowStatus obj = liftIO $ getObjectPropertyString obj "status"

setDOMDOMWindowStatus :: (MonadIO m, IsDOMDOMWindow o) => o -> T.Text -> m ()
setDOMDOMWindowStatus obj val = liftIO $ setObjectPropertyString obj "status" (Just val)

constructDOMDOMWindowStatus :: (IsDOMDOMWindow o) => T.Text -> IO (GValueConstruct o)
constructDOMDOMWindowStatus val = constructObjectPropertyString "status" (Just val)

clearDOMDOMWindowStatus :: (MonadIO m, IsDOMDOMWindow o) => o -> m ()
clearDOMDOMWindowStatus obj = liftIO $ setObjectPropertyString obj "status" (Nothing :: Maybe T.Text)

data DOMDOMWindowStatusPropertyInfo
instance AttrInfo DOMDOMWindowStatusPropertyInfo where
    type AttrAllowedOps DOMDOMWindowStatusPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowStatusPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint DOMDOMWindowStatusPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowStatusPropertyInfo = (Maybe T.Text)
    type AttrLabel DOMDOMWindowStatusPropertyInfo = "status"
    type AttrOrigin DOMDOMWindowStatusPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowStatus
    attrSet _ = setDOMDOMWindowStatus
    attrConstruct _ = constructDOMDOMWindowStatus
    attrClear _ = clearDOMDOMWindowStatus

-- VVV Prop "top"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMWindow"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowTop :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe DOMDOMWindow)
getDOMDOMWindowTop obj = liftIO $ getObjectPropertyObject obj "top" DOMDOMWindow

data DOMDOMWindowTopPropertyInfo
instance AttrInfo DOMDOMWindowTopPropertyInfo where
    type AttrAllowedOps DOMDOMWindowTopPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowTopPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowTopPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowTopPropertyInfo = (Maybe DOMDOMWindow)
    type AttrLabel DOMDOMWindowTopPropertyInfo = "top"
    type AttrOrigin DOMDOMWindowTopPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowTop
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "window"
   -- Type: TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMWindow"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Nothing,Nothing)

getDOMDOMWindowWindow :: (MonadIO m, IsDOMDOMWindow o) => o -> m (Maybe DOMDOMWindow)
getDOMDOMWindowWindow obj = liftIO $ getObjectPropertyObject obj "window" DOMDOMWindow

data DOMDOMWindowWindowPropertyInfo
instance AttrInfo DOMDOMWindowWindowPropertyInfo where
    type AttrAllowedOps DOMDOMWindowWindowPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint DOMDOMWindowWindowPropertyInfo = (~) ()
    type AttrBaseTypeConstraint DOMDOMWindowWindowPropertyInfo = IsDOMDOMWindow
    type AttrGetType DOMDOMWindowWindowPropertyInfo = (Maybe DOMDOMWindow)
    type AttrLabel DOMDOMWindowWindowPropertyInfo = "window"
    type AttrOrigin DOMDOMWindowWindowPropertyInfo = DOMDOMWindow
    attrGet _ = getDOMDOMWindowWindow
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

instance O.HasAttributeList DOMDOMWindow
type instance O.AttributeList DOMDOMWindow = DOMDOMWindowAttributeList
type DOMDOMWindowAttributeList = ('[ '("closed", DOMDOMWindowClosedPropertyInfo), '("coreObject", WebKit2WebExtension.DOMObject.DOMObjectCoreObjectPropertyInfo), '("defaultStatus", DOMDOMWindowDefaultStatusPropertyInfo), '("devicePixelRatio", DOMDOMWindowDevicePixelRatioPropertyInfo), '("document", DOMDOMWindowDocumentPropertyInfo), '("frameElement", DOMDOMWindowFrameElementPropertyInfo), '("frames", DOMDOMWindowFramesPropertyInfo), '("innerHeight", DOMDOMWindowInnerHeightPropertyInfo), '("innerWidth", DOMDOMWindowInnerWidthPropertyInfo), '("length", DOMDOMWindowLengthPropertyInfo), '("name", DOMDOMWindowNamePropertyInfo), '("offscreenBuffering", DOMDOMWindowOffscreenBufferingPropertyInfo), '("opener", DOMDOMWindowOpenerPropertyInfo), '("orientation", DOMDOMWindowOrientationPropertyInfo), '("outerHeight", DOMDOMWindowOuterHeightPropertyInfo), '("outerWidth", DOMDOMWindowOuterWidthPropertyInfo), '("pageXOffset", DOMDOMWindowPageXOffsetPropertyInfo), '("pageYOffset", DOMDOMWindowPageYOffsetPropertyInfo), '("parent", DOMDOMWindowParentPropertyInfo), '("screenLeft", DOMDOMWindowScreenLeftPropertyInfo), '("screenTop", DOMDOMWindowScreenTopPropertyInfo), '("screenX", DOMDOMWindowScreenXPropertyInfo), '("screenY", DOMDOMWindowScreenYPropertyInfo), '("scrollX", DOMDOMWindowScrollXPropertyInfo), '("scrollY", DOMDOMWindowScrollYPropertyInfo), '("self", DOMDOMWindowSelfPropertyInfo), '("status", DOMDOMWindowStatusPropertyInfo), '("top", DOMDOMWindowTopPropertyInfo), '("window", DOMDOMWindowWindowPropertyInfo)] :: [(Symbol, *)])

dOMDOMWindowClosed :: AttrLabelProxy "closed"
dOMDOMWindowClosed = AttrLabelProxy

dOMDOMWindowDefaultStatus :: AttrLabelProxy "defaultStatus"
dOMDOMWindowDefaultStatus = AttrLabelProxy

dOMDOMWindowDevicePixelRatio :: AttrLabelProxy "devicePixelRatio"
dOMDOMWindowDevicePixelRatio = AttrLabelProxy

dOMDOMWindowDocument :: AttrLabelProxy "document"
dOMDOMWindowDocument = AttrLabelProxy

dOMDOMWindowFrameElement :: AttrLabelProxy "frameElement"
dOMDOMWindowFrameElement = AttrLabelProxy

dOMDOMWindowFrames :: AttrLabelProxy "frames"
dOMDOMWindowFrames = AttrLabelProxy

dOMDOMWindowInnerHeight :: AttrLabelProxy "innerHeight"
dOMDOMWindowInnerHeight = AttrLabelProxy

dOMDOMWindowInnerWidth :: AttrLabelProxy "innerWidth"
dOMDOMWindowInnerWidth = AttrLabelProxy

dOMDOMWindowLength :: AttrLabelProxy "length"
dOMDOMWindowLength = AttrLabelProxy

dOMDOMWindowName :: AttrLabelProxy "name"
dOMDOMWindowName = AttrLabelProxy

dOMDOMWindowOffscreenBuffering :: AttrLabelProxy "offscreenBuffering"
dOMDOMWindowOffscreenBuffering = AttrLabelProxy

dOMDOMWindowOpener :: AttrLabelProxy "opener"
dOMDOMWindowOpener = AttrLabelProxy

dOMDOMWindowOrientation :: AttrLabelProxy "orientation"
dOMDOMWindowOrientation = AttrLabelProxy

dOMDOMWindowOuterHeight :: AttrLabelProxy "outerHeight"
dOMDOMWindowOuterHeight = AttrLabelProxy

dOMDOMWindowOuterWidth :: AttrLabelProxy "outerWidth"
dOMDOMWindowOuterWidth = AttrLabelProxy

dOMDOMWindowPageXOffset :: AttrLabelProxy "pageXOffset"
dOMDOMWindowPageXOffset = AttrLabelProxy

dOMDOMWindowPageYOffset :: AttrLabelProxy "pageYOffset"
dOMDOMWindowPageYOffset = AttrLabelProxy

dOMDOMWindowParent :: AttrLabelProxy "parent"
dOMDOMWindowParent = AttrLabelProxy

dOMDOMWindowScreenLeft :: AttrLabelProxy "screenLeft"
dOMDOMWindowScreenLeft = AttrLabelProxy

dOMDOMWindowScreenTop :: AttrLabelProxy "screenTop"
dOMDOMWindowScreenTop = AttrLabelProxy

dOMDOMWindowScreenX :: AttrLabelProxy "screenX"
dOMDOMWindowScreenX = AttrLabelProxy

dOMDOMWindowScreenY :: AttrLabelProxy "screenY"
dOMDOMWindowScreenY = AttrLabelProxy

dOMDOMWindowScrollX :: AttrLabelProxy "scrollX"
dOMDOMWindowScrollX = AttrLabelProxy

dOMDOMWindowScrollY :: AttrLabelProxy "scrollY"
dOMDOMWindowScrollY = AttrLabelProxy

dOMDOMWindowSelf :: AttrLabelProxy "self"
dOMDOMWindowSelf = AttrLabelProxy

dOMDOMWindowStatus :: AttrLabelProxy "status"
dOMDOMWindowStatus = AttrLabelProxy

dOMDOMWindowTop :: AttrLabelProxy "top"
dOMDOMWindowTop = AttrLabelProxy

dOMDOMWindowWindow :: AttrLabelProxy "window"
dOMDOMWindowWindow = AttrLabelProxy

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

-- method DOMDOMWindow::webkit_message_handlers_post_message
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "window", argType = TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMWindow"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "handler", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, 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_dom_dom_window_webkit_message_handlers_post_message" webkit_dom_dom_window_webkit_message_handlers_post_message :: 
    Ptr DOMDOMWindow ->                     -- window : TInterface (Name {namespace = "WebKit2WebExtension", name = "DOMDOMWindow"})
    CString ->                              -- handler : TBasicType TUTF8
    CString ->                              -- message : TBasicType TUTF8
    IO CInt

{- |
/No description available in the introspection data./
-}
dOMDOMWindowWebkitMessageHandlersPostMessage ::
    (B.CallStack.HasCallStack, MonadIO m, IsDOMDOMWindow a) =>
    a
    -> T.Text
    -> T.Text
    -> m Bool
dOMDOMWindowWebkitMessageHandlersPostMessage window handler message = liftIO $ do
    window' <- unsafeManagedPtrCastPtr window
    handler' <- textToCString handler
    message' <- textToCString message
    result <- webkit_dom_dom_window_webkit_message_handlers_post_message window' handler' message'
    let result' = (/= 0) result
    touchManagedPtr window
    freeMem handler'
    freeMem message'
    return result'

data DOMDOMWindowWebkitMessageHandlersPostMessageMethodInfo
instance (signature ~ (T.Text -> T.Text -> m Bool), MonadIO m, IsDOMDOMWindow a) => O.MethodInfo DOMDOMWindowWebkitMessageHandlersPostMessageMethodInfo a signature where
    overloadedMethod _ = dOMDOMWindowWebkitMessageHandlersPostMessage