@@ -78591,9 +78591,9 @@ console.assert(iframeWindow.frameElement === null);
7859178591 data-x="http-cross-origin-opener-policy">Cross-Origin-Opener-Policy</span>: <span
7859278592 data-x="coop-same-origin">same-origin</span></code>`, and</p></li>
7859378593
78594- <li><p>every <span>Document</span> has `<code
78595- data-x=""><span> Cross-Origin-Embedder-Policy</span>: < span
78596- data-x="coep-require-corp">require-corp</span></code>`. </p></li>
78594+ <li><p>every <span>Document</span> has a `<code data-x="embedder policy value">
78595+ Cross-Origin-Embedder-Policy</code>value < span>compatible with crossOriginIsolation</ span>.
78596+ </p></li>
7859778597 </ul>
7859878598
7859978599 <p>On some platforms, it is difficult to provide the security properties required to grant safe
@@ -81508,8 +81508,9 @@ interface <dfn>BarProp</dfn> {
8150881508 data-x="http-cross-origin-opener-policy">Cross-Origin-Opener-Policy</code>` header, but results
8150981509 from a combination of setting both `<code data-x=""><span
8151081510 data-x="http-cross-origin-opener-policy">Cross-Origin-Opener-Policy</span>: <span
81511- data-x="coop-same-origin">same-origin</span></code>` and `<code
81512- data-x=""><span>Cross-Origin-Embedder-Policy</span>: require-corp</code>` together.</p>
81511+ data-x="coop-same-origin">same-origin</span></code>` and a
81512+ `<code data-x="embedder policy value"> Cross-Origin-Embedder-Policy</code>` value
81513+ <span>compatible with crossOriginIsolation</span> together.<p>
8151381514 </dd>
8151481515 </dl>
8151581516
@@ -81598,10 +81599,10 @@ interface <dfn>BarProp</dfn> {
8159881599 policy">obtaining a cross-origin embedder policy</span> from <var>response</var> and
8159981600 <var>reservedEnvironment</var>.</p></li>
8160081601
81601- <li><p>If <var>coep</var>'s <span data-x="embedder-policy-value">value</span> is "<code
81602- data-x="coep-require-corp">require-corp</code>" , then set <var>policy</var>'s <span
81603- data-x="coop-struct-value">value</span> to "<code
81604- data-x="coop-same-origin-plus-COEP"> same-origin-plus-COEP</code>".</p></li>
81602+ <li><p>If <var>coep</var>'s <span data-x="embedder-policy-value">value</span> is
81603+ <span>compatible with crossOriginIsolation</span> , then set <var>policy</var>'s <span
81604+ data-x="coop-struct-value">value</span> to "<code data-x="coop-same-origin-plus-COEP">
81605+ same-origin-plus-COEP</code>".</p></li>
8160581606
8160681607 <li><p>Otherwise, set <var>policy</var>'s <span
8160781608 data-x="coop-struct-value">value</span> to "<code
@@ -81640,10 +81641,10 @@ interface <dfn>BarProp</dfn> {
8164081641 <var>reservedEnvironment</var>.</p></li>
8164181642
8164281643 <li>
81643- <p>If <var>coep</var>'s <span data-x="embedder-policy-value">value</span> is "<code
81644- data-x="coep-require-corp">require-corp</code>" or <var>coep</var>'s <span
81645- data-x="embedder-policy-report-only-value">report-only value</span> is "<code
81646- data-x="coep-require-corp">require-corp</code>" , then set <var>policy</var>'s <span
81644+ <p>If <var>coep</var>'s <span data-x="embedder-policy-value">value</span> is
81645+ <span>compatible with crossOriginIsolation</span> or <var>coep</var>'s <span
81646+ data-x="embedder-policy-report-only-value">report-only value</span> is
81647+ <span>compatible with crossOriginIsolation</span> , then set <var>policy</var>'s <span
8164781648 data-x="coop-struct-report-only-value">report-only value</span> to "<code
8164881649 data-x="coop-same-origin-plus-COEP">same-origin-plus-COEP</code>".</p>
8164981650
@@ -82655,7 +82656,7 @@ interface <dfn>BarProp</dfn> {
8265582656 <h3 id="coep">Cross-origin embedder policies</h3>
8265682657
8265782658 <p>An <dfn export>embedder policy value</dfn> controls the fetching of cross-origin resources
82658- without explicit permission from resource owners. There are two such values:</p>
82659+ without explicit permission from resource owners. There are three such values:</p>
8265982660
8266082661 <dl>
8266182662 <dt>"<dfn data-x="coep-unsafe-none" export for="embedder policy value"><code
@@ -82664,6 +82665,12 @@ interface <dfn>BarProp</dfn> {
8266482665 without giving explicit permission through the <span>CORS protocol</span> or the
8266582666 `<code>Cross-Origin-Resource-Policy</code>` header.</p></dd>
8266682667
82668+ <dt>"<dfn data-x="coep-cors-or-credentialless" export for="embedder policy value"><code
82669+ data-x="">cors-or-credentialless</code></dfn>"</dt>
82670+ <dd><p>When this value is used, fetching cross-origin no-CORS resources omits credentials. In
82671+ exchange, an explicit `<code>Cross-Origin-Resource-Policy</code>` on response is not required.
82672+ </p></dd>
82673+
8266782674 <dt>"<dfn data-x="coep-require-corp" export for="embedder policy value"><code
8266882675 data-x="">require-corp</code></dfn>"</dt>
8266982676 <dd><p>When this value is used, fetching cross-origin resources requires the server's
@@ -82774,18 +82781,31 @@ interface <dfn>BarProp</dfn> {
8277482781 with `<code>Cross-Origin-Embedder-Policy</code>` and "<code data-x="">item</code>" from
8277582782 <var>response</var>'s <span data-x="concept-response-header-list">header list</span>.</p></li>
8277682783
82777- <li>
82778- <p>If <var>parsedItem</var> is non-null and <var>parsedItem</var>[0] is "<code
82779- data-x="">require-corp</code>":</p>
82780-
82784+ <li><p>If <var>parsedItem</var> is non-null</p>
8278182785 <ol>
82782- <li><p>Set <var>policy</var>'s <span data-x="embedder-policy-value">value</span> to "<code
82783- data-x="coep-require-corp">require-corp</code>".</p></li>.
82786+ <!--cors-or-credentialless-->
82787+ <li><p>If <var>parsedItem</var>[0] is "<code data-x="">cors-or-credentialless</code>":</p>
82788+ <ol>
82789+ <li><p>Set <var>policy</var>'s <span data-x="embedder-policy-value">value</span> to "<code
82790+ data-x="coep-cors-or-credentialless">cors-or-credentialless</code>".</p></li>.
8278482791
82785- <li><p>If <var>parsedItem</var>[1]["<code data-x="coep-report-to">report-to</code>"] <span
82786- data-x="map exists">exists</span>, then set <var>policy</var>'s <span
82787- data-x="embedder-policy-reporting-endpoint">endpoint</span> to <var>parsedItem</var>[1]["<code
82788- data-x="coep-report-to">report-to</code>"].</p></li>
82792+ <li><p>If <var>parsedItem</var>[1]["<code data-x="coep-report-to">report-to</code>"] <span
82793+ data-x="map exists">exists</span>, then set <var>policy</var>'s <span
82794+ data-x="embedder-policy-reporting-endpoint">endpoint</span> to <var>parsedItem</var>
82795+ [1]["<code data-x="coep-report-to">report-to</code>"].</p></li>
82796+ </ol>
82797+
82798+ <!--require-corp-->
82799+ <li><p>If <var>parsedItem</var>[0] is "<code data-x="">require-corp</code>":</p>
82800+ <ol>
82801+ <li><p>Set <var>policy</var>'s <span data-x="embedder-policy-value">value</span> to "<code
82802+ data-x="coep-require-corp">require-corp</code>".</p></li>.
82803+
82804+ <li><p>If <var>parsedItem</var>[1]["<code data-x="coep-report-to">report-to</code>"] <span
82805+ data-x="map exists">exists</span>, then set <var>policy</var>'s <span
82806+ data-x="embedder-policy-reporting-endpoint">endpoint</span> to <var>parsedItem</var>
82807+ [1]["<code data-x="coep-report-to">report-to</code>"].</p></li>
82808+ </ol>
8278982809 </ol>
8279082810 </li>
8279182811
@@ -82809,9 +82829,59 @@ interface <dfn>BarProp</dfn> {
8280982829 </ol>
8281082830 </li>
8281182831
82832+ <li><p>If <var>parsedItem</var> is non-null</p>
82833+ <ol>
82834+ <!--cors-or-credentialless-->
82835+ <li><p>If <var>parsedItem</var>[0] is "<code data-x="">cors-or-credentialless</code>":</p>
82836+ <ol>
82837+ <li><p>Set <var>policy</var>'s <span
82838+ data-x="embedder-policy-report-only-value">report-only value </span> to "<code
82839+ data-x="coep-cors-or-credentialless">cors-or-credentialless</code>".</p></li>.
82840+
82841+ <li><p>If <var>parsedItem</var>[1]["<code data-x="coep-report-to">report-to</code>"] <span
82842+ data-x="map exists">exists</span>, then set <var>policy</var>'s <span
82843+ data-x="embedder-policy-report-only-reporting-endpoint">report-only reporting endpoint
82844+ </span> to <var>parsedItem </var> [1]["<code data-x="coep-report-to">report-to</code>"].</p>
82845+ </li>
82846+ </ol>
82847+
82848+ <!--require-corp-->
82849+ <li><p>If <var>parsedItem</var>[0] is "<code data-x="">require-corp</code>":</p>
82850+ <ol>
82851+ <li><p>Set <var>policy</var>'s <span data-x="embedder-policy-report-only-value">value
82852+ </span> to "<code data-x="coep-require-corp">require-corp</code>".</p></li>.
82853+
82854+ <li><p>If <var>parsedItem</var>[1]["<code data-x="coep-report-to">report-to</code>"] <span
82855+ data-x="map exists">exists</span>, then set <var>policy</var>'s <span
82856+ data-x="embedder-policy-report-only-reporting-endpoint">report-only reporting endpoint
82857+ </span> to <var>parsedItem</var> [1]["<code data-x="coep-report-to">report-to</code>"].</p>
82858+ </li>
82859+ </ol>
82860+ </ol>
82861+ </li>
82862+
8281282863 <li><p>Return <var>policy</var>.</p></li>
8281382864 </ol>
8281482865
82866+ <h4>Compatible with crossOriginIsolated</h4>
82867+
82868+ <p>A <span data-x="embedder policy value">Cross-Origin-Embedder-Policy value</span> is
82869+ <dfn>compatible with crossOriginIsolation</dfn> following this table</p>
82870+
82871+ <table class="data">
82872+ <thead>
82873+ <tr>
82874+ <th><span data-x="embedder policy value">Value</span></th>
82875+ <th><span>Compatible with crossOriginIsolation</span></th>
82876+ </tr>
82877+ </thead>
82878+ <tbody>
82879+ <tr><td><code data-x="coep-unsafe-none">unsafe-none</code></td> <td>false</td></tr>
82880+ <tr><td><code data-x="coep-cors-or-credentialless">cors-or-credentialless</code></td><td>true
82881+ </td> </tr>
82882+ <tr><td><code data-x="coep-require-corp">require-corp</code></td> <td>true</td></tr>
82883+ </table>
82884+
8281582885 <h4>Embedder policy checks</h4>
8281682886
8281782887 <p>To <dfn>check a navigation response's adherence to its embedder policy</dfn> given a <span
@@ -82831,19 +82901,18 @@ interface <dfn>BarProp</dfn> {
8283182901 data-x="concept-document-embedder-policy">embedder policy</span>.</p></li>
8283282902
8283382903 <li><p>If <var>parentPolicy</var>'s <span data-x="embedder-policy-report-only-value">report-only
82834- value</span> is "<code data-x="coep-require-corp">require-corp</code>" and
82835- <var>responsePolicy</var>'s <span data-x="embedder-policy-value">value</span> is "<code
82836- data-x="coep-unsafe-none">unsafe-none</code>", then < span>queue a cross-origin embedder policy
82837- inheritance violation</span> with <var>response</var>, "<code data-x="">navigation</code>",
82838- <var>parentPolicy</var>'s <span data-x="embedder-policy-report-only-reporting-endpoint">report
82839- only reporting endpoint</span>, "<code data-x="">reporting</code>", and <var>target</var>'s <span
82904+ value</span> is <span>compatible with crossOriginIsolation</span> and
82905+ <var>responsePolicy</var>'s <span data-x="embedder-policy-value">value</span> is not, then
82906+ < span>queue a cross-origin embedder policy inheritance violation</span> with <var>response</var>,
82907+ "<code data-x="">navigation</code>", <var>parentPolicy</var>'s <span
82908+ data-x="embedder-policy-report-only-reporting-endpoint">report only reporting endpoint</span>,
82909+ "<code data-x="">reporting</code>", and <var>target</var>'s <span
8284082910 data-x="bc-container-document">container document</span>'s <span>relevant settings
8284182911 object</span>.</p></li>
8284282912
82843- <li><p>If <var>parentPolicy</var>'s <span data-x="embedder-policy-value">value</span> is "<code
82844- data-x="coep-unsafe-none">unsafe-none</code>" or <var>responsePolicy</var>'s <span
82845- data-x="embedder-policy-value">value</span> is "<code
82846- data-x="coep-require-corp">require-corp</code>", then return true.</p></li>
82913+ <li><p>If <var>parentPolicy</var>'s <span data-x="embedder-policy-value">value</span> is not
82914+ <span>compatible with crossOriginIsolation</span> or <var>responsePolicy</var>'s is
82915+ <span>compatible with crossOriginIsolation</span>, then return true.</p></li>
8284782916
8284882917 <li><p><span>Queue a cross-origin embedder policy inheritance violation</span> with
8284982918 <var>response</var>, "<code data-x="">navigation</code>", <var>parentPolicy</var>'s <span
@@ -82870,18 +82939,17 @@ interface <dfn>BarProp</dfn> {
8287082939 data-x="concept-settings-object-embedder-policy">embedder policy</span>.
8287182940
8287282941 <li><p>If <var>ownerPolicy</var>'s <span data-x="embedder-policy-report-only-value">report-only
82873- value</span> is "<code data-x="coep-require-corp">require-corp</code>" and <var>policy</var>'s
82874- <span data-x="embedder-policy-value">value</span> is "<code
82875- data-x="coep-unsafe-none">unsafe-none</code>", then <span>queue a cross-origin embedder policy
82876- inheritance violation</span> with <var>response</var>, "<code data-x="">worker
82942+ value</span> is <span>compatible with crossOriginIsolation</span> and <var>policy</var>'s
82943+ <span data-x="embedder-policy-value">value</span> is not, then <span>queue a cross-origin
82944+ embedder policy inheritance violation</span> with <var>response</var>, "<code data-x="">worker
8287782945 initialization</code>", <var>owner's policy</var>'s <span
8287882946 data-x="embedder-policy-report-only-reporting-endpoint">report only reporting endpoint</span>,
82879- "<code data-x="">reporting</code>", and <var>owner</var>.</p></li>
82947+ "<code data-x="">reporting</code>", and
82948+ <var>owner</var>.</p></li>
8288082949
82881- <li><p>If <var>ownerPolicy</var>'s <span data-x="embedder-policy-value">value</span> is "<code
82882- data-x="coep-unsafe-none">unsafe-none</code>" or <var>policy</var>'s <span
82883- data-x="embedder-policy-value">value</span> is "<code
82884- data-x="coep-require-corp">require-corp</code>", then return true.</p></li>
82950+ <li><p>If <var>ownerPolicy</var>'s not <span>compatible with crossOriginIsolation</span>
82951+ or <var>policy</var>'s <span data-x="embedder-policy-value">value</span> is <span>compatible with
82952+ crossOriginisolation</span>, then return true.</p></li>
8288582953
8288682954 <li><p><span>Queue a cross-origin embedder policy inheritance violation</span> with
8288782955 <var>response</var>, "<code data-x="">worker initialization</code>", <var>owner's policy</var>'s
@@ -85230,9 +85298,9 @@ interface <dfn>Location</dfn> { // but see also <a href="#the-location-interface
8523085298
8523185299 <li>
8523285300 <p>If <var>sandboxFlags</var> is not empty and <var>responseCOOP</var>'s <span
85233- data-x="coop-struct-value">value</span> is not "<code
85234- data-x="coop-unsafe-none">unsafe-none</code>" , then set <var>response</var> to an
85235- appropriate <span>network error</span> and <span>break</span>.</p>
85301+ data-x="coop-struct-value">value</span> is <span>compatible with
85302+ crossOriginIsolation</span> , then set <var>response</var> to an appropriate <span>network
85303+ error</span> and <span>break</span>.</p>
8523685304
8523785305 <p class="note">This results in a network error as one cannot simultaneously provide a
8523885306 clean slate to a response using cross-origin opener policy and sandbox the result of
@@ -99731,12 +99799,11 @@ interface <dfn>SharedWorkerGlobalScope</dfn> : <span>WorkerGlobalScope</span> {
9973199799
9973299800 <li>
9973399801 <p>If <var>worker global scope</var>'s <span
99734- data-x="concept-WorkerGlobalScope-embedder-policy">embedder policy</span> is "<code
99735- data-x="coep-require-corp">require-corp</code>" and <var>is shared</var> is true, then set
99736- <var>agent</var>'s <span>agent cluster</span>'s <span
99737- data-x="agent-cluster-cross-origin-isolation">cross-origin isolation mode</span> to "<code
99738- data-x="cross-origin-isolation-logical">logical</code>" or "<code
99739- data-x="cross-origin-isolation-concrete">concrete</code>". The one chosen is
99802+ data-x="concept-WorkerGlobalScope-embedder-policy">embedder policy</span> is <span>compatible
99803+ with crossOriginIsolation</span> and <var>is shared</var> is true, then set <var>agent</var>'s
99804+ <span>agent cluster</span>'s <span data-x="agent-cluster-cross-origin-isolation">cross-origin
99805+ isolation mode</span> to "<code data-x="cross-origin-isolation-logical">logical</code>" or
99806+ "<code data-x="cross-origin-isolation-concrete">concrete</code>". The one chosen is
9974099807 <span>implementation-defined</span>.</p>
9974199808
9974299809 <p class="XXX">This really ought to be set when the agent cluster is created, which requires a
0 commit comments