@@ -5829,10 +5829,20 @@ EmulationCommand = (
5829
5829
emulation.SetLocaleOverride //
5830
5830
emulation.SetScreenOrientationOverride //
5831
5831
emulation.SetScriptingEnabled //
5832
- emulation.SetTimezoneOverride
5832
+ emulation.SetTimezoneOverride //
5833
+ emulation.SetUserAgentOverride
5833
5834
)
5834
5835
</pre>
5835
5836
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
+
5836
5846
A [=remote end=] has a <dfn>forced colors mode theme overrides map</dfn> which is a weak map
5837
5847
between [=user contexts=] and string or null.
5838
5848
@@ -6279,6 +6289,120 @@ The [=remote end steps=] with |command parameters| are:
6279
6289
6280
6290
</div>
6281
6291
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
+
6282
6406
#### The emulation.setScriptingEnabled Command #### {#command-emulation-setScriptingEnabled}
6283
6407
6284
6408
The <dfn export for=commands>emulation.setScriptingEnabled</dfn> command emulates
@@ -9771,7 +9895,7 @@ To <dfn export>run WebDriver BiDi preload scripts</dfn> given |environment setti
9771
9895
1. For each |session| in [=active BiDi sessions=] :
9772
9896
9773
9897
1. For each |preload script| in |session|'s [=preload script map=]' s
9774
- [=values=] :
9898
+ [=map/ values=] :
9775
9899
9776
9900
1. If |preload script|'s <code>user contexts</code>' s [=set/size=] is not zero:
9777
9901
0 commit comments