Skip to content

Commit d304c9b

Browse files
lutiensadym-chromiumjuliandescottes
authored
Add "emulation.setScreenSettingsOverride" command. (#1030)
* Add "emulation.setScreenAreaOverride" command. * Rename command to "emulation.setScreenSettingsOverride". * Update index.bs Co-authored-by: Maksim Sadym <[email protected]> * Set an override per navigable earlier. * Use struct for "screen settings overrides". * Fix "navigable screen settings" definition. * Remove unneeded loop over navigables * Use "an item" instead "a item" * Have separate hooks for available and total screen areas. * Update index.bs Co-authored-by: Julian Descottes <[email protected]> --------- Co-authored-by: Maksim Sadym <[email protected]> Co-authored-by: Julian Descottes <[email protected]>
1 parent 280f2cc commit d304c9b

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

index.bs

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
289290
spec: 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
32103211
A [=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+
32133226
A [=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

64506593
The <dfn export for=commands>emulation.setScreenOrientationOverride</dfn> command

0 commit comments

Comments
 (0)