From 7480ee17d9a6b214cd73111f75a44b2fc18cb235 Mon Sep 17 00:00:00 2001
From: Arthur Sonzogni Let agentCluster be the surrounding agent's
agent cluster. If agentCluster's cross-origin isolated is false, then throw a
- " This check is only needed when serializing (and not when deserializing) as
- cross-origin isolated cannot change over time and a
- If forStorage is true, then throw a
"DataCloneError
" DOMException
.SharedArrayBuffer
cannot leave an agent cluster.DataCloneError
" DOMException
.DataCloneError
" DOMException
.
If targetRealm's cross-origin isolated capability is false, then throw
+ "DataCloneError
" DOMException
.
This check is only needed when deserializing (and not when serializing) as
+
+ cross-origin isolated capability cannot change over time and a
+ SharedArrayBuffer
cannot leave an agent
+ cluster.
Otherwise, set value to a new SharedArrayBuffer object in targetRealm whose [[ArrayBufferData]] internal slot value is serialized.[[ArrayBufferData]] and whose [[ArrayBufferByteLength]] internal slot @@ -77983,8 +77986,43 @@ 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 a cross-origin-isolation variable of type
+ cross-origin-isolation. Initially set to"isolation-none
"
A cross-origin-isolation type can take 3 possible values:
+isolation-none
isolation-logical
isolation-concrete
+ isolation-logical
and
+ isolation-concrete
are similar. They are both used
+ for browsing context group, where:
+
Every top-level Document has `
+ Cross-Origin-Opener-Policy:
+ same-origin
`
Every Document has
+ `Cross-Origin-Embedder-Policy:
+ require-corp
`
+ On some platforms, it is difficult to provide the security properties required
+ by the cross-origin
+ isolated capability. As a result, only isolation-concrete
can grant access to the cross-origin isolated
+ capability. isolation-concrete
is
+ used on platform not supporting this capability.
+
A browsing context group has an associated historical agent cluster key
map, which is a map of BarProp {
Return the logical conjunction of realm's agent cluster's
- cross-origin isolated and whether window's associated Return the logical conjunction of: realm's agent cluster's cross-origin-isolation is associated Document
is allowed to
- use the "cross-origin-isolated
"
- feature.
+
+ isolation-concrete
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
+ cross-origin-isolation is not isolation-none
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 with agent cluster's
+ cross-origin-isolated not isolation-none
are automatically origin-isolated. 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 +80946,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.isolation-logical
or isolation-concrete
" If navigationCOOP's value is "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.isolation-logical
or isolation-concrete
. The one used is
+ platform-specific.
It is difficult on some platforms to provide the security properties required by
+ the cross-origin isolated
+ capability. Only the isolation-concrete
might grant access to it.
+ Isolation-logical
won't and is used for the
+ platforms not supporting it.
If sandboxFlags is not empty, then:
@@ -86741,9 +86799,11 @@ interface BeforeUnloadEvent : Event {Contains various Window
objects which can potentially reach each other, either
directly or by using document.domain
.
If the encompassing agent cluster's cross-origin isolated is true,
- then all the Window
objects will be same origin, can reach each other
- directly, and document.domain
will no-op.
If the encompassing agent cluster's cross-origin-isolation is not isolation-none
, then all the Window
+ objects will be same origin, can reach each other directly, and document.domain
will no-op.
Two Window
objects that are same origin can be in
different similar-origin window agents, for
@@ -86825,8 +86885,10 @@ interface BeforeUnloadEvent : Event {
An agent cluster has an associated cross-origin isolated (a boolean), - which is initially false.
+An agent cluster has an associated cross-origin-isolation variable, of type
+ cross-origin-isolation. Initially set to isolation-none
.
An agent cluster has an associated is origin-keyed (a boolean), which is initially false.
@@ -86854,8 +86916,10 @@ interface BeforeUnloadEvent : Event {Let key be site.
If group's cross-origin - isolated is true, then set key to origin.
If group's cross-origin-isolation is not isolation-none
, then set key to
+ origin.
Otherwise, if group's historical agent cluster key map[origin] exists, then set key to @@ -86880,8 +86944,9 @@ 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 to group's + cross-origin-isolation.
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 is isolation-none
, then:
Let global be realm's global
@@ -99183,8 +99249,11 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope {
If worker global scope's embedder policy is "require-corp
" and is shared is true, then set
- agent's agent cluster's cross-origin isolated to
- true.isolation-logical
or isolation-concrete
. The one chosen is
+ platform-specific.
This really ought to be set when the agent cluster is created, which requires a redesign of this section.
@@ -99197,8 +99266,8 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope {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
From 075c677b0f4c7aaaaac4e76634ca85c4b719172a Mon Sep 17 00:00:00 2001
From: Arthur Sonzogni Let agentCluster be the surrounding agent's
agent cluster. If agentCluster's cross-origin isolated
+ capability is false, then throw a
+ " This check is only needed when serializing (and not when deserializing) as
+ cross-origin isolated
+ cannot change over time and a If forStorage is true, then throw a
"
DataCloneError
"DOMException
.SharedArrayBuffer
cannot leave an
+ agent cluster.DataCloneError
" DOMException
.DataCloneError
" DOMException
.
If targetRealm's cross-origin isolated capability is false, then throw
- "DataCloneError
" DOMException
.
This check is only needed when deserializing (and not when serializing) as
-
- cross-origin isolated capability cannot change over time and a
- SharedArrayBuffer
cannot leave an agent
- cluster.
Otherwise, set value to a new SharedArrayBuffer object in
targetRealm whose [[ArrayBufferData]] internal slot value is
serialized.[[ArrayBufferData]] and whose [[ArrayBufferByteLength]] internal slot
From b955b10fcbadbf349402c082677ea9d1b0a7e3d7 Mon Sep 17 00:00:00 2001
From: Domenic Denicola If ! IsSharedArrayBuffer(value) is true, then:
Let agentCluster be the surrounding agent's
- agent cluster. If agentCluster's If the current settings object's cross-origin isolated
- capability is false, then throw a
- "
-
DataCloneError
"DOMException
.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 @@ -77985,44 +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-isolation variable of type
- cross-origin-isolation. Initially set to"isolation-none
"
A cross-origin-isolation type can take 3 possible values:
-isolation-none
isolation-logical
isolation-concrete
- isolation-logical
and
- isolation-concrete
are similar. They are both used
- for browsing context group, where:
-
Every top-level Document has `
- Cross-Origin-Opener-Policy:
- same-origin
`
Every Document has
- `Cross-Origin-Embedder-Policy:
- require-corp
`
- On some platforms, it is difficult to provide the security properties required
- by the cross-origin
- isolated capability. As a result, only isolation-concrete
can grant access to the cross-origin isolated
- capability. isolation-concrete
is
- used on platform not supporting this capability.
-
A browsing context group has an associated historical agent cluster key map, which is a map of origins to agent cluster keys. This @@ -78033,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:
@@ -79681,16 +79676,17 @@ interface BarProp {Return the logical conjunction of:
-realm's agent cluster's cross-origin-isolation is isolation-concrete
Return true if both of the following hold, and false otherwise:
+realm's agent cluster's cross-origin-isolation mode is "concrete
", and
associated Document
is
- allowed to use the "cross-origin-isolated
" feature.
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-isolation is not isolation-none
then return.
If the surrounding agent's agent cluster's cross-origin isolation mode is not "none
", then return.
If the surrounding agent's agent cluster's is origin-keyed is true, then return.
originAgentCluster
getter will always return
true.
- Similarly, Document
s with agent cluster's
- cross-origin-isolated not isolation-none
are automatically origin-isolated. 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
@@ -80945,9 +80941,9 @@ interface BarProp {
This behaves the same as "same-origin
", with the
addition that it sets the (new) top-level browsing context's group's cross-origin-isolation to
- isolation-logical
or isolation-concrete
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. Only the It is difficult on some platforms to provide the security properties required by
+ the cross-origin
+ isolated capability. Only "same-origin-plus-COEP
" cannot
be directly set via the `BarProp {
same-origin-plus-COEP
", then set
- newBrowsingContext's group's cross-origin-isolation to: isolation-logical
or isolation-concrete
. The one used is
- platform-specific. 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.isolation-concrete
might grant access to it.
- Isolation-logical
won't and is used for the
- platforms not supporting it.concrete
" might grant access to it. "logical
" won't, and is used by implementations on
+ other platforms.document.domain
.
If the encompassing agent cluster's cross-origin-isolation is not isolation-none
, then all the Window
- objects will be same origin, can reach each other directly, and cross-origin isolation mode is not "
none
", then all the Window
objects will
+ be same origin, can reach each other directly, and document.domain
will no-op.
Two Window
objects that are same origin can be in
@@ -86884,10 +86881,10 @@ interface BeforeUnloadEvent : Event {
An agent cluster has an associated cross-origin-isolation variable, of type
- cross-origin-isolation. Initially set to isolation-none
.
+
An agent cluster has an associated cross-origin isolation mode, which is a
+ cross-origin isolation mode. It is initially "none
".
An agent cluster has an associated is origin-keyed (a boolean), which is initially false.
@@ -86915,10 +86912,9 @@ interface BeforeUnloadEvent : Event {Let key be site.
If group's cross-origin-isolation is not isolation-none
, then set key to
- origin.
If group's cross-origin isolation
+ mode is not "none
", then set
+ key to origin.
Otherwise, if group's historical agent cluster key map[origin] exists, then set key to @@ -86943,9 +86939,10 @@ interface BeforeUnloadEvent : Event {
Let agentCluster be a new agent cluster.
Set agentCluster's cross-origin-isolation to group's - cross-origin-isolation.
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-isolation is isolation-none
, then:
+
If agent's agent cluster's cross-origin isolation mode is "none
", then:
Let global be realm's global
@@ -99248,11 +99245,11 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope {
If worker global scope's embedder policy is "require-corp
" and is shared is true, then set
- agent's agent cluster's cross-origin-isolated to isolation-logical
or isolation-concrete
. The one chosen is
- platform-specific.logical
" or "concrete
". The one chosen is
+ implementation-defined.
This really ought to be set when the agent cluster is created, which requires a redesign of this section.
@@ -99265,8 +99262,9 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope {Set worker global scope's cross-origin isolated - capability to agent's agent cluster's cross-origin-isolation.
concrete
".If is shared is false and owner's cross-origin isolated
From f28344f00ca4b743464ccca637a9be9b37da011a Mon Sep 17 00:00:00 2001
From: Domenic Denicola SecurityError
" DOMException
.
If the surrounding agent's agent cluster's cross-origin isolation mode is not "none
", then return.
If the surrounding agent's agent cluster's is origin-keyed is true, then return.
Contains various Window
objects which can potentially reach each other, either
directly or by using document.domain
.
If the encompassing agent cluster's cross-origin isolation mode is not "none
", then all the Window
objects will
- be same origin, can reach each other directly, and document.domain
will no-op.
If the encompassing agent cluster's is origin-keyed is true, then
+ all the Window
objects will be same origin, can reach each other
+ directly, and document.domain
will no-op.
Two It is difficult on some platforms to provide the security properties required by
the cross-origin
isolated capability. Only "Window
objects that are same origin can be in
different similar-origin window agents, for
From 7f36cd8bcbc1b159592795ab3a34f80660bedafb Mon Sep 17 00:00:00 2001
From: ArthurSonzogni concrete
" might grant access to it. "logical
" won't, and is used by implementations on
- other platforms.logical
" won't.
It is difficult on some platforms to provide the security properties required by
the cross-origin
- isolated capability. Only "concrete
" can grant access to it. "logical
" won't.
concrete
"
+ grants access to it and "logical
" does
+ not.