Skip to content

Commit fc328f8

Browse files
authored
Introduce Cross-Origin Embedder Policy (#1516)
* Introduce Cross-Origin Embedder Policy This is part of whatwg/html#5454. - Define embedder policy in environment settings object for service workers. - Add the CORP check in #dom-cache-matchall. * fix * fix * fix * fix * fix * fix
1 parent 0aceaac commit fc328f8

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

docs/index.bs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
164164

165165
A <a>script resource</a> has an associated <dfn export for="script resource" id="dfn-referrer-policy">referrer policy</dfn> (a [=/referrer policy=]). It is initially the empty string.
166166

167+
A [=/service worker=] has an associated <dfn>embedder policy</dfn> (an [=/embedder policy=]).
168+
167169
A [=/service worker=] has an associated <dfn export id="dfn-script-resource-map">script resource map</dfn> which is an <a>ordered map</a> where the keys are [=/URLs=] and the values are [=/responses=].
168170

169171
A [=/service worker=] has an associated <dfn export id="dfn-set-of-used-scripts">set of used scripts</dfn> (a [=ordered set|set=]) whose [=list/item=] is a [=/URL=]. It is initially a new [=ordered set|set=].
@@ -1863,6 +1865,8 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
18631865
1. Let |requestResponses| be the result of running [=Query Cache=] with |r| and |options|.
18641866
1. [=list/For each=] |requestResponse| of |requestResponses|:
18651867
1. Add a copy of |requestResponse|'s response to |responses|.
1868+
1. [=list/For each=] |response| of |responses|:
1869+
1. If |response|'s [=response/type=] is "`opaque`" and [=cross-origin resource policy check=] with |promise|'s [=relevant settings object=]'s [=environment settings object/origin=], |promise|'s [=relevant settings object=], and |response|'s [=internal/internal response=] returns <b>blocked</b>, then reject |promise| with a `TypeError` and abort these steps.
18661870
1. [=Queue a task=], on |promise|'s [=relevant settings object=]'s [=responsible event loop=] using the [=DOM manipulation task source=], to perform the following steps:
18671871
1. Let |responseList| be a [=list=].
18681872
1. [=list/For each=] |response| of |responses|:
@@ -2570,6 +2574,7 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
25702574
1. Invoke <a>Finish Job</a> with |job| and abort these steps.
25712575
1. Let |httpsState| be "<code>none</code>".
25722576
1. Let |referrerPolicy| be the empty string.
2577+
1. Let |embedder policy| be null.
25732578
1. Let |hasUpdatedResources| be false.
25742579
1. Let |updatedResourceMap| be an [=ordered map=] where the [=map/keys=] are [=/URLs=] and the [=map/values=] are [=/responses=].
25752580
1. Switching on |job|'s [=worker type=], run these substeps with the following options:
@@ -2609,6 +2614,7 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
26092614

26102615
1. Set |httpsState| to |response|'s [=response/HTTPS state=].
26112616
1. Set |referrerPolicy| to the result of <a>parse a referrer policy from a <code>Referrer-Policy</code> header</a> of |response|.
2617+
1. Set |embedder policy| to the result of [=obtain an embedder policy|obtaining an embedder policy=] from |response|.
26122618
1. If |serviceWorkerAllowed| is failure, then:
26132619
1. Asynchronously complete these steps with a <a>network error</a>.
26142620
1. Let |scopeURL| be |registration|'s [=service worker registration/scope url=].
@@ -2677,6 +2683,8 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
26772683
1. Append |url| to |worker|'s [=set of used scripts=].
26782684
1. Set |worker|'s <a>script resource</a>'s <a>HTTPS state</a> to |httpsState|.
26792685
1. Set |worker|'s <a>script resource</a>'s [=script resource/referrer policy=] to |referrerPolicy|.
2686+
1. Assert: |embedder policy| is not null.
2687+
1. Set |worker|'s [=service worker/embedder policy=] to |embedder policy|.
26802688
1. Let |forceBypassCache| be true if |job|'s [=job/force bypass cache flag=] is set, and false otherwise.
26812689
1. Let |runResult| be the result of running the [=Run Service Worker=] algorithm with |worker| and |forceBypassCache|.
26822690
1. If |runResult| is *failure* or an [=abrupt completion=], then:
@@ -2873,11 +2881,14 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
28732881
:: Return |workerGlobalScope|'s [=WorkerGlobalScope/HTTPS state=].
28742882
: The [=environment settings object/referrer policy=]
28752883
:: Return |workerGlobalScope|'s [=WorkerGlobalScope/referrer policy=].
2884+
: The [=environment settings object/embedder policy=]
2885+
:: Return |workerGlobalScope|'s [=WorkerGlobalScope/embedder policy=].
28762886

28772887
1. Set |settingsObject|'s [=environment/id=] to a new unique opaque string, its [=creation URL=] to |serviceWorker|'s [=service worker/script url=], its [=environment/target browsing context=] to null, and its [=active service worker=] to null.
28782888
1. Set |workerGlobalScope|'s [=WorkerGlobalScope/url=] to |serviceWorker|'s [=service worker/script url=].
28792889
1. Set |workerGlobalScope|'s [=WorkerGlobalScope/HTTPS state=] to |serviceWorker|'s <a>script resource</a>'s <a>HTTPS state</a>.
28802890
1. Set |workerGlobalScope|'s [=WorkerGlobalScope/referrer policy=] to |serviceWorker|'s <a>script resource</a>'s [=script resource/referrer policy=].
2891+
1. Set |workerGlobalScope|'s [=WorkerGlobalScope/embedder policy=] to |serviceWorker|'s [=service worker/embedder policy=].
28812892
1. Set |workerGlobalScope|'s [=WorkerGlobalScope/type=] to |serviceWorker|'s [=service worker/type=].
28822893
1. Set |workerGlobalScope|'s [=ServiceWorkerGlobalScope/force bypass cache for import scripts flag=] if |forceBypassCache| is true.
28832894
1. Create a new {{WorkerLocation}} object and associate it with |workerGlobalScope|.

0 commit comments

Comments
 (0)