@@ -272,6 +272,10 @@ spec: HR-TIME; urlPrefix: https://w3c.github.io/hr-time/
272272spec: RFC4648; urlPrefix: https://datatracker.ietf.org/doc/html/rfc4648
273273 type: dfn
274274 text: Base64 Encode; url: section-4
275+ spec: CSS-OVERFLOW-3; urlPrefix: https://drafts.csswg.org/css-overflow-3/
276+ type: dfn
277+ text: classic scrollbars; url: #classic-scrollbars
278+ text: overlay scrollbars; url: #overlay-scrollbars
275279spec: CSS-VALUES-3; urlPrefix: https://drafts.csswg.org/css-values-3/
276280 type: dfn
277281 text: absolute lengths; url: #absolute-lengths
@@ -5973,6 +5977,7 @@ EmulationCommand = (
59735977 emulation.SetScreenOrientationOverride //
59745978 emulation.SetScreenSettingsOverride //
59755979 emulation.SetScriptingEnabled //
5980+ emulation.SetScrollbarTypeOverride //
59765981 emulation.SetTimezoneOverride //
59775982 emulation.SetTouchOverride //
59785983 emulation.SetUserAgentOverride
@@ -5987,6 +5992,7 @@ EmulationResult = (
59875992 emulation.SetLocaleOverrideResult /
59885993 emulation.SetScreenOrientationOverrideResult /
59895994 emulation.SetScriptingEnabledResult /
5995+ emulation.SetScrollbarTypeOverrideResult /
59905996 emulation.SetTimezoneOverrideResult /
59915997 emulation.SetTouchOverrideResult /
59925998 emulation.SetUserAgentOverrideResult
@@ -5997,14 +6003,14 @@ A <dfn export>stored config</dfn> is a [=struct=] with:
59976003* [=struct/item=] named <dfn for="stored config">scrollbar type</dfn> which is a string or null initially null.
59986004
59996005A [=BiDi session=] has an <dfn for=session>session stored configuration</dfn> which is a [=struct=] with:
6000- * [=struct/item=] named <dfn for="session stored configuration">default </dfn> which is a [=stored config=], initially an empty [=stored config=];
6006+ * [=struct/item=] named <dfn for="session stored configuration">global </dfn> which is a [=stored config=], initially an empty [=stored config=];
60016007* [=struct/item=] named <dfn for="session stored configuration">user contexts</dfn> which is a weak map between [=user context|user contexts=] and [=stored config=], initially empty;
60026008* [=struct/item=] named <dfn for="session stored configuration">navigables</dfn> which is a weak map between [=/navigables=] and [=stored config=], initially empty.
60036009
60046010<div algorithm>
60056011
60066012Note: this algorithm allows for accessing the stored configuration for a given navigable by checking the stored
6007- configuration for the navigable, then the user context, then the default for all the active sessions.
6013+ configuration for the navigable, then the user context, then the global for all the active sessions.
60086014
60096015To <dfn export>get stored config</dfn> of [=stored config=]'s [=struct/item=] |config item| for
60106016[=/navigables|navigable=] |navigable|:
@@ -6029,42 +6035,42 @@ To <dfn export>get stored config</dfn> of [=stored config=]'s [=struct/item=] |c
60296035
603060361. For each |session| in [=active BiDi sessions=]:
60316037
6032- 1. If |session|'s |session|'s [=session stored configuration=]'s [=session stored configuration/default =]
6038+ 1. If |session|'s |session|'s [=session stored configuration=]'s [=session stored configuration/global =]
60336039 |config item| is not null, return |session|'s [=session stored configuration=]'s
6034- [=session stored configuration/default =]'s |config item|.
6040+ [=session stored configuration/global =]'s |config item|.
60356041
603660421. Return null.
60376043
60386044</div>
60396045
60406046<div algorithm>
60416047
6042- To <dfn export >store global config</dfn> [=stored config=]'s [=struct/item=] |config item| |config| in [=BiDi session=]
6048+ To <dfn>store global config</dfn> [=stored config=]'s [=struct/item=] |config item| |config| in [=BiDi session=]
60436049|session|:
60446050
6045- 1. Set |session|'s [=session stored configuration=]'s [=session stored configuration/default =]'s |config item| to
6051+ 1. Set |session|'s [=session stored configuration=]'s [=session stored configuration/global =]'s |config item| to
60466052 |config|.
60476053
60486054</div>
60496055
60506056<div algorithm>
60516057
6052- To <dfn export >store user context config</dfn> [=stored config=]'s [=struct/item=] |config item| |config| for
6058+ To <dfn>store user context config</dfn> [=stored config=]'s [=struct/item=] |config item| |config| for
60536059|user context| in [=BiDi session=] |session|:
60546060
605560611. If |config| is null:
60566062
60576063 1. If |session|'s [=session stored configuration=]'s [=session stored configuration/user contexts=] [=map/contains=]
60586064 |user context|:
6059-
6065+
60606066 1. Set |session|'s [=session stored configuration=]'s
60616067 [=session stored configuration/user contexts=][|user context|]'s |config item| to null.
6062-
6068+
60636069 1. If |session|'s [=session stored configuration=]'s
60646070 [=session stored configuration/user contexts=][|user context|] contains only nulls, remove
60656071 |user context| from |session|'s [=session stored configuration=]'s
60666072 [=session stored configuration/user contexts=].
6067-
6073+
60686074 1. Return.
60696075
607060761. If |session|'s [=session stored configuration=]'s [=session stored configuration/user contexts=] does not
@@ -6078,22 +6084,22 @@ To <dfn export>store user context config</dfn> [=stored config=]'s [=struct/item
60786084
60796085<div algorithm>
60806086
6081- To <dfn export >store navigable config</dfn> [=stored config=]'s [=struct/item=] |config item| |config| for
6087+ To <dfn>store navigable config</dfn> [=stored config=]'s [=struct/item=] |config item| |config| for
60826088|navigable| in [=BiDi session=] |session|:
60836089
608460901. If |config| is null:
60856091
60866092 1. If |session|'s [=session stored configuration=]'s [=session stored configuration/navigables=] [=map/contains=]
60876093 |navigable|:
6088-
6094+
60896095 1. Set |session|'s [=session stored configuration=]'s
60906096 [=session stored configuration/navigables=][|navigable|]'s |config item| to null.
6091-
6097+
60926098 1. If |session|'s [=session stored configuration=]'s
60936099 [=session stored configuration/navigables=][|navigable|] contains only nulls, remove
60946100 |navigable| from |session|'s [=session stored configuration=]'s
60956101 [=session stored configuration/navigables=].
6096-
6102+
60976103 1. Return.
60986104
609961051. If |session|'s [=session stored configuration=]'s [=session stored configuration/navigables=] does not
@@ -7057,6 +7063,106 @@ The [=remote end steps=] with |command parameters| are:
70577063
70587064</div>
70597065
7066+ #### The emulation.SetScrollbarTypeOverride Command #### {#command-emulation-setScrollbarTypeOverride}
7067+
7068+ The <dfn export for=commands>emulation.setScrollbarTypeOverride</dfn> command modifies
7069+ scrollbar type on the given top-level traversables, user contexts or globally.
7070+
7071+ <dl>
7072+ <dt>Command Type</dt>
7073+ <dd>
7074+ <pre class="cddl" data-cddl-module="remote-cddl">
7075+ emulation.SetScrollbarTypeOverride = (
7076+ method: "emulation.setScrollbarTypeOverride",
7077+ params: emulation.SetScrollbarTypeOverrideParameters
7078+ )
7079+
7080+ emulation.SetScrollbarTypeOverrideParameters = {
7081+ scrollbarType: "classic" / "overlay" / null,
7082+ ? contexts: [+browsingContext.BrowsingContext],
7083+ ? userContexts: [+browser.UserContext],
7084+ }
7085+ </pre>
7086+ </dd>
7087+ <dt>Return Type</dt>
7088+ <dd>
7089+ <pre class="cddl" data-cddl-module="local-cddl">
7090+ emulation.SetScrollbarTypeOverrideResult = EmptyResult
7091+ </pre>
7092+ </dd>
7093+ </dl>
7094+
7095+ <div algorithm>
7096+ To <dfn>update scrollbar type override</dfn> for [=/navigable=] |navigable|:
7097+
7098+ 1. Let |scrollbar type override| be the result of [=get stored config=] of [=stored config/scrollbar type=] for
7099+ |navigable|.
7100+
7101+ 1. Assert that |scrollbar type override| is "<code>classic</code>", "<code>overlay</code>" or null.
7102+
7103+ 1. If |scrollbar type override| is "<code>classic</code>", run [=implementation-defined=] steps to make the
7104+ |navigable|'s [=active document=] to use <a>classic scrollbars</a>.
7105+
7106+ 1. Otherwise, if |scrollbar type override| is "<code>overlay</code>", run [=implementation-defined=] steps to
7107+ make the |navigable|'s [=active document=] to use <a>overlay scrollbars</a>.
7108+
7109+ 1. Otherwise, run [=implementation-defined=] steps to make the |navigable|'s [=active document=] to
7110+ use an [=implementation-defined=] default scrollbar type.
7111+
7112+ </div>
7113+
7114+ <div algorithm="remote end steps for emulation.setScrollbarTypeOverride">
7115+
7116+ The [=remote end steps=] given |session| and |command parameters| are:
7117+
7118+ 1. Let |emulated scrollbar type| be |command parameters|["<code>scrollbarType</code>"].
7119+
7120+ 1. If the implementation does not support setting |emulated scrollbar type|, then return [=error=] with [=error code=]
7121+ [=unsupported operation=].
7122+
7123+ 1. If |command parameters| [=map/contains=] "<code>userContexts</code>"
7124+ and |command parameters| [=map/contains=] "<code>contexts</code>",
7125+ return [=error=] with [=error code=] [=invalid argument=].
7126+
7127+ 1. Let |affected navigables| be an empty [=/set=].
7128+
7129+ 1. If |command parameters| [=map/contains=] "<code>contexts</code>":
7130+
7131+ 1. Let |navigables| be the result of [=trying=] to
7132+ [=get valid top-level traversables by ids=] with
7133+ |command parameters|["<code>contexts</code>"].
7134+
7135+ 1. For each |navigable| of |navigables|:
7136+
7137+ 1. [=set/Append=] |navigable| to |affected navigables|.
7138+
7139+ 1. [=Store navigable config=] [=stored config/scrollbar type=] |emulated scrollbar type| for |navigable|.
7140+
7141+ 1. Otherwise, if |command parameters| [=map/contains=] "<code>userContexts</code>":
7142+
7143+ 1. Let |user contexts| be the result of [=trying=] to [=get valid user contexts=]
7144+ with |command parameters|["<code>userContexts</code>"].
7145+
7146+ 1. For each |user context| of |user contexts|:
7147+
7148+ 1. [=list/For each=] |top-level traversable| in the list of all [=/top-level traversables=]
7149+ whose [=associated user context=] is |user context|:
7150+
7151+ 1. [=set/Append=] |top-level traversable| to |affected navigables|.
7152+
7153+ 1. [=Store user context config=] [=stored config/scrollbar type=] |emulated scrollbar type| for |user context|.
7154+
7155+ 1. Otherwise, [=store global config=] [=stored config/scrollbar type=] |emulated scrollbar type| for |session|.
7156+
7157+ 1. For each |navigable| of |affected navigables|:
7158+
7159+ 1. [=Update scrollbar type override=] for |navigable|.
7160+
7161+ 1. Return [=success=] with data null.
7162+
7163+ </div>
7164+
7165+
70607166#### The emulation.setTimezoneOverride Command #### {#command-emulation-setTimezoneOverride}
70617167
70627168The <dfn export for=commands>emulation.setTimezoneOverride</dfn> command modifies
0 commit comments