Skip to content

Commit 9d80a52

Browse files
Allow for global setting + use struct
1 parent 356f623 commit 9d80a52

File tree

1 file changed

+50
-63
lines changed

1 file changed

+50
-63
lines changed

index.bs

Lines changed: 50 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ spec: SCREEN-ORIENTATION; urlPrefix: https://www.w3.org/TR/screen-orientation
208208
text: screen orientation values lists; url: #dfn-screen-orientation-values-lists
209209
spec: FETCH; urlPrefix: https://fetch.spec.whatwg.org/
210210
type: dfn
211-
text: default User-Agent value; url: #default-user-agent-value
211+
text: default `User-Agent` value; url: #default-user-agent-value
212212
text: HTTP-network-or-cache fetch; url: #concept-http-network-or-cache-fetch
213213
text: request; url: #fetch-params-request
214214
spec: HTML; urlPrefix: https://html.spec.whatwg.org/multipage/
@@ -3149,9 +3149,6 @@ A [=remote end=] has a <dfn>timezone overrides map</dfn> which is a weak map bet
31493149
A [=remote end=] has an <dfn>unhandled prompt behavior overrides map</dfn> which is a
31503150
weak map between [=user contexts=] and [=unhandled prompt behavior struct=].
31513151

3152-
A [=remote end=] has a <dfn>user agent overrides map</dfn> which is a weak map
3153-
between [=navigables=] or [=user contexts=] and string or null.
3154-
31553152
A [=remote end=] has a <dfn>scripting enabled overrides map</dfn> which is a weak
31563153
map between [=navigables=] or [=user contexts=] and boolean or null.
31573154

@@ -5837,11 +5834,19 @@ EmulationCommand = (
58375834
emulation.SetScreenOrientationOverride //
58385835
emulation.SetScriptingEnabled //
58395836
emulation.SetTimezoneOverride
5840-
emulation.SetScreenOrientationOverride //
58415837
emulation.SetUserAgentOverride
58425838
)
58435839
</pre>
58445840

5841+
A [=BiDi session=] has an <dfn for=session>emulated user agent</dfn> which is a
5842+
[=struct=] with an [=struct/item=] named
5843+
<dfn for="emulated user agent">default user agent</dfn>, which is a string or null,
5844+
an [=struct/item=] named
5845+
<dfn for="emulated user agent">user context user agent</dfn>, which is a weak map
5846+
between [=user contexts=] and string, and an [=struct/item=] named
5847+
<dfn for="emulated user agent">navigable user agent</dfn>, which is a weak map
5848+
between [=navigables=] and string.
5849+
58455850
A [=remote end=] has a <dfn>forced colors mode theme overrides map</dfn> which is a weak map
58465851
between [=user contexts=] and string or null.
58475852

@@ -6317,58 +6322,40 @@ User-Agent on the given top-level traversables or user contexts.
63176322
</dd>
63186323
</dl>
63196324

6320-
<div algorithm="updated `User-Agent` getter steps">
6321-
The [=default User-Agent value=] getter steps is implementation defined. A
6322-
WebDriver-BiDi [=remote end=] must have an implementation that runs the following
6323-
steps:
6324-
6325-
1. Let |related navigables| be an empty list.
6326-
6327-
1. If [=default User-Agent value=] was accessed during execution of the
6328-
[=HTTP-network-or-cache fetch=] algorithm with |fetchParams|:
6329-
6330-
1. Let |request| be |fetchParams|’s [=request=].
6331-
6332-
1. If |request|'s [=request/client=] is not null, let |related navigables|
6333-
be the result of [=get related navigables=] with |request|'s
6334-
[=request/client=].
6335-
6336-
1. If [=default User-Agent value=] was accessed from [=NavigatorID=] interface:
6337-
6338-
1. Let |realm| be [=current Realm Record=].
6325+
<div algorithm>
6326+
The <dfn export>WebDriver BiDi emulated User-Agent</dfn> steps given
6327+
[=environment settings object=] |environment settings| are:
63396328

6340-
1. Let |environment settings| be the [=environment settings object=] whose
6341-
[=realm execution context=]'s Realm component is |realm|.
6329+
1. Let |related navigables| be the result of [=get related navigables=] with
6330+
|environment settings|.
63426331

6343-
1. Let |related navigables| be the result of [=get related navigables=] given
6344-
|environment settings|.
6332+
1. For each |navigable| or |related navigables|:
63456333

6346-
1. Let |emulated user agent| be the result of [=get emulated user agent=] given
6347-
|related navigables|.
6334+
1. Let |top-level navigable| be |navigable|'s [=navigable/top-level traversable=].
63486335

6349-
1. If |emulated user agent| is not null, return |emulated user agent|.
6336+
1. Let |user context| be |top-level navigable|'s [=associated user context=].
63506337

6351-
1. Return the result of implementation-defined steps in accordance with the
6352-
requirements of the [=default User-Agent value=] specification.
6338+
1. For each |session| in [=active BiDi sessions=]:
63536339

6354-
</div>
6340+
1. If |session|'s [=emulated user agent=]'s [=navigable user agent=] contains
6341+
|top-level navigable|, return |session|'s [=emulated user agent=]'s
6342+
[=navigable user agent=][|top-level navigable|].
63556343

6356-
<div algorithm>
6357-
To <dfn>get emulated user agent</dfn> given |navigables|:
6358-
6359-
1. For each |navigable| or |navigables|:
6344+
1. For each |session| in [=active BiDi sessions=]:
63606345

6361-
1. Let |top-level navigable| be |navigable|'s [=navigable/top-level traversable=].
6346+
1. If |session|'s [=emulated user agent=]'s [=user context user agent=]
6347+
contains |user context|, return |session|'s [=emulated user agent=]'s
6348+
[=user context user agent=][|user context|].
63626349

6363-
1. If [=user agent overrides map=] contains |top-level navigable|, return
6364-
[=user agent overrides map=][|top-level navigable|].
6350+
1. For each |session| in [=active BiDi sessions=]:
63656351

6366-
1. Let |user context| be |top-level navigable|'s [=associated user context=].
6352+
1. Let |default emulated user agent| be |session|'s [=emulated user agent=]'s
6353+
[=default user agent=].
63676354

6368-
1. If [=user agent overrides map=] contains |user context|, return
6369-
[=user agent overrides map=][|user context|].
6355+
1. If |default emulated user agent| is not null, return
6356+
|default emulated user agent|.
63706357

6371-
1. Return null.
6358+
1. Return null.
63726359

63736360
</div>
63746361

@@ -6380,45 +6367,45 @@ The [=remote end steps=] with |command parameters| are:
63806367
and |command parameters| [=map/contains=] "<code>context</code>",
63816368
return [=error=] with [=error code=] [=invalid argument=].
63826369

6383-
1. If |command parameters| doesn't [=map/contain=] "<code>userContexts</code>"
6384-
and |command parameters| doesn't [=map/contain=] "<code>context</code>",
6385-
return [=error=] with [=error code=] [=invalid argument=].
6386-
63876370
1. Let |emulated user agent| be null.
63886371

63896372
1. If |command parameters| [=map/contains=] "<code>userAgent</code>":
63906373

63916374
1. Set |emulated user agent| to |command parameters|["<code>userAgent</code>"].
63926375

6393-
1. Let |navigables| be a [=/set=].
6394-
6395-
1. If the <code>contexts</code> field of |command parameters| is present:
6376+
1. If |command parameters| [=map/contains=] "<code>context</code>":
63966377

63976378
1. Let |navigables| be the result of [=trying=] to
63986379
[=get valid top-level traversables by ids=] with
63996380
|command parameters|["<code>contexts</code>"].
64006381

6401-
1. Otherwise:
6382+
1. For each |navigable| of |navigables|:
64026383

6403-
1. Assert the <code>userContexts</code> field of |command parameters| is present.
6384+
1. If |emulated user agent| is null, [=map/remove=] |navigable| from
6385+
|session|'s [=emulated user agent=]'s [=navigable user agent=].
6386+
6387+
1. Otherwise, [=map/set=] |session|'s [=emulated user agent=]'s
6388+
[=navigable user agent=][|navigable|] to |emulated user agent|.
6389+
6390+
1. Return [=success=] with data null.
6391+
6392+
1. If |command parameters| [=map/contains=] "<code>userContexts</code>":
64046393

64056394
1. Let |user contexts| be the result of [=trying=] to [=get valid user contexts=]
64066395
with |command parameters|["<code>userContexts</code>"].
64076396

64086397
1. For each |user context| of |user contexts|:
64096398

6410-
1. [=map/Set=] [=user agent overrides map=][|user context|] to
6411-
|emulated user agent|.
6412-
6413-
1. [=list/For each=] |top-level traversable| of the list of all
6414-
[=/top-level traversables=] whose [=associated user context=] is
6415-
|user context|:
6399+
1. If |emulated user agent| is null, [=map/remove=] |navigable| from
6400+
|session|'s [=emulated user agent=]'s [=user context user agent=].
64166401

6417-
1. [=list/Append=] |top-level traversable| to |navigables|.
6402+
1. Otherwise, [=map/set=] |session|'s [=emulated user agent=]'s
6403+
[=user context user agent=][|navigable|] to |emulated user agent|.
64186404

6419-
1. For each |navigable| of |navigables|:
6405+
1. Return [=success=] with data null.
64206406

6421-
1. [=map/Set=] [=user agent overrides map=][|navigable|] to |emulated user agent|.
6407+
1. [=map/Set=] |session|'s [=emulated user agent=]'s [=default user agent=] to
6408+
|emulated user agent|.
64226409

64236410
1. Return [=success=] with data null.
64246411

0 commit comments

Comments
 (0)