From 40c6c16aab219d016ae5ce01c7680e48b6e2a38e Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Wed, 10 Sep 2025 13:51:11 +0200 Subject: [PATCH 1/2] squash --- index.bs | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 91f93bab..64652141 100644 --- a/index.bs +++ b/index.bs @@ -5829,10 +5829,20 @@ EmulationCommand = ( emulation.SetLocaleOverride // emulation.SetScreenOrientationOverride // emulation.SetScriptingEnabled // - emulation.SetTimezoneOverride + emulation.SetTimezoneOverride // + emulation.SetUserAgentOverride ) +A [=BiDi session=] has an emulated user agent which is a +[=struct=] with an [=struct/item=] named +default user agent, which is a string or null, +an [=struct/item=] named +user context user agent, which is a weak map +between [=user contexts=] and string, and an [=struct/item=] named +navigable user agent, which is a weak map +between [=navigables=] and string. + A [=remote end=] has a forced colors mode theme overrides map which is a weak map between [=user contexts=] and string or null. @@ -6279,6 +6289,120 @@ The [=remote end steps=] with |command parameters| are: +#### The emulation.setUserAgentOverride Command #### {#command-emulation-setUserAgentOverride} + +The emulation.setUserAgentOverride command modifies +User-Agent on the given top-level traversables or user contexts. + +
+
Command Type
+
+
+      emulation.SetUserAgentOverride = (
+        method: "emulation.setUserAgentOverride",
+        params: emulation.SetUserAgentOverrideParameters
+      )
+
+      emulation.SetUserAgentOverrideParameters = {
+        userAgent: text / null,
+        ? contexts: [+browsingContext.BrowsingContext],
+        ? userContexts: [+browser.UserContext],
+      }
+    
+
+
Result Type
+
+ + EmptyResult + +
+
+ +
+The WebDriver BiDi emulated User-Agent steps given +[=environment settings object=] |environment settings| are: + +1. Let |related navigables| be the result of [=get related navigables=] with + |environment settings|. + +1. For each |navigable| or |related navigables|: + + 1. Let |top-level navigable| be |navigable|'s [=navigable/top-level traversable=]. + + 1. Let |user context| be |top-level navigable|'s [=associated user context=]. + + 1. For each |session| in [=active BiDi sessions=]: + + 1. If |session|'s [=emulated user agent=]'s [=navigable user agent=] contains + |top-level navigable|, return |session|'s [=emulated user agent=]'s + [=navigable user agent=][|top-level navigable|]. + + 1. For each |session| in [=active BiDi sessions=]: + + 1. If |session|'s [=emulated user agent=]'s [=user context user agent=] + contains |user context|, return |session|'s [=emulated user agent=]'s + [=user context user agent=][|user context|]. + +1. For each |session| in [=active BiDi sessions=]: + + 1. Let |default emulated user agent| be |session|'s [=emulated user agent=]'s + [=default user agent=]. + + 1. If |default emulated user agent| is not null, return + |default emulated user agent|. + +1. Return null. + +
+ +
+ +The [=remote end steps=] given |session| and |command parameters| are: + +1. If |command parameters| [=map/contains=] "userContexts" + and |command parameters| [=map/contains=] "contexts", + return [=error=] with [=error code=] [=invalid argument=]. + +1. Let |emulated user agent| be |command parameters|["userAgent"]. + +1. If |command parameters| [=map/contains=] "contexts": + + 1. Let |navigables| be the result of [=trying=] to + [=get valid top-level traversables by ids=] with + |command parameters|["contexts"]. + + 1. For each |navigable| of |navigables|: + + 1. If |emulated user agent| is null, [=map/remove=] |navigable| from + |session|'s [=emulated user agent=]'s [=navigable user agent=]. + + 1. Otherwise, [=map/set=] |session|'s [=emulated user agent=]'s + [=navigable user agent=][|navigable|] to |emulated user agent|. + + 1. Return [=success=] with data null. + +1. If |command parameters| [=map/contains=] "userContexts": + + 1. Let |user contexts| be the result of [=trying=] to [=get valid user contexts=] + with |command parameters|["userContexts"]. + + 1. For each |user context| of |user contexts|: + + 1. If |emulated user agent| is null, [=map/remove=] |user context| from + |session|'s [=emulated user agent=]'s [=user context user agent=]. + + 1. Otherwise, [=map/set=] |session|'s [=emulated user agent=]'s + [=user context user agent=][|user context|] to |emulated user agent|. + + 1. Return [=success=] with data null. + +1. [=map/Set=] |session|'s [=emulated user agent=]'s [=default user agent=] to + |emulated user agent|. + +1. Return [=success=] with data null. + +
+ #### The emulation.setScriptingEnabled Command #### {#command-emulation-setScriptingEnabled} The emulation.setScriptingEnabled command emulates From bae27557585d8de8bc80fe14d81fbdf626bdd11e Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Wed, 10 Sep 2025 13:56:08 +0200 Subject: [PATCH 2/2] fix build --- index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.bs b/index.bs index 64652141..5ec70dd7 100644 --- a/index.bs +++ b/index.bs @@ -9895,7 +9895,7 @@ To run WebDriver BiDi preload scripts given |environment setti 1. For each |session| in [=active BiDi sessions=]: 1. For each |preload script| in |session|'s [=preload script map=]'s - [=values=]: + [=map/values=]: 1. If |preload script|'s user contexts's [=set/size=] is not zero: