@@ -2495,6 +2495,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
2495
2495
<li><dfn data-x="body safely extract" data-x-href="https://fetch.spec.whatwg.org/#bodyinit-safely-extract">safely extracting a body</dfn></li>
2496
2496
<li><dfn data-x-href="https://fetch.spec.whatwg.org/#process-response-end-of-body">processResponseConsumeBody</dfn></li>
2497
2497
<li><dfn data-x-href="https://fetch.spec.whatwg.org/#fetch-processresponseendofbody">processResponseEndOfBody</dfn></li>
2498
+ <li><dfn data-x-href="https://fetch.spec.whatwg.org/#network-partition-keys">network-partition-keys</dfn></li>
2498
2499
<li>
2499
2500
<dfn data-x="concept-response"
2500
2501
data-x-href="https://fetch.spec.whatwg.org/#concept-response">response</dfn> and its
@@ -30891,6 +30892,7 @@ href="?audio">audio</a> test instead.)</p></code></pre>
30891
30892
<dd><code data-x="attr-dim-height">height</code></dd>
30892
30893
<dd><code data-x="attr-iframe-referrerpolicy">referrerpolicy</code></dd>
30893
30894
<dd><code data-x="attr-iframe-loading">loading</code></dd>
30895
+ <dd><code data-x="attr-iframe-anonymous">anonymous</code></dd>
30894
30896
<dt><span
30895
30897
data-x="concept-element-accessibility-considerations">Accessibility considerations</span>:</dt>
30896
30898
<dd><a href="https://w3c.github.io/html-aria/#el-iframe">For authors</a>.</dd>
@@ -31601,6 +31603,12 @@ interface <dfn interface>HTMLIFrameElement</dfn> : <span>HTMLElement</span> {
31601
31603
<li><p>Invoke <var>resumptionSteps</var>.</p></li>
31602
31604
</ol>
31603
31605
31606
+ <hr> <!-- ANONYMOUS ATTRIBUTE -->
31607
+
31608
+ <p>The <dfn element-attr for="iframe"><code data-x="attr-iframe-anonymous">anonymous</code></dfn>
31609
+ attribute, enables loading documents hosted by the <code>iframe</code> with a new and ephemeral
31610
+ storage partition. It is a boolean value. The default is false.</p>
31611
+
31604
31612
<hr> <!-- FALLBACK -->
31605
31613
31606
31614
<p>Descendants of <code>iframe</code> elements represent nothing. (In legacy user agents that do
@@ -80362,6 +80370,10 @@ popup4.close();</code></pre></div>
80362
80370
<li><p>Let <var>sandboxFlags</var> be the result of <span>determining the creation sandboxing
80363
80371
flags</span> given <var>browsingContext</var> and <var>embedder</var>.</p></li>
80364
80372
80373
+ <li><p>Let <var>anonymous</var> be the result of determining the <span
80374
+ data-x="initial-window-anonymous">initial window anonymous</span> flag, given
80375
+ <var>browsingContext</var>.</p></li>
80376
+
80365
80377
<!--
80366
80378
This step does not need to use |embedder|, because determining the origin only consults the
80367
80379
container when the url argument is about:srcdoc. However, here we always pass about:blank.
@@ -80386,7 +80398,8 @@ popup4.close();</code></pre></div>
80386
80398
realm</span> given <var>agent</var> and the following customizations:</p>
80387
80399
80388
80400
<ul>
80389
- <li><p>For the global object, create a new <code>Window</code> object.</p></li>
80401
+ <li><p>For the global object, create a new <code>Window</code> object, with <code
80402
+ data-x="attr-iframe-anonymous">anonymous</code> set to <var>anonymous</var>.</p></li>
80390
80403
80391
80404
<li><p>For the global <b>this</b> binding, use <var>browsingContext</var>'s
80392
80405
<code>WindowProxy</code> object.</li>
@@ -81761,6 +81774,7 @@ interface <dfn interface>Window</dfn> : <span>EventTarget</span> {
81761
81774
attribute DOMString <span data-x="dom-window-status">status</span>;
81762
81775
undefined <span data-x="dom-window-close">close</span>();
81763
81776
readonly attribute boolean <span data-x="dom-window-closed">closed</span>;
81777
+ readonly attribute boolean <span data-x="dom-window-anonymous">anonymous</span>;
81764
81778
undefined <span data-x="dom-window-stop">stop</span>();
81765
81779
undefined <span data-x="dom-window-focus">focus</span>();
81766
81780
undefined <span data-x="dom-window-blur">blur</span>();
@@ -81960,6 +81974,9 @@ dictionary <dfn dictionary>WindowPostMessageOptions</dfn> : <span>StructuredSeri
81960
81974
81961
81975
<li><p>If <var>noreferrer</var> is true, then set <var>noopener</var> to true.</p></li>
81962
81976
81977
+ <li><p>If <span>entry global object</span>'s <span data-x="dom-window-anonymous">anonymous</span>
81978
+ flag is true, then set <var>noopener</var> to true.</p></li>
81979
+
81963
81980
<li>
81964
81981
<p>Let <var>target browsing context</var> and <var>windowType</var> be the result of applying
81965
81982
<span>the rules for choosing a browsing context</span> given <var>target</var>, <var>source
@@ -84110,6 +84127,70 @@ interface <dfn interface>BarProp</dfn> {
84110
84127
84111
84128
84112
84129
84130
+ <h3>Anonymous iframe</h3>
84131
+
84132
+ <p>Each <code>iframe</code> element has a mutable <code
84133
+ data-x="attr-iframe-anonymous">anonymous</code> flag attribute.</p>
84134
+
84135
+ <p>Each <code>Window</code> has a constant <dfn attribute for="Window"
84136
+ data-x="dom-window-anonymous"><code>anonymous</code></dfn> flag.</p>
84137
+
84138
+ <p>An <dfn>anonymous Window</dfn> is a <code>Window</code>, whose <code
84139
+ data-x="dom-window-anonymous">anonymous</code> flag is true.</p>
84140
+
84141
+ <p>To compute the <dfn data-x="initial-window-anonymous">initial window anonymous flag</dfn>,
84142
+ given a new <span data-x="concept-document-bc">browsing context</span> <var>browsing
84143
+ context</var>:</p>
84144
+ <ol class="brief">
84145
+ <li><p>Set <var>embedder</var> be <var>browsing context</var>'s <span
84146
+ data-x="bc-container">container</span>.</p>
84147
+ <li><p>If <var>embedder</var> is not an element, return false.</p></li>
84148
+ <li><p>Otherwise, set <var>parentWindow</var> be the <var>embedder</var>'s <span>node
84149
+ document</span>'s <span>relevant global object</span>.</p></li>
84150
+ <li><p>Return the union of:</p>
84151
+ <ul class="brief">
84152
+ <li><p><var>parentWindow</var>'s <code attribute for="Window"
84153
+ data-x="dom-window-anonymous">anonymous</code></p></li>
84154
+ <li><p><var>embedder</var>'s <span><code>iframe</code></span>'s <code
84155
+ data-x="attr-iframe-anonymous">anonymous</code></p></li>
84156
+ </ul>
84157
+ </li>
84158
+ </ol>
84159
+
84160
+ <p>To compute the <dfn data-x="navigation-anonymous">navigation's anonymous flag</dfn>,
84161
+ given <span data-x="concept-document-bc">browsing context</span> <var>browsing
84162
+ context</var>, follows the same steps as in the <span
84163
+ data-x="initial-window-anonymous">initial window anonymous flag</span> algorithm.</p>
84164
+
84165
+ <p class="note">New <code>Window</code>'s <code data-x="dom-window-anonymous">anonymous</code>
84166
+ flag is computed either from the <span data-x="initial-window-anonymous">initial window anonymous
84167
+ flag</span> algorithm for new <span data-x="concept-document-bc">browsing context</span>, or from
84168
+ the <span data-x="navigation-anonymous">navigation's anonymous flag</span> algorithm, executed
84169
+ when the navigation started, for navigations inside pre-existing <span
84170
+ data-x="concept-document-bc">browsing context</span>.</p>
84171
+
84172
+ <p class="note">Popup opened from <span>anonymous Window</span> are always with 'noopener' set</p>
84173
+
84174
+ <p class="note">Top-level <span>anonymous Window</span> do not exist.</p>
84175
+
84176
+ <p>Each top-level <span>Window</span> has an associated <dfn export>page anonymous nonce</dfn>. It
84177
+ is an immutable nonce ("number used once").</p>
84178
+
84179
+ <p class="XXX">The <span>page anonymous nonce</span> is meant to be used for <span>anonymous
84180
+ Window</span> as a key in <span>network-partition-keys</span>, storage-partition-keys, and
84181
+ cookie-partition-keys for <span>anonymous Window</span>. See <a
84182
+ href="https://github.com/whatwg/fetch/issues/904">Network state partitionning</a>, <a
84183
+ href="https://privacycg.github.io/storage-partitioning/">Client-Side Storage Partitioning</a>, and
84184
+ <a href="https://github.com/WICG/CHIPS">CHIPS (Cookies Having Independant Partitioned
84185
+ State</a>.</p>
84186
+
84187
+ <p><dfn>Autofill and anonymous iframe</dfn>: User agents sometimes have features for helping users
84188
+ fill forms in: for example prefilling the user's address, password, or payment informations. User
84189
+ agents must disable those features when the data is both specific to the user and to the website.
84190
+ </p>
84191
+
84192
+
84193
+
84113
84194
<h3>Cross-origin opener policies</h3>
84114
84195
84115
84196
<p>A <dfn>cross-origin opener policy value</dfn> allows a document which is navigated to in a
@@ -85482,7 +85563,8 @@ interface <dfn interface>BarProp</dfn> {
85482
85563
85483
85564
<p>To <dfn>check a navigation response's adherence to its embedder policy</dfn> given a <span
85484
85565
data-x="concept-response">response</span> <var>response</var>, a <span>browsing context</span>
85485
- <var>target</var>, and an <span>embedder policy</span> <var>responsePolicy</var>:</p>
85566
+ <var>target</var>, an <span>embedder policy</span> <var>responsePolicy</var>, and a boolean
85567
+ <var>anonymous</var>:</p>
85486
85568
85487
85569
<ol>
85488
85570
<li><p>If <var>target</var> is not a <span>child browsing context</span>, then return
@@ -85495,18 +85577,18 @@ interface <dfn interface>BarProp</dfn> {
85495
85577
85496
85578
<li><p>If <var>parentPolicy</var>'s <span data-x="embedder-policy-report-only-value">report-only
85497
85579
value</span> is <span>compatible with cross-origin isolation</span> and
85498
- <var>responsePolicy</var>'s <span data-x="embedder-policy-value">value</span> is not, then
85499
- <span>queue a cross-origin embedder policy inheritance violation</span> with <var>response</var>,
85500
- "<code data-x="">navigation</code>", <var>parentPolicy</var>'s <span
85501
- data-x="embedder-policy-report-only-reporting-endpoint">report only reporting endpoint</span>,
85502
- "<code data-x="">reporting</code>", and <var>target</var>'s <span
85580
+ <var>responsePolicy</var>'s <span data-x="embedder-policy-value">value</span> is not, and
85581
+ <var>anonymous</var> is false, then < span>queue a cross-origin embedder policy inheritance
85582
+ violation</span> with <var>response</var>, "<code data-x="">navigation</code>",
85583
+ <var>parentPolicy</var>'s <span data-x="embedder-policy-report-only-reporting-endpoint">report
85584
+ only reporting endpoint</span>, "<code data-x="">reporting</code>", and <var>target</var>'s <span
85503
85585
data-x="bc-container-document">container document</span>'s <span>relevant settings
85504
85586
object</span>.</p></li>
85505
85587
85506
85588
<li><p>If <var>parentPolicy</var>'s <span data-x="embedder-policy-value">value</span> is not
85507
85589
<span>compatible with cross-origin isolation</span> or <var>responsePolicy</var>'s <span
85508
85590
data-x="embedder-policy-value">value</span> is <span>compatible with cross-origin
85509
- isolation</span>, then return true.</p></li>
85591
+ isolation</span>, or <var>anonymous</var> is true, then return true.</p></li>
85510
85592
85511
85593
<li><p><span>Queue a cross-origin embedder policy inheritance violation</span> with
85512
85594
<var>response</var>, "<code data-x="">navigation</code>", <var>parentPolicy</var>'s <span
@@ -87631,6 +87713,9 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
87631
87713
<dt><dfn data-x="navigation-params-sandboxing">final sandboxing flag set</dfn></dt>
87632
87714
<dd>a <span>sandboxing flag set</span> to impose on the new <code>Document</code></dd>
87633
87715
87716
+ <dt><dfn data-x="navigation-params-anonymous">anonymous</dfn></dt>
87717
+ <dd>The anonymous flag to impose on the new <code>Window</code></dd>
87718
+
87634
87719
<dt><dfn data-x="navigation-params-coop">cross-origin opener policy</dfn></dt>
87635
87720
<dd>a <span>cross-origin opener policy</span> to use for the new <code>Document</code></dd>
87636
87721
@@ -87883,6 +87968,10 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
87883
87968
flags</span> given <var>browsingContext</var> and <var>browsingContext</var>'s <span
87884
87969
data-x="bc-container">container</span>.</p></li>
87885
87970
87971
+ <li><p>Let <var>anonymous</var> be the result of computing the <span
87972
+ data-x="navigation-anonymous">navigation's anonymous flag</span>, given
87973
+ <var>browsingContext.</var></p></li>
87974
+
87886
87975
<li><p>Let <var>allowedToDownload</var> be the result of running the <span>allowed to
87887
87976
download</span> algorithm given the <span>source browsing context</span> and
87888
87977
<var>browsingContext</var>.</p></li>
@@ -87953,8 +88042,9 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
87953
88042
data-x="navigation-params-policy-container">policy container</span> is
87954
88043
<var>policyContainer</var>, <span data-x="navigation-params-sandboxing">final sandboxing
87955
88044
flag set</span> is <var>finalSandboxFlags</var>, <span
87956
- data-x="navigation-params-coop">cross-origin opener policy</span> is <var>coop</var>, <span
87957
- data-x="navigation-params-coop-enforcement-result">COOP enforcement result</span> is
88045
+ data-x="navigation-params-anonymous">anonymous</span> is <var>anonymous</var>, <span
88046
+ data-x="navigation-params-coop">cross-origin opener policy</span> is <var>coop</var>,
88047
+ <span data-x="navigation-params-coop-enforcement-result">COOP enforcement result</span> is
87958
88048
<var>coopEnforcementResult</var>, <span
87959
88049
data-x="navigation-params-reserved-environment">reserved environment</span> is null, <span
87960
88050
data-x="navigation-params-browsing-context">browsing context</span> is
@@ -88010,8 +88100,9 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
88010
88100
data-x="navigation-params-policy-container">policy container</span> is
88011
88101
<var>browsingContext</var>'s <span>active document</span>'s <span>policy container</span>,
88012
88102
<span data-x="navigation-params-sandboxing">final sandboxing flag set</span> is
88013
- <var>finalSandboxFlags</var>, <span data-x="navigation-params-coop">cross-origin opener
88014
- policy</span> is <var>browsingContext</var>'s <span>active document</span>'s <span
88103
+ <var>finalSandboxFlags</var>, <span data-x="navigation-params-anonymous">anonymous</span> is
88104
+ <var>anonymous</var>, <span data-x="navigation-params-coop">cross-origin opener policy</span>
88105
+ is <var>browsingContext</var>'s <span>active document</span>'s <span
88015
88106
data-x="concept-document-coop">cross-origin opener policy</span>, <span
88016
88107
data-x="navigation-params-coop-enforcement-result">COOP enforcement result</span> is
88017
88108
<var>coopEnforcementResult</var>, <span
@@ -88046,10 +88137,11 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
88046
88137
88047
88138
<dd><p>Run <span>process a navigate fetch</span> given <var>navigationId</var>,
88048
88139
<var>resource</var>, the <span>source browsing context</span>, <var>browsingContext</var>,
88049
- <var>navigationType</var>, <var>sandboxFlags</var>, <var>historyPolicyContainer</var>,
88050
- <var>initiatorPolicyContainer</var>, <var>allowedToDownload</var>,
88051
- <var>hasTransientActivation</var>, <var>incumbentNavigationOrigin</var>,
88052
- <var>historyHandling</var>, and <var>unsafeNavigationStartTime</var>.</p></dd>
88140
+ <var>navigationType</var>, <var>sandboxFlags</var>, <var>anonymous</var>,
88141
+ <var>historyPolicyContainer</var>, <var>initiatorPolicyContainer</var>,
88142
+ <var>allowedToDownload</var>, <var>hasTransientActivation</var>,
88143
+ <var>incumbentNavigationOrigin</var>, <var>historyHandling</var>, and
88144
+ <var>unsafeNavigationStartTime</var>.</p></dd>
88053
88145
88054
88146
<dt>Otherwise, <var>resource</var> is a <span data-x="concept-request">request</span> whose
88055
88147
<span data-x="concept-request-url">URL</span>'s <span data-x="concept-url-scheme">scheme</span>
@@ -88066,12 +88158,12 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
88066
88158
data-x="navigation-id">navigation id</span> <var>navigationId</var>, <span
88067
88159
data-x="concept-request">request</span> <var>request</var>, two <span data-x="browsing
88068
88160
context">browsing contexts</span> <var>sourceBrowsingContext</var> and <var>browsingContext</var>,
88069
- a string <var>navigationType</var>, a <span>sandboxing flag set</span> <var>sandboxFlags</var>,
88070
- two <span data-x="policy container">policy containers</span> <var>historyPolicyContainer</var> and
88071
- <var>initiatorPolicyContainer </var>, a boolean <var>allowedToDownload </var>, a boolean
88072
- <var>hasTransientActivation </var>, an <span>origin</span> <var>incumbentNavigationOrigin</var>,
88073
- a <span>history handling behavior</span> <var>historyHandling</var>, and a number
88074
- <var>unsafeNavigationStartTime</var>:</p>
88161
+ a string <var>navigationType</var>, a <span>sandboxing flag set</span> <var>sandboxFlags</var>, a
88162
+ boolean <var>anonymous</var>, two <span data-x="policy container">policy containers</span>
88163
+ <var>historyPolicyContainer </var> and <var>initiatorPolicyContainer </var>, a boolean
88164
+ <var>allowedToDownload </var>, a boolean <var>hasTransientActivation</var>, an <span>origin</span>
88165
+ <var>incumbentNavigationOrigin</var>, a <span>history handling behavior</span>
88166
+ <var>historyHandling</var>, and a number <var> unsafeNavigationStartTime</var>:</p>
88075
88167
88076
88168
<ol>
88077
88169
<li><p>Let <var>response</var> be null.</p></li>
@@ -88350,6 +88442,7 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
88350
88442
data-x="navigation-params-policy-container">policy container</span> is
88351
88443
<var>resultPolicyContainer</var>, <span data-x="navigation-params-sandboxing">final sandboxing
88352
88444
flag set</span> is <var>finalSandboxFlags</var>, <span
88445
+ data-x="navigation-params-anonymous">anonymous</span> is <var>anonymous</var>, <span
88353
88446
data-x="navigation-params-coop">cross-origin opener policy</span> is <var>responseCOOP</var>,
88354
88447
<span data-x="navigation-params-coop-enforcement-result">COOP enforcement result</span> is
88355
88448
<var>coopEnforcementResult</var>, <span data-x="navigation-params-reserved-environment">reserved
@@ -88399,8 +88492,9 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
88399
88492
embedder policy">checking a navigation response's adherence to its embedder policy</span> given
88400
88493
<var>response</var>, <var>browsingContext</var>, and <var>navigationParams</var>'s <span
88401
88494
data-x="navigation-params-policy-container">policy container</span>'s <span
88402
- data-x="policy-container-embedder-policy">embedder policy</span> is false, then set
88403
- <var>failure</var> to true.</p>
88495
+ data-x="policy-container-embedder-policy">embedder policy</span> and
88496
+ <var>navigationparams</var>'s <span data-x="navigation-params-anonymous">anonymous</span> flag
88497
+ is false, then set <var>failure</var> to true.</p>
88404
88498
88405
88499
<p>Otherwise, if the result of <span data-x="check a navigation response's adherence to
88406
88500
`X-Frame-Options`">checking a navigation response's adherence to
@@ -88765,7 +88859,10 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
88765
88859
data-x="hh-replace">replace</code>", and <var>browsingContext</var>'s <span>active
88766
88860
document</span>'s <span data-x="concept-document-origin">origin</span> is <span>same
88767
88861
origin-domain</span> with <var>navigationParams</var>'s <span
88768
- data-x="navigation-params-origin">origin</span>, then do nothing.</p>
88862
+ data-x="navigation-params-origin">origin</span>, and <var>browsingContext</var>'s <span>active
88863
+ window</span>'s <span data-x="dom-window-anonymous">anonymous</span> flag matches
88864
+ <var>navigationParams</var>'s <span data-x="navigation-params-anonymous">anonymous</span> flag,
88865
+ then do nothing.</p>
88769
88866
88770
88867
<p class="note">This means that both the <span data-x="is initial about:blank">initial
88771
88868
<code>about:blank</code></span> <code>Document</code>, and the new <code>Document</code> that is
@@ -88799,7 +88896,9 @@ interface <dfn interface>Location</dfn> { // but see also <a href="#the-location
88799
88896
realm</span> given <var>agent</var> and the following customizations:</p>
88800
88897
88801
88898
<ul>
88802
- <li><p>For the global object, create a new <code>Window</code> object.</p></li>
88899
+ <li><p>For the global object, create a new <code>Window</code> object, with <code
88900
+ data-x="attr-iframe-anonymous">anonymous</code> to <var>navigationParams</var>'s <span
88901
+ data-x="navigation-params-anonymous">anonymous</span>.</p></li>
88803
88902
88804
88903
<li><p>For the global <b>this</b> binding, use <var>browsingContext</var>'s
88805
88904
<code>WindowProxy</code> object.</p></li>
@@ -123905,6 +124004,12 @@ interface <dfn interface>External</dfn> {
123905
124004
<code data-x="attr-input-alt">input</code>
123906
124005
<td> Replacement text for use when images are not available
123907
124006
<td> <a href="#attribute-text">Text</a>*
124007
+ <tr>
124008
+ <th> <code data-x="">anonymous</code>
124009
+ <td> <code data-x="attr-iframe-anonymous">iframe</code>
124010
+ <td> Whether the <code>iframe</code>'s contents to be loaded using a new ephemeral storage
124011
+ partition.
124012
+ <td> <span>Boolean attribute</span>
123908
124013
<tr>
123909
124014
<th> <code data-x="">as</code>
123910
124015
<td> <code data-x="attr-link-as">link</code>
0 commit comments