@@ -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,15 @@ 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 area</dfn> is a [=struct=] with an [=struct/item=] named
3215+ <dfn attribute for="screen area">height</dfn> which is an integer,
3216+ a [=struct/item=] named <dfn attribute for="screen area">width</dfn> which is an integer,
3217+ a [=struct/item=] named <dfn attribute for="screen area">x</dfn> which is an integer,
3218+ a [=struct/item=] named <dfn attribute for="screen area">y</dfn> which is an integer.
3219+
3220+ A [=remote end=] has a <dfn>screen area overrides map</dfn> which is a weak map between
3221+ [=navigables=] or [=user contexts=] and [=screen area=] .
3222+
32133223A [=remote end=] has a <dfn>timezone overrides map</dfn> which is a weak map between
32143224[=navigables=] or [=user contexts=] and string.
32153225
@@ -6445,6 +6455,116 @@ The [=remote end steps=] with |command parameters| and |session| are:
64456455
64466456</div>
64476457
6458+ #### The emulation.setScreenAreaOverride Command #### {#command-emulation-setScreenAreaOverride}
6459+
6460+ The <dfn export for=commands>emulation.setScreenAreaOverride</dfn> command
6461+ emulates [=web-exposed screen area=] and [=web-exposed available screen area=] of the given top-level traversables or user contexts.
6462+
6463+ <dl>
6464+ <dt> Command Type</dt>
6465+ <dd>
6466+ <pre class="cddl" data-cddl-module="remote-cddl">
6467+ emulation.SetScreenAreaOverride = (
6468+ method: "emulation.setScreenAreaOverride",
6469+ params: emulation.SetScreenAreaOverrideParameters
6470+ )
6471+
6472+ emulation.ScreenArea = {
6473+ width: js-uint,
6474+ height: js-uint
6475+ }
6476+
6477+ emulation.SetScreenAreaOverrideParameters = {
6478+ screenArea: emulation.ScreenArea / null,
6479+ ? contexts: [+browsingContext.BrowsingContext] ,
6480+ ? userContexts: [+browser.UserContext] ,
6481+ }
6482+ </pre>
6483+ </dd>
6484+ <dt> Return Type</dt>
6485+ <dd>
6486+ <pre class="cddl" data-cddl-module="local-cddl">
6487+ emulation.SetScreenAreaOverrideResult = EmptyResult
6488+ </pre>
6489+ </dd>
6490+ </dl>
6491+
6492+ <div algorithm>
6493+
6494+ The <dfn export>WebDriver BiDi emulated screen area</dfn> steps given a given [=/navigable=] |navigable|:
6495+
6496+ 1. Let |top-level traversable| be |navigable|’s [=navigable/top-level traversable=] .
6497+
6498+ 1. Let |user context| be |top-level traversable|'s [=associated user context=] .
6499+
6500+ 1. If [=screen area overrides map=] [=map/contains=] |top-level traversable|, return
6501+ [=screen area overrides map=] [|top-level traversable|] .
6502+
6503+ 1. If [=screen area overrides map=] [=map/contains=] |user context|, return
6504+ [=screen area overrides map=] [|user context|] .
6505+
6506+ 1. Return null
6507+
6508+ </div>
6509+
6510+ <div algorithm="remote end steps for emulation.setScreenAreaOverride">
6511+
6512+ The [=remote end steps=] with |command parameters| are:
6513+
6514+ 1. If |command parameters| [=map/contains=] "<code> userContexts</code> "
6515+ and |command parameters| [=map/contains=] "<code> contexts</code> ",
6516+ return [=error=] with [=error code=] [=invalid argument=] .
6517+
6518+ 1. If |command parameters| doesn't [=map/contain=] "<code> userContexts</code> "
6519+ and |command parameters| doesn't [=map/contain=] "<code> contexts</code> ",
6520+ return [=error=] with [=error code=] [=invalid argument=] .
6521+
6522+ 1. Let |emulated screen area| be |command parameters|["<code>screenArea</code>"] .
6523+
6524+ 1. If |emulated screen area| is not null:
6525+
6526+ 1. [=map/Set=] |emulated screen area|["<code>x</code>"] to 0.
6527+
6528+ 1. [=map/Set=] |emulated screen area|["<code>y</code>"] to 0.
6529+
6530+ 1. Let |navigables| be a [=/set=] .
6531+
6532+ 1. If the <code> contexts</code> field of |command parameters| is present:
6533+
6534+ 1. Let |navigables| be the result of [=trying=] to
6535+ [=get valid top-level traversables by ids=] with
6536+ |command parameters|["<code>contexts</code>"] .
6537+
6538+ 1. Otherwise:
6539+
6540+ 1. Assert the <code> userContexts</code> field of |command parameters| is present.
6541+
6542+ 1. Let |user contexts| be the result of [=trying=] to [=get valid user contexts=]
6543+ with |command parameters|["<code>userContexts</code>"] .
6544+
6545+ 1. For each |user context| of |user contexts|:
6546+
6547+ 1. If |emulated screen area| is null, [=map/remove=] |user context| from
6548+ [=screen area overrides map=] .
6549+
6550+ 1. Otherwise, [=map/set=] [=screen area overrides map=] [|user context|] to |emulated screen area|.
6551+
6552+ 1. [=list/For each=] |top-level traversable| of the list of all
6553+ [=/top-level traversables=] whose [=associated user context=] is
6554+ |user context|:
6555+
6556+ 1. [=list/Append=] |top-level traversable| to |navigables|.
6557+
6558+ 1. For each |navigable| of |navigables|:
6559+
6560+ 1. If |emulated screen area| is null, [=map/remove=] |navigable| from [=screen area overrides map=] .
6561+
6562+ 1. Otherwise, [=map/set=] [=screen area overrides map=] [|navigable|] to |emulated screen area|.
6563+
6564+ 1. Return [=success=] with data null.
6565+
6566+ </div>
6567+
64486568#### The emulation.setScreenOrientationOverride Command #### {#command-emulation-setScreenOrientationOverride}
64496569
64506570The <dfn export for=commands>emulation.setScreenOrientationOverride</dfn> command
0 commit comments