Skip to content

Commit 40c6c16

Browse files
squash
1 parent ef4a35d commit 40c6c16

File tree

1 file changed

+125
-1
lines changed

1 file changed

+125
-1
lines changed

index.bs

Lines changed: 125 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5829,10 +5829,20 @@ EmulationCommand = (
58295829
emulation.SetLocaleOverride //
58305830
emulation.SetScreenOrientationOverride //
58315831
emulation.SetScriptingEnabled //
5832-
emulation.SetTimezoneOverride
5832+
emulation.SetTimezoneOverride //
5833+
emulation.SetUserAgentOverride
58335834
)
58345835
</pre>
58355836

5837+
A [=BiDi session=] has an <dfn for=session>emulated user agent</dfn> which is a
5838+
[=struct=] with an [=struct/item=] named
5839+
<dfn for="emulated user agent">default user agent</dfn>, which is a string or null,
5840+
an [=struct/item=] named
5841+
<dfn for="emulated user agent">user context user agent</dfn>, which is a weak map
5842+
between [=user contexts=] and string, and an [=struct/item=] named
5843+
<dfn for="emulated user agent">navigable user agent</dfn>, which is a weak map
5844+
between [=navigables=] and string.
5845+
58365846
A [=remote end=] has a <dfn>forced colors mode theme overrides map</dfn> which is a weak map
58375847
between [=user contexts=] and string or null.
58385848

@@ -6279,6 +6289,120 @@ The [=remote end steps=] with |command parameters| are:
62796289

62806290
</div>
62816291

6292+
#### The emulation.setUserAgentOverride Command #### {#command-emulation-setUserAgentOverride}
6293+
6294+
The <dfn export for=commands>emulation.setUserAgentOverride</dfn> command modifies
6295+
User-Agent on the given top-level traversables or user contexts.
6296+
6297+
<dl>
6298+
<dt>Command Type</dt>
6299+
<dd>
6300+
<pre class="cddl" data-cddl-module="remote-cddl">
6301+
emulation.SetUserAgentOverride = (
6302+
method: "emulation.setUserAgentOverride",
6303+
params: emulation.SetUserAgentOverrideParameters
6304+
)
6305+
6306+
emulation.SetUserAgentOverrideParameters = {
6307+
userAgent: text / null,
6308+
? contexts: [+browsingContext.BrowsingContext],
6309+
? userContexts: [+browser.UserContext],
6310+
}
6311+
</pre>
6312+
</dd>
6313+
<dt>Result Type</dt>
6314+
<dd>
6315+
<code>
6316+
EmptyResult
6317+
</code>
6318+
</dd>
6319+
</dl>
6320+
6321+
<div algorithm>
6322+
The <dfn export>WebDriver BiDi emulated User-Agent</dfn> steps given
6323+
[=environment settings object=] |environment settings| are:
6324+
6325+
1. Let |related navigables| be the result of [=get related navigables=] with
6326+
|environment settings|.
6327+
6328+
1. For each |navigable| or |related navigables|:
6329+
6330+
1. Let |top-level navigable| be |navigable|'s [=navigable/top-level traversable=].
6331+
6332+
1. Let |user context| be |top-level navigable|'s [=associated user context=].
6333+
6334+
1. For each |session| in [=active BiDi sessions=]:
6335+
6336+
1. If |session|'s [=emulated user agent=]'s [=navigable user agent=] contains
6337+
|top-level navigable|, return |session|'s [=emulated user agent=]'s
6338+
[=navigable user agent=][|top-level navigable|].
6339+
6340+
1. For each |session| in [=active BiDi sessions=]:
6341+
6342+
1. If |session|'s [=emulated user agent=]'s [=user context user agent=]
6343+
contains |user context|, return |session|'s [=emulated user agent=]'s
6344+
[=user context user agent=][|user context|].
6345+
6346+
1. For each |session| in [=active BiDi sessions=]:
6347+
6348+
1. Let |default emulated user agent| be |session|'s [=emulated user agent=]'s
6349+
[=default user agent=].
6350+
6351+
1. If |default emulated user agent| is not null, return
6352+
|default emulated user agent|.
6353+
6354+
1. Return null.
6355+
6356+
</div>
6357+
6358+
<div algorithm="remote end steps for emulation.setUserAgentOverride">
6359+
6360+
The [=remote end steps=] given |session| and |command parameters| are:
6361+
6362+
1. If |command parameters| [=map/contains=] "<code>userContexts</code>"
6363+
and |command parameters| [=map/contains=] "<code>contexts</code>",
6364+
return [=error=] with [=error code=] [=invalid argument=].
6365+
6366+
1. Let |emulated user agent| be |command parameters|["<code>userAgent</code>"].
6367+
6368+
1. If |command parameters| [=map/contains=] "<code>contexts</code>":
6369+
6370+
1. Let |navigables| be the result of [=trying=] to
6371+
[=get valid top-level traversables by ids=] with
6372+
|command parameters|["<code>contexts</code>"].
6373+
6374+
1. For each |navigable| of |navigables|:
6375+
6376+
1. If |emulated user agent| is null, [=map/remove=] |navigable| from
6377+
|session|'s [=emulated user agent=]'s [=navigable user agent=].
6378+
6379+
1. Otherwise, [=map/set=] |session|'s [=emulated user agent=]'s
6380+
[=navigable user agent=][|navigable|] to |emulated user agent|.
6381+
6382+
1. Return [=success=] with data null.
6383+
6384+
1. If |command parameters| [=map/contains=] "<code>userContexts</code>":
6385+
6386+
1. Let |user contexts| be the result of [=trying=] to [=get valid user contexts=]
6387+
with |command parameters|["<code>userContexts</code>"].
6388+
6389+
1. For each |user context| of |user contexts|:
6390+
6391+
1. If |emulated user agent| is null, [=map/remove=] |user context| from
6392+
|session|'s [=emulated user agent=]'s [=user context user agent=].
6393+
6394+
1. Otherwise, [=map/set=] |session|'s [=emulated user agent=]'s
6395+
[=user context user agent=][|user context|] to |emulated user agent|.
6396+
6397+
1. Return [=success=] with data null.
6398+
6399+
1. [=map/Set=] |session|'s [=emulated user agent=]'s [=default user agent=] to
6400+
|emulated user agent|.
6401+
6402+
1. Return [=success=] with data null.
6403+
6404+
</div>
6405+
62826406
#### The emulation.setScriptingEnabled Command #### {#command-emulation-setScriptingEnabled}
62836407

62846408
The <dfn export for=commands>emulation.setScriptingEnabled</dfn> command emulates

0 commit comments

Comments
 (0)