@@ -285,6 +285,7 @@ spec: CSSOM-VIEW; urlPrefix: https://drafts.csswg.org/cssom-view/
285285 text: visual viewport page left; url: #dom-visualviewport-pageleft
286286 text: visual viewport page top; url: #dom-visualviewport-pagetop
287287 text: visual viewport; url: #visual-viewport
288+ text: web-exposed available screen area; url: #web-exposed-available-screen-area
288289 text: web-exposed screen area; url: #web-exposed-screen-area
289290spec: DOM; urlPrefix: https://dom.spec.whatwg.org/
290291 type: dfn
@@ -3210,6 +3211,18 @@ A [=remote end=] has a <dfn>viewport overrides map</dfn> which is a weak map bet
32103211A [=remote end=] has a <dfn>locale overrides map</dfn> which is a weak map between
32113212[=navigables=] or [=user contexts=] and string.
32123213
3214+ A <dfn>screen settings</dfn> is a [=struct=] with an [=struct/item=] named
3215+ <dfn attribute for="screen settings">height</dfn> which is an integer,
3216+ an [=struct/item=] named <dfn attribute for="screen settings">width</dfn> which is an integer,
3217+ an [=struct/item=] named <dfn attribute for="screen settings">x</dfn> which is an integer,
3218+ an [=struct/item=] named <dfn attribute for="screen settings">y</dfn> which is an integer.
3219+
3220+ A [=remote end=] has a <dfn>screen settings overrides</dfn> which is a [=struct=] with
3221+ an [=struct/item=] named <dfn for="screen settings overrides">user context screen settings</dfn> ,
3222+ which is a weak map between [=user contexts=] and [=screen settings=] ,
3223+ and an [=struct/item=] named <dfn for="screen settings overrides">navigable screen settings</dfn> ,
3224+ which is a weak map between [=navigables=] and [=screen settings=] .
3225+
32133226A [=remote end=] has a <dfn>timezone overrides map</dfn> which is a weak map between
32143227[=navigables=] or [=user contexts=] and string.
32153228
@@ -6445,6 +6458,136 @@ The [=remote end steps=] with |command parameters| and |session| are:
64456458
64466459</div>
64476460
6461+ #### The emulation.setScreenSettingsOverride Command #### {#command-emulation-setScreenSettingsOverride}
6462+
6463+ The <dfn export for=commands>emulation.setScreenSettingsOverride</dfn> command
6464+ emulates [=web-exposed screen area=] and [=web-exposed available screen area=] of the given top-level traversables or user contexts.
6465+
6466+ <dl>
6467+ <dt> Command Type</dt>
6468+ <dd>
6469+ <pre class="cddl" data-cddl-module="remote-cddl">
6470+ emulation.SetScreenSettingsOverride = (
6471+ method: "emulation.setScreenSettingsOverride",
6472+ params: emulation.SetScreenSettingsOverrideParameters
6473+ )
6474+
6475+ emulation.ScreenArea = {
6476+ width: js-uint,
6477+ height: js-uint
6478+ }
6479+
6480+ emulation.SetScreenSettingsOverrideParameters = {
6481+ screenArea: emulation.ScreenArea / null,
6482+ ? contexts: [+browsingContext.BrowsingContext] ,
6483+ ? userContexts: [+browser.UserContext] ,
6484+ }
6485+ </pre>
6486+ </dd>
6487+ <dt> Return Type</dt>
6488+ <dd>
6489+ <pre class="cddl" data-cddl-module="local-cddl">
6490+ emulation.SetScreenSettingsOverrideResult = EmptyResult
6491+ </pre>
6492+ </dd>
6493+ </dl>
6494+
6495+ <div algorithm>
6496+
6497+ The <dfn export>WebDriver BiDi emulated available screen area</dfn> steps given [=/navigable=] |navigable|:
6498+
6499+ 1. Let |top-level traversable| be |navigable|’s [=navigable/top-level traversable=] .
6500+
6501+ 1. Let |user context| be |top-level traversable|'s [=associated user context=] .
6502+
6503+ 1. If [=screen settings overrides=] [=map/contains=] |top-level traversable|, return
6504+ [=screen settings overrides=] [|top-level traversable|] .
6505+
6506+ 1. If [=screen settings overrides=] [=map/contains=] |user context|, return
6507+ [=screen settings overrides=] [|user context|] .
6508+
6509+ 1. Return null
6510+
6511+ </div>
6512+
6513+ <div algorithm>
6514+
6515+ The <dfn export>WebDriver BiDi emulated total screen area</dfn> steps given [=/navigable=] |navigable|:
6516+
6517+ 1. Let |top-level traversable| be |navigable|’s [=navigable/top-level traversable=] .
6518+
6519+ 1. Let |user context| be |top-level traversable|'s [=associated user context=] .
6520+
6521+ 1. If [=screen settings overrides=] [=map/contains=] |top-level traversable|, return
6522+ [=screen settings overrides=] [|top-level traversable|] .
6523+
6524+ 1. If [=screen settings overrides=] [=map/contains=] |user context|, return
6525+ [=screen settings overrides=] [|user context|] .
6526+
6527+ 1. Return null
6528+
6529+ </div>
6530+
6531+ <div algorithm="remote end steps for emulation.setScreenSettingsOverride">
6532+
6533+ The [=remote end steps=] with |command parameters| are:
6534+
6535+ 1. If |command parameters| [=map/contains=] "<code> userContexts</code> "
6536+ and |command parameters| [=map/contains=] "<code> contexts</code> ",
6537+ return [=error=] with [=error code=] [=invalid argument=] .
6538+
6539+ 1. If |command parameters| doesn't [=map/contain=] "<code> userContexts</code> "
6540+ and |command parameters| doesn't [=map/contain=] "<code> contexts</code> ",
6541+ return [=error=] with [=error code=] [=invalid argument=] .
6542+
6543+ 1. Let |emulated screen area| be |command parameters|["<code>screenArea</code>"] .
6544+
6545+ 1. If |emulated screen area| is not null:
6546+
6547+ 1. [=map/Set=] |emulated screen area|["<code>x</code>"] to 0.
6548+
6549+ 1. [=map/Set=] |emulated screen area|["<code>y</code>"] to 0.
6550+
6551+ 1. Let |navigables| be a [=/set=] .
6552+
6553+ 1. If the <code> contexts</code> field of |command parameters| is present:
6554+
6555+ 1. Let |navigables| be the result of [=trying=] to
6556+ [=get valid top-level traversables by ids=] with
6557+ |command parameters|["<code>contexts</code>"] .
6558+
6559+ 1. Let |target| be [=screen settings overrides/navigable screen settings=] .
6560+
6561+ 1. For each |navigable| of |navigables|:
6562+
6563+ 1. If |emulated screen area| is null, [=map/remove=] |navigable|
6564+ from |target|.
6565+
6566+ 1. Otherwise, [=map/set=] |target|[|navigable|]
6567+ to |emulated screen area|.
6568+
6569+ 1. Return [=success=] with data null.
6570+
6571+ 1. Otherwise:
6572+
6573+ 1. Assert the <code> userContexts</code> field of |command parameters| is present.
6574+
6575+ 1. Let |user contexts| be the result of [=trying=] to [=get valid user contexts=]
6576+ with |command parameters|["<code>userContexts</code>"] .
6577+
6578+ 1. Let |target| be [=screen settings overrides/user context screen settings=] .
6579+
6580+ 1. For each |user context| of |user contexts|:
6581+
6582+ 1. If |emulated screen area| is null, [=map/remove=] |user context| from
6583+ |target|.
6584+
6585+ 1. Otherwise, [=map/set=] |target|[|user context|] to |emulated screen area|.
6586+
6587+ 1. Return [=success=] with data null.
6588+
6589+ </div>
6590+
64486591#### The emulation.setScreenOrientationOverride Command #### {#command-emulation-setScreenOrientationOverride}
64496592
64506593The <dfn export for=commands>emulation.setScreenOrientationOverride</dfn> command
0 commit comments