diff --git a/source b/source index 228b0ba53f8..8a5e08fe4e8 100644 --- a/source +++ b/source @@ -8084,16 +8084,16 @@ interface DOMStringList {
If ! IsSharedArrayBuffer(value) is true, then:
Let agentCluster be the surrounding agent's - agent cluster.
If agentCluster's cross-origin isolated is false, then throw a
- "DataCloneError
" DOMException
.
If the current settings object's cross-origin isolated
+ capability is false, then throw a "DataCloneError
"
+ DOMException
.
This check is only needed when serializing (and not when deserializing) as
- cross-origin isolated cannot change over time and a
- SharedArrayBuffer
cannot leave an agent cluster.
SharedArrayBuffer
+ cannot leave an agent cluster.
If forStorage is true, then throw a @@ -77983,9 +77983,6 @@ console.assert(iframeWindow.frameElement === null); keys to agent clusters). User agents are responsible for collecting agent clusters when it is deemed that nothing can access them anymore.
-A browsing context group has a cross-origin isolated boolean. It is initially false.
-A browsing context group has an associated historical agent cluster key map, which is a map of origins to agent cluster keys. This @@ -77996,6 +77993,41 @@ console.assert(iframeWindow.frameElement === null);
The historical agent cluster key map only ever gains entries over the lifetime of the browsing context group.
+A browsing context group has a cross-origin isolation mode, which is a
+ cross-origin isolation mode. It is initially "none
".
A cross-origin isolation mode is one of three possible values: "none
", "logical
", or "concrete
".
"logical
" and "concrete
" are similar. They are both used for
+ browsing context groups where:
every top-level Document has `Cross-Origin-Opener-Policy: same-origin
`, and
every Document has `Cross-Origin-Embedder-Policy: require-corp
`.
On some platforms, it is difficult to provide the security properties required to grant safe
+ access to the APIs gated by the cross-origin isolated
+ capability. As a result, only "concrete
" can grant access that capability.
+ "logical
" is used on platform not supporting
+ this capability, where various restrictions imposed by cross-origin isolation will still apply,
+ but the capability is not granted.
To create a new browsing context group, run these steps:
@@ -79644,11 +79676,18 @@ interface BarProp {Return the logical conjunction of realm's agent cluster's
- cross-origin isolated and whether window's associated Document
is allowed to
- use the "cross-origin-isolated
"
- feature.
Return true if both of the following hold, and false otherwise:
+realm's agent cluster's cross-origin-isolation mode is "concrete
", and
window's associated
+ Document
is allowed to use the "cross-origin-isolated
" feature.
SecurityError
" DOMException
.
- If the surrounding agent's agent cluster's cross-origin - isolated is true, then return.
If the surrounding agent's agent cluster's is origin-keyed is true, then return.
originAgentCluster
getter will always return
true.
- Similarly, This behaves the same as "Document
s in a cross-origin isolated
- agent cluster are automatically origin-keyed. The `Origin-Agent-Cluster
` header might be useful as an
- additional hint to implementations about resource allocation, since the `Similarly,
Document
s whose agent cluster's
+ cross-origin isolation mode is not
+ "none
" are automatically origin-keyed. The
+ `Origin-Agent-Cluster
` header might be useful as
+ an additional hint to implementations about resource allocation, since the `Cross-Origin-Opener-Policy
` and
`Cross-Origin-Embedder-Policy
` headers used to achieve cross-origin isolation are
more about ensuring that everything in the same address space opts in to being there. But adding
@@ -80900,8 +80937,9 @@ interface BarProp {
same-origin
", with the
addition that it sets the (new) top-level browsing context's group's cross-origin isolated to
- true.logical
" or "concrete
".
" Let newBrowsingContext be the result of creating a new top-level browsing
context. If navigationCOOP's value is " If navigationCOOP's value is " It is difficult on some platforms to provide the security properties required by
+ the cross-origin
+ isolated capability. " If sandboxFlags is not empty, then: Contains various If the encompassing agent cluster's cross-origin isolated is true,
- then all the If the encompassing agent cluster's is origin-keyed is true, then
+ all the Two An agent cluster has an associated cross-origin isolated (a boolean),
- which is initially false. An agent cluster has an associated cross-origin isolation mode, which is a
+ cross-origin isolation mode. It is initially " An agent cluster has an associated is origin-keyed (a boolean), which
is initially false. Let key be site. If group's cross-origin
- isolated is true, then set key to origin. If group's cross-origin isolation
+ mode is not " Otherwise, if group's historical agent cluster key
map[origin] exists, then set key to
@@ -86880,8 +86932,10 @@ interface BeforeUnloadEvent : Event {
Let agentCluster be a new agent cluster. Set agentCluster's cross-origin isolated to group's
- cross-origin isolated. Set agentCluster's cross-origin isolation mode to
+ group's cross-origin isolation
+ mode. Set agentCluster's is origin-keyed to true if key
equals origin; otherwise false. If agent's agent cluster's cross-origin isolated is
- false, then: If agent's agent cluster's cross-origin isolation mode is " Let global be realm's global
@@ -99183,8 +99238,11 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope {
If worker global scope's embedder policy is " This really ought to be set when the agent cluster is created, which requires a
redesign of this section. Set worker global scope's cross-origin isolated
- capability to agent's agent cluster's cross-origin
- isolated. If is shared is false and owner's cross-origin isolated
same-origin-plus-COEP
" cannot
be directly set via the `BarProp {
same-origin-plus-COEP
", then set
- newBrowsingContext's group's cross-origin isolated to true.same-origin-plus-COEP
", then set
+ newBrowsingContext's group's cross-origin isolation mode to either "logical
" or "concrete
". The choice of which is
+ implementation-defined.concrete
"
+ grants access to it and "logical
" does
+ not.Window
objects which can potentially reach each other, either
directly or by using document.domain
.Window
objects will be same origin, can reach each other
+ Window
objects will be same origin, can reach each other
directly, and document.domain
will no-op.Window
objects that are same origin can be in
@@ -86825,8 +86874,10 @@ interface BeforeUnloadEvent : Event {
none
".none
", then set
+ key to origin.
none
", then:
require-corp
" and is shared is true, then set
- agent's agent cluster's cross-origin isolated to
- true.logical
" or "concrete
". The one chosen is
+ implementation-defined.concrete
".