Skip to content

Commit a90d9f5

Browse files
emulation.setScrollbarTypeOverride
1 parent ec1c749 commit a90d9f5

File tree

1 file changed

+120
-14
lines changed

1 file changed

+120
-14
lines changed

index.bs

Lines changed: 120 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,10 @@ spec: HR-TIME; urlPrefix: https://w3c.github.io/hr-time/
272272
spec: 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
275279
spec: 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

59996005
A [=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

60066012
Note: 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

60096015
To <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

60306036
1. 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

60366042
1. 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

60556061
1. 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

60706076
1. 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

60846090
1. 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

60996105
1. 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

70627168
The <dfn export for=commands>emulation.setTimezoneOverride</dfn> command modifies

0 commit comments

Comments
 (0)