Skip to content

Commit f781a90

Browse files
authored
Introduce the "cross-origin-isolated" permission
This allows a document to control whether nested documents can access features that require cross-origin isolation, as an additional restriction on top of requiring COOP+COEP. Fixes #5435.
1 parent 0276026 commit f781a90

File tree

1 file changed

+65
-9
lines changed

1 file changed

+65
-9
lines changed

source

Lines changed: 65 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4193,6 +4193,10 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
41934193
<li>"<dfn data-x="autoplay-feature"><code data-x="">autoplay</code></dfn>", which has a <span
41944194
data-x="concept-default-allowlist">default allowlist</span> of <code
41954195
data-x="">'self'</code>.</li>
4196+
<li>"<dfn data-x="cross-origin-isolated-feature"><code
4197+
data-x="">cross-origin-isolated</code></dfn>", which has a <span
4198+
data-x="concept-default-allowlist">default allowlist</span> of <code
4199+
data-x="">'self'</code>.</li>
41964200
<li>"<dfn data-x="document-domain-feature"><code data-x="">document-domain</code></dfn>", which
41974201
has a <span data-x="concept-default-allowlist">default allowlist</span> of <code
41984202
data-x="">*</code>.</li>
@@ -79160,7 +79164,15 @@ interface <dfn>BarProp</dfn> {
7916079164
<dt>The <span data-x="concept-settings-object-embedder-policy">embedder policy</span></dt>
7916179165
<dd><p>Return <var>window</var>'s <span data-x="concept-document-window">associated
7916279166
<code>Document</code></span>'s <span data-x="concept-document-embedder-policy">embedder
79163-
policy</span>.</p>
79167+
policy</span>.</p></dd>
79168+
79169+
<dt>The <span data-x="concept-settings-object-cross-origin-isolated-capability">cross-origin
79170+
isolated capability</span></dt>
79171+
<dd><p>Return the logical conjunction of <var>realm</var>'s <span>agent cluster</span>'s
79172+
<span>cross-origin isolated</span> and whether <var>window</var>'s <span
79173+
data-x="concept-document-window">associated <code>Document</code></span> is <span>allowed to
79174+
use</span> the "<code data-x="cross-origin-isolated-feature">cross-origin-isolated</code>"
79175+
feature.</p></dd>
7916479176
</dl>
7916579177
</li>
7916679178

@@ -87604,6 +87616,12 @@ interface <dfn>ApplicationCache</dfn> : <span>EventTarget</span> {
8760487616
check">cross-origin resource policy checks</span> for <span data-x="concept-fetch">fetches</span>
8760587617
performed using this <span>environment settings object</span> as a <span
8760687618
data-x="concept-request-client">request client</span>.</p></dd>
87619+
87620+
<dt>A <dfn data-x="concept-settings-object-cross-origin-isolated-capability" data-export=""
87621+
data-dfn-for="environment settings object">cross-origin isolated capability</dfn></dt>
87622+
87623+
<dd><p>A boolean representing whether scripts that use this <span>environment settings
87624+
object</span> are allowed to use APIs that require cross-origin isolation.</p></dd>
8760787625
</dl>
8760887626

8760987627
<p>An <span>environment settings object</span> also has an <dfn>outstanding rejected promises
@@ -92559,12 +92577,11 @@ interface mixin <dfn>WindowOrWorkerGlobalScope</dfn> {
9255992577
<dd><p>Returns the global object's <span>origin</span>, serialized as string.</p></dd>
9256092578

9256192579
<dt>self . <code subdfn data-x="dom-crossOriginIsolated">crossOriginIsolated</code></dt>
92562-
<dd><p>Returns whether the <span>surrounding agent</span>'s <span>agent cluster</span> is
92563-
<span>cross-origin isolated</span>. This depends on the `<code
92564-
data-x="">Cross-Origin-Opener-Policy</code>` and `<code
92565-
data-x="">Cross-Origin-Embedder-Policy</code>` HTTP response headers and determines whether
92566-
<code>SharedArrayBuffer</code> can be used with <code data-x="">postMessage()</code>
92567-
APIs.</p></dd>
92580+
<dd><p>Returns whether scripts running in this global are allowed to use APIs that require
92581+
cross-origin isolation. This depends on the `<code data-x="">Cross-Origin-Opener-Policy</code>`
92582+
and `<code data-x="">Cross-Origin-Embedder-Policy</code>` HTTP response headers and the
92583+
"<code data-x="cross-origin-isolated-feature">cross-origin-isolated</code>"
92584+
feature.</p></dd>
9256892585
</dl>
9256992586

9257092587
<div class="example">
@@ -92596,8 +92613,9 @@ document.body.appendChild(frame)</code></pre>
9259692613
origin">serialized</span>.</p>
9259792614

9259892615
<p>The <dfn data-x="dom-crossOriginIsolated"><code>crossOriginIsolated</code></dfn> getter steps
92599-
are to return the <span>surrounding agent</span>'s <span>agent cluster</span>'s <span>cross-origin
92600-
isolated</span>.</p>
92616+
are to return <span>this</span>'s <span>relevant settings object</span>'s <span
92617+
data-x="concept-settings-object-cross-origin-isolated-capability">cross-origin isolated
92618+
capability</span>.</p>
9260192619

9260292620
</div>
9260392621

@@ -99028,6 +99046,11 @@ interface <dfn>WorkerGlobalScope</dfn> : <span>EventTarget</span> {
9902899046
data-dfn-for="WorkerGlobalScope" data-x="concept-WorkerGlobalScope-module-map">module map</dfn>.
9902999047
It is a <span>module map</span>, initially empty.</p>
9903099048

99049+
<p>A <code>WorkerGlobalScope</code> object has an associated <dfn data-export=""
99050+
data-dfn-for="WorkerGlobalScope"
99051+
data-x="concept-WorkerGlobalScope-cross-origin-isolated-capability">cross-origin isolated
99052+
capability</dfn> boolean. It is initially false.</p>
99053+
9903199054
</div>
9903299055

9903399056
<dl class="domintro">
@@ -99486,6 +99509,33 @@ interface <dfn>SharedWorkerGlobalScope</dfn> : <span>WorkerGlobalScope</span> {
9948699509
and <var>response</var> is false, then set <var>response</var> to a <span>network
9948799510
error</span>.</p></li>
9948899511

99512+
<li><p>Set <var>worker global scope</var>'s <span
99513+
data-x="concept-WorkerGlobalScope-cross-origin-isolated-capability">cross-origin isolated
99514+
capability</span> to <var>agent</var>'s <span>agent cluster</span>'s <span>cross-origin
99515+
isolated</span>.</p></li>
99516+
99517+
<li><p>If <var>is shared</var> is false and <var>owner</var>'s <span
99518+
data-x="concept-settings-object-cross-origin-isolated-capability">cross-origin isolated
99519+
capability</span> is false, then set <var>worker global scope</var>'s <span
99520+
data-x="concept-WorkerGlobalScope-cross-origin-isolated-capability">cross-origin isolated
99521+
capability</span> to false.</p></li>
99522+
99523+
<li>
99524+
<p>If <var>is shared</var> is false and <var>response</var>'s
99525+
<span data-x="concept-response-url">url</span>'s <span
99526+
data-x="concept-url-scheme">scheme</span> is "<code data-x="">data</code>", then set
99527+
<var>worker global scope</var>'s <span
99528+
data-x="concept-WorkerGlobalScope-cross-origin-isolated-capability">cross-origin isolated
99529+
capability</span> to false.</p>
99530+
99531+
<p class="note">This is a conservative default for now, while we figure out how workers in
99532+
general, and <code data-x="data protocol">data:</code> URL workers in particular (which are
99533+
cross-origin from their owner), will be treated in the context of permissions policies. See
99534+
<a
99535+
href="https://github.com/w3c/webappsec-permissions-policy/issues/207">w3c/webappsec-permissions-policy
99536+
issue #207</a> for more details.</p>
99537+
</li>
99538+
9948999539
<li><p>Execute the <span>Initialize a <code data-x="">global object</code>'s CSP list</span>
9949099540
algorithm on <var>worker global scope</var> and <var>response</var>. <ref spec="CSP"></p></li>
9949199541

@@ -99778,6 +99828,12 @@ interface <dfn>SharedWorkerGlobalScope</dfn> : <span>WorkerGlobalScope</span> {
9977899828
<p>Return <var>worker global scope</var>'s <span
9977999829
data-x="concept-WorkerGlobalScope-embedder-policy">embedder policy</span>.</p>
9978099830
</dd>
99831+
99832+
<dt>The <span data-x="concept-settings-object-cross-origin-isolated-capability">cross-origin
99833+
isolated capability</span></dt>
99834+
<dd><p>Return <var>worker global scope</var>'s <span
99835+
data-x="concept-WorkerGlobalScope-cross-origin-isolated-capability">cross-origin isolated
99836+
capability</span>.</p></dd>
9978199837
</dl>
9978299838
</li>
9978399839

0 commit comments

Comments
 (0)