From 012031eb7893acb03a9ce61b08f8a8031340f291 Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Thu, 30 Jul 2020 17:30:41 -0400 Subject: [PATCH 1/9] Add `ServiceWorkerRegistration.id` and supporting algorithm changes. (Fixes #1512) This commit adds support for a registration `id` value. This will be used to uniquely identify registrations instead of `scope`. This will make it easier for a developer to migrate a registration from one `scope` to another. The commit consists of the following changes: * Add a DOMString `id` and associated getter to the registration. * Add an `origin` to the internal registration type. * Move the `scope` internal representation to `ServiceWorker` and add a new getter. * Make the `ServiceWorkerRegistration.scope` return the oldest associated worker's `scope`. * Migrate the registration map to be keyed by the tuple `(origin,id)`. * Migrate the job queue map to be keyed by the tuple `(origin,id)`. * Adjust job equality checks to treat register jobs to account for new id and scope semantics. * Support changing the scope during register operations. * Reject register operations that change the scope to a value that is already in use by another registration. * Properly un-control clients whose URL no longer matches a new active worker's scope. --- docs/index.bs | 221 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 165 insertions(+), 56 deletions(-) diff --git a/docs/index.bs b/docs/index.bs index 9e1f5ee4..72e84ee0 100644 --- a/docs/index.bs +++ b/docs/index.bs @@ -157,6 +157,8 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 A [=/service worker=] has an associated script url (a [=/URL=]). + A [=/service worker=] has an associated scope url (a [=/URL=]). + A [=/service worker=] has an associated type which is either "classic" or "module". Unless stated otherwise, it is "classic". A [=/service worker=] has an associated containing service worker registration (a [=/service worker registration=]), which contains itself. @@ -226,9 +228,11 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231

Service Worker Registration

- A service worker registration is a tuple of a [=service worker registration/scope url=] and a set of [=/service workers=], an installing worker, a waiting worker, and an active worker. A user agent *may* enable many [=/service worker registrations=] at a single origin so long as the [=service worker registration/scope url=] of the [=/service worker registration=] differs. A [=/service worker registration=] of an identical [=service worker registration/scope url=] when one already exists in the user agent causes the existing [=/service worker registration=] to be replaced. + A service worker registration is a tuple of an [=environment settings object/origin=], an [=service worker registration/id=], and a set of [=/service workers=]; an installing worker, a waiting worker, and an active worker. A user agent *may* enable many [=/service worker registrations=] at a single origin so long as the [=service worker registration/id=] of the [=/service worker registration=] differs. + + A [=/service worker registration=] has an associated origin, an [=environment settings object/origin=]. - A [=/service worker registration=] has an associated scope url (a [=/URL=]). + A [=/service worker registration=] has an associated id, a [=string=]. A [=/service worker registration=] has an associated installing worker (a [=/service worker=] or null) whose [=service worker/state=] is "`installing`". It is initially set to null. @@ -250,12 +254,12 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 A [=/service worker registration=] has an associated navigation preload header value, which is a [=byte sequence=]. It is initially set to \`true\`. - A [=/service worker registration=] is said to be unregistered if [=scope to registration map=][this [=/service worker registration=]'s [=service worker registration/scope url=]] is not this [=/service worker registration=]. + A [=/service worker registration=] is said to be unregistered if [=registration map=][(|origin|,|id|)] is not this [=/service worker registration=], where |origin| and |id| are this [=service worker registration=]'s [=service worker registration/origin=] and [=service worker registration/id=] respectively.

Lifetime

- A user agent *must* persistently keep a list of registered [=/service worker registrations=] unless otherwise they are explicitly unregistered. A user agent has a scope to registration map that stores the entries of the tuple of [=/service worker registration=]'s [=service worker registration/scope url=], [=URL serializer|serialized=], and the corresponding [=/service worker registration=]. The lifetime of [=/service worker registrations=] is beyond that of the {{ServiceWorkerRegistration}} objects which represent them within the lifetime of their corresponding [=/service worker clients=]. + A user agent *must* persistently keep a list of registered [=/service worker registrations=] unless otherwise they are explicitly unregistered. A user agent has a registration map that stores the entries of the tuple of [=/service worker registration=]'s ([=service worker registration/origin=],[=service worker registration/id=]) and the corresponding [=/service worker registration=]. The lifetime of [=/service worker registrations=] is beyond that of the {{ServiceWorkerRegistration}} objects which represent them within the lifetime of their corresponding [=/service worker clients=].
@@ -521,6 +525,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 readonly attribute ServiceWorker? active; [SameObject] readonly attribute NavigationPreloadManager navigationPreload; + readonly attribute DOMString id; readonly attribute USVString scope; readonly attribute ServiceWorkerUpdateViaCache updateViaCache; @@ -593,10 +598,21 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 The navigationPreload getter steps are to return the [=ServiceWorkerRegistration/service worker registration=]'s {{NavigationPreloadManager}} object. +
+

{{ServiceWorkerRegistration/id}}

+ + The id getter steps are to return the [=ServiceWorkerRegistration/service worker registration=]'s [=service worker registration/id=]. +
+

{{ServiceWorkerRegistration/scope}}

- The scope getter steps are to return the [=ServiceWorkerRegistration/service worker registration=]'s serialized [=service worker registration/scope url=]. + The scope getter steps are: + + 1, Let |oldestWorker| be the result of running [=Get Oldest Worker=] passing |registration| as the argument. + 1. If |oldestWorker| is null, then: + 1. Return null. + 1. Return |oldestWorker|'s [=service worker/scope url=].
In the example in [[#service-worker-url]], the value of registration.scope, obtained from navigator.serviceWorker.ready.then(registration => console.log(registration.scope)) for example, will be "https://example.com/". @@ -619,7 +635,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. If |newestWorker| is null, return [=a promise rejected with=] an "{{InvalidStateError}}" {{DOMException}} and abort these steps. 1. If [=this=]'s [=relevant global object=] |globalObject| is a {{ServiceWorkerGlobalScope}} object, and |globalObject|'s associated [=ServiceWorkerGlobalScope/service worker=]'s state is "`installing`", return [=a promise rejected with=] an "{{InvalidStateError}}" {{DOMException}} and abort these steps. 1. Let |promise| be a promise. - 1. Let |job| be the result of running Create Job with *update*, |registration|'s [=service worker registration/scope url=], |newestWorker|'s [=service worker/script url=], |promise|, and [=this=]'s relevant settings object. + 1. Let |job| be the result of running Create Job with *update*, |registration|'s [=service worker registration/origin=], [=service worker registration/id=], null, |newestWorker|'s [=service worker/script url=], |promise|, and [=this=]'s relevant settings object. 1. Set |job|'s worker type to |newestWorker|'s [=service worker/type=]. 1. Invoke Schedule Job with |job|. 1. Return |promise|. @@ -633,7 +649,9 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 The unregister() method steps are: 1. Let |promise| be [=a new promise=]. - 1. Let |job| be the result of running [=Create Job=] with *unregister*, the [=service worker registration/scope url=] of the [=ServiceWorkerRegistration/service worker registration=], null, |promise|, and [=this=]'s relevant settings object. + 1. Let |newestWorker| be the result of running Get Newest Worker algorithm passing |registration| as its argument. + 1. If |newestWorker| is null, return [=a promise rejected with=] an "{{InvalidStateError}}" {{DOMException}} and abort these steps. + 1. Let |job| be the result of running [=Create Job=] with *unregister*, the [=service worker registration/origin=], [=service worker registration/id=] of the [=ServiceWorkerRegistration/service worker registration=], null, null, |promise|, and [=this=]'s relevant settings object. 1. Invoke Schedule Job with |job|. 1. Return |promise|.
@@ -688,6 +706,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 [NewObject] Promise<ServiceWorkerRegistration> register(USVString scriptURL, optional RegistrationOptions options = {}); [NewObject] Promise<(ServiceWorkerRegistration or undefined)> getRegistration(optional USVString clientURL = ""); + [NewObject] Promise<(ServiceWorkerRegistration or undefined)> getRegistrationById(DOMString id); [NewObject] Promise<FrozenArray<ServiceWorkerRegistration>> getRegistrations(); undefined startMessages(); @@ -701,6 +720,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231
       dictionary RegistrationOptions {
+        DOMString id;
         USVString scope;
         WorkerType type = "classic";
         ServiceWorkerUpdateViaCache updateViaCache = "imports";
@@ -747,7 +767,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231
     
- Note: The {{ServiceWorkerContainer/register(scriptURL, options)}} method creates or updates a [=/service worker registration=] for the given [=service worker registration/scope url=]. If successful, a [=/service worker registration=] ties the provided |scriptURL| to a [=service worker registration/scope url=], which is subsequently used for navigation matching. + Note: The {{ServiceWorkerContainer/register(scriptURL, options)}} method creates or updates a [=/service worker registration=] for the given [=service worker registration/id=]. If successful, a [=/service worker registration=] ties the provided |scriptURL| to a [=service worker/scope url=], which is subsequently used for navigation matching. The register(|scriptURL|, |options|) method steps are: @@ -755,8 +775,10 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Let |client| be [=this=]'s [=ServiceWorkerContainer/service worker client=]. 1. Let |scriptURL| be the result of parsing |scriptURL| with [=this=]'s relevant settings object's API base URL. 1. Let |scopeURL| be null. - 1. If |options|["{{RegistrationOptions/scope}}"] [=map/exists=], set |scopeURL| to the result of parsing |options|["{{RegistrationOptions/scope}}"] with [=this=]'s relevant settings object's API base URL. - 1. Invoke [=Start Register=] with |scopeURL|, |scriptURL|, |p|, |client|, |client|'s creation URL, |options|["{{RegistrationOptions/type}}"], and |options|["{{RegistrationOptions/updateViaCache}}"]. + 1. If |options|["{{RegistrationOptions/scope}}"] is present, set |scopeURL| to the result of parsing |options|["{{RegistrationOptions/scope}}"] with the [=this=]'s relevant settings object's API base URL. + 1. Let |id| be null. + 1. If |options|.{{RegistrationOptions/id} is present, set |id| to |options|["{{RegistrationOptions/id}}"]. + 1. Invoke [=Start Register=] with |id|, |scopeURL|, |scriptURL|, |p|, |client|, |client|'s creation URL, |options|["{{RegistrationOptions/type}}"], and |options|["{{RegistrationOptions/updateViaCache}}"]. 1. Return |p|.
@@ -778,6 +800,20 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Return |promise|. +
+ + + getRegistrationById(|id|) method steps are: + + 1. Let |origin| be [=current settings object=]'s [=environment settings object/origin=]. + 1. Let |promise| be a new promise. + 1. Run the following substeps in parallel + 1. Let |registration| be the result of running the [=GetRegistration=] algorithm passing |origin| and |id| as the arguments. + 1. If |registration| is null, resolve |promise| with undefined and abort these steps. + 1. Resolve |promise| with the result of [=getting the service worker registration object=] that represents |registration| in |promise|'s [=relevant settings object=]. + 1. Return |promise|. +
+
@@ -787,8 +823,8 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Let |promise| be [=a new promise=]. 1. Run the following steps [=in parallel=]: 1. Let |registrations| be a new [=list=]. - 1. [=map/For each=] |scope| → |registration| of [=scope to registration map=]: - 1. If the [=url/origin=] of the result of [=URL parser|parsing=] |scope| is the [=same origin|same=] as |client|'s [=environment settings object/origin=], then [=append=] |registration| to |registrations|. + 1. [=map/For each=] |key| → |registration| of [=registration map=]: + 1. If |registration|'s [=service worker registration/origin=] is the [=same origin|same=] as |client|'s [=environment settings object/origin=], then [=append=] |registration| to |registrations|. 1. [=Queue a task=] on |promise|'s [=relevant settings object=]'s [=responsible event loop=], using the [=DOM manipulation task source=], to run the following steps: 1. Let |registrationObjects| be a new [=list=]. 1. [=list/For each=] |registration| of |registrations|: @@ -2287,7 +2323,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 *This section is non-normative.* - In addition to the [[#origin-restriction|origin restriction]], service workers are restricted by the [=url/path=] of the service worker script. For example, a service worker script at https://www.example.com/~bob/sw.js can be registered for the [=service worker registration/scope url=] https://www.example.com/~bob/ but not for the scope https://www.example.com/ or https://www.example.com/~alice/. This provides some protection for sites that host multiple-user content in separated directories on the same origin. However, the path restriction is not considered a hard security boundary, as only origins are. Sites are encouraged to use different origins to securely isolate segments of the site if appropriate. + In addition to the [[#origin-restriction|origin restriction]], service workers are restricted by the [=url/path=] of the service worker script. For example, a service worker script at https://www.example.com/~bob/sw.js can be registered for the [=service worker/scope url=] https://www.example.com/~bob/ but not for the scope https://www.example.com/ or https://www.example.com/~alice/. This provides some protection for sites that host multiple-user content in separated directories on the same origin. However, the path restriction is not considered a hard security boundary, as only origins are. Sites are encouraged to use different origins to securely isolate segments of the site if appropriate. Servers can remove the path restriction by setting a [=Service-Worker-Allowed=] header on the service worker script.
@@ -2316,7 +2352,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231

Privacy

- [=/Service workers=] introduce new persistent storage features including scope to registration map (for [=/service worker registrations=] and their [=/service workers=]), [=request response list=] and name to cache map (for caches), and [=script resource map=] (for script resources). In order to protect users from any potential unsanctioned tracking threat, these persistent storages *should* be cleared when users intend to clear them and *should* maintain and interoperate with existing user controls e.g. purging all existing persistent storages. + [=/Service workers=] introduce new persistent storage features including registration map (for [=/service worker registrations=] and their [=/service workers=]), [=request response list=] and name to cache map (for caches), and [=script resource map=] (for script resources). In order to protect users from any potential unsanctioned tracking threat, these persistent storages *should* be cleared when users intend to clear them and *should* maintain and interoperate with existing user controls e.g. purging all existing persistent storages.
@@ -2377,13 +2413,17 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 The following definitions are the user agent's internal data structures used throughout the specification. - A scope to registration map is an ordered map where the keys are [=service worker registration/scope urls=], [=URL serializer|serialized=], and the values are [=/service worker registrations=]. + A registration map is an ordered map where the keys are ([=environment settings object/origin=],[=service worker registration/id=]) and the values are [=/service worker registrations=]. A job is an abstraction of one of register, update, and unregister request for a [=/service worker registration=].
A job has a job type, which is one of *register*, *update*, and *unregister*. + A job has an origin. + + A job has an id. + A job has a scope url (a [=/URL=]). A job has a script url (a [=/URL=]). @@ -2408,12 +2448,13 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 Two jobs are equivalent when their job type is the same and: - * For *register* and *update* jobs, their [=job/scope url=], [=job/script url=], [=job/worker type=], and [=job/update via cache mode=] are the same. - * For *unregister* jobs, their [=job/scope url=] is the same. + * For *register* jobs, their [=job/origin=], [=job/id=], [=job/scope url=], [=job/script url=], [=job/worker type=], and [=job/update via cache mode=] are the same. + * For *update* jobs, their [=job/origin=], [=job/id=], [=job/script url=], [=job/worker type=], and [=job/update via cache mode=] are the same. + * For *unregister* jobs, their [=job/origin=] and [=job/id=] are the same. A job queue is a thread safe [=queue=] used to synchronize the set of concurrent [=jobs=]. The [=job queue=] contains [=jobs=] as its [=queue/items=]. A [=job queue=] is initially empty. - A scope to job queue map is an ordered map where the keys are [=service worker registration/scope urls=], [=URL serializer|serialized=], and the values are [=job queues=]. + A job queue map is an ordered map where the keys are ([=environment settings object/origin=],[=service worker registration/ids=]) and the values are [=job queues=]. A bad import script response is a [=/response=] for which any of the following conditions are met: @@ -2428,6 +2469,8 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 : Input :: |jobType|, a job type + :: |origin|, an [=environment settings object/origin=] + :: |id|, an [=service worker registration/id=] :: |scopeURL|, a [=/URL=] :: |scriptURL|, a [=/URL=] :: |promise|, a promise @@ -2437,6 +2480,8 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Let |job| be a new job. 1. Set |job|'s [=job/job type=] to |jobType|. + 1. Set |job|'s [=job/origin=] to |origin|. + 1. Set |job|'s [=job/id=] to |id|. 1. Set |job|'s [=job/scope url=] to |scopeURL|. 1. Set |job|'s [=job/script url=] to |scriptURL|. 1. Set |job|'s [=job/job promise=] to |promise|. @@ -2454,9 +2499,11 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 :: none 1. Let |jobQueue| be null. - 1. Let |jobScope| be |job|'s [=job/scope url=], [=URL serializer|serialized=]. - 1. If [=scope to job queue map=][|jobScope|] does not [=map/exist=], [=map/set=] [=scope to job queue map=][|jobScope|] to a new [=job queue=]. - 1. Set |jobQueue| to [=scope to job queue map=][|jobScope|]. + 1. Let |origin| be |job|'s [=job/origin=]. + 1. Let |id| be |job|'s [=job/id=]. + 1. Let |key| be (|origin|,|id|). + 1. If [=job queue map=][|key|] does not [=map/exist=], [=map/set=] [=job queue map=][|key|] to a new [=job queue=]. + 1. Set |jobQueue| to [=job queue map=][|key|]. 1. If |jobQueue| is empty, then: 1. Set |job|'s [=containing job queue=] to |jobQueue|, and [=queue/enqueue=] |job| to |jobQueue|. 1. Invoke [=Run Job=] with |jobQueue|. @@ -2541,6 +2588,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231

Start Register

: Input + :: |id|, a [=service worker registration/id=] or null :: |scopeURL|, a [=/URL=] or failure or null :: |scriptURL|, a [=/URL=] or failure :: |promise|, a promise @@ -2569,7 +2617,8 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. If |scopeURL|'s [=url/scheme=] is not one of "http" and "https", reject |promise| with a TypeError and abort these steps. 1. If any of the strings in |scopeURL|'s [=url/path=] contains either ASCII case-insensitive "%2f" or ASCII case-insensitive "%5c", reject |promise| with a TypeError and abort these steps. - 1. Let |job| be the result of running [=Create Job=] with *register*, |scopeURL|, |scriptURL|, |promise|, and |client|. + 1. If |id| is null, set |id| to |scopeURL|. + 1. Let |job| be the result of running [=Create Job=] with *register*, |client|' [=service worker client/origin=], |id|, |scopeURL|, |scriptURL|, |promise|, and |client|. 1. Set |job|'s [=job/worker type=] to |workerType|. 1. Set |job|'s [=job/update via cache mode=] to |updateViaCache|. 1. Set |job|'s [=job/referrer=] to |referrer|. @@ -2584,23 +2633,30 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 : Output :: none - 1. If the result of running potentially trustworthy origin with the [=environment settings object/origin=] of |job|'s [=job/script url=] as the argument is Not Trusted, then: + 1. If the result of running potentially trustworthy origin with |job|'s [=job/origin=] as the argument is Not Trusted, then: + 1. Invoke [=Reject Job Promise=] with |job| and "{{SecurityError}}" {{DOMException}}. + 1. Invoke Finish Job with |job| and abort these steps. + 1. If |job|'s [=job/script url=]'s [=url/origin=] and |job|'s [=job/origin=] are not [=same origin=], then: 1. Invoke [=Reject Job Promise=] with |job| and "{{SecurityError}}" {{DOMException}}. 1. Invoke Finish Job with |job| and abort these steps. - 1. If |job|'s [=job/script url=]'s [=url/origin=] and |job|'s [=job/referrer=]'s [=url/origin=] are not [=same origin=], then: + 1. If |job|'s [=job/scope url=]'s [=url/origin=] and |job|'s [=job/origin=] are not [=same origin=], then: 1. Invoke [=Reject Job Promise=] with |job| and "{{SecurityError}}" {{DOMException}}. 1. Invoke Finish Job with |job| and abort these steps. - 1. If |job|'s [=job/scope url=]'s [=url/origin=] and |job|'s [=job/referrer=]'s [=url/origin=] are not [=same origin=], then: + 1. If |job|'s [=job/referrer=]'s [=url/origin=] and |job|'s [=job/origin=] are not [=same origin=], then: 1. Invoke [=Reject Job Promise=] with |job| and "{{SecurityError}}" {{DOMException}}. 1. Invoke Finish Job with |job| and abort these steps. - 1. Let |registration| be the result of running the Get Registration algorithm passing |job|'s [=job/scope url=] as the argument. + 1. Let |registration| be the result of running the Get Registration algorithm passing |job|'s [=job/origin=] and [=job/id=] as the arguments. 1. If |registration| is not null, then: 1. Let |newestWorker| be the result of running the Get Newest Worker algorithm passing |registration| as the argument. - 1. If |newestWorker| is not null, |job|'s [=job/script url=] [=url/equals=] |newestWorker|'s [=service worker/script url=], |job|'s [=job/worker type=] equals |newestWorker|'s [=service worker/type=], and |job|'s [=job/update via cache mode=]'s value equals |registration|'s [=service worker registration/update via cache mode=], then: + 1. If |newestWorker| is not null, |job|'s [=job/scope url=] [=url/equals=] |newestWorker|'s [=service worker/scope url=], |job|'s [=job/script url=] [=url/equals=] |newestWorker|'s [=service worker/script url=], |job|'s [=job/worker type=] equals |newestWorker|'s [=service worker/type=], and |job|'s [=job/update via cache mode=]'s value equals |registration|'s [=service worker registration/update via cache mode=], then: 1. Invoke [=Resolve Job Promise=] with |job| and |registration|. 1. Invoke Finish Job with |job| and abort these steps. + 1. Let |scopeRegistration| be the result of running the Get Registration By Scope algorithm passing |job|'s [=job/scope url=] as the argument. + 1. If |scopeRegistration| is not null, |scopeRegistration| is not |registration|, and |scopeRegistration|'s active worker's [=service worker/scope url=] [=url/equals=] |job|'s [=job/scope url=], then: + 1. Invoke [=Reject Job Promise=] with |job| and "{{InvalidStateError}}" {{DOMException}}. + 1. Invoke Finish Job with |job| and abort these steps. 1. Else: - 1. Invoke Set Registration algorithm with |job|'s [=job/scope url=] and |job|'s [=job/update via cache mode=]. + 1. Invoke Set Registration algorithm with |job|'s [=job/origin=], |job|'s [=job/id=], and |job|'s [=job/update via cache mode=]. 1. Invoke Update algorithm passing |job| as the argument. @@ -2612,7 +2668,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 : Output :: none - 1. Let |registration| be the result of running the Get Registration algorithm passing |job|'s [=job/scope url=] as the argument. + 1. Let |registration| be the result of running the Get Registration algorithm passing |job|'s [=job/origin=] and [=job/id=] as the arguments. 1. If |registration| is null, then: 1. Invoke [=Reject Job Promise=] with |job| and `TypeError`. 1. Invoke Finish Job with |job| and abort these steps. @@ -2661,7 +2717,14 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Set |policyContainer| to the result of creating a policy container from a fetch response given |response|. 1. If |serviceWorkerAllowed| is failure, then: 1. Asynchronously complete these steps with a network error. - 1. Let |scopeURL| be |registration|'s [=service worker registration/scope url=]. + 1. Let |origin| be |registration|'s [=service worker registration/origin=]. + 1. Let |id| be |registration|'s [=service worker registration/id=]. + 1. If |job|'s [=job/scope url=] is null, then: + 1. Assert: |job|'s [=job/job type=] is *update*. + 1. Let |scopeURL| be |newest worker|'s [=service worker/scope url=]. + 1. Else: + 1. Assert: |job|'s [=job/job type=] is *register*. + 1. Let |scopeURL| be |job|'s [=job/scope url=]. 1. Let |maxScopeString| be null. 1. If |serviceWorkerAllowed| is null, then: 1. Let |resolvedScope| be the result of [=URL parser|parsing=] "`./`" using |job|'s [=job/script url=] as the [=base URL=]. @@ -2715,21 +2778,21 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 Note: This will do nothing if [=Reject Job Promise=] was previously invoked with "{{SecurityError}}" {{DOMException}}. - 1. If |newestWorker| is null, then [=map/remove=] [=scope to registration map=][|scopeURL|, [=URL serializer|serialized=]]. + 1. If |newestWorker| is null, then [=map/remove=] [=registration map=][(|origin|,|id|)]. 1. Invoke [=Finish Job=] with |job| and abort these steps. 1. If |hasUpdatedResources| is false, then: 1. Set |registration|'s [=service worker registration/update via cache mode=] to |job|'s [=job/update via cache mode=]. 1. Invoke [=Resolve Job Promise=] with |job| and |registration|. 1. Invoke [=Finish Job=] with |job| and abort these steps. 1. Let |worker| be a new [=/service worker=]. - 1. Set |worker|'s [=service worker/script url=] to |job|'s [=job/script url=], |worker|'s [=script resource=] to |script|, |worker|'s [=service worker/type=] to |job|'s [=worker type=], and |worker|'s [=script resource map=] to |updatedResourceMap|. + 1. Set |worker|'s [=service worker/script url=] to |job|'s [=job/script url=], |worker|'s [=service worker/scope url=] to |job|'s [=job/scope url=], |worker|'s [=script resource=] to |script|, |worker|'s [=service worker/type=] to |job|'s [=worker type=], and |worker|'s [=script resource map=] to |updatedResourceMap|. 1. Append |url| to |worker|'s [=set of used scripts=]. 1. Set |worker|'s script resource's [=script resource/policy container=] to |policyContainer|. 1. Let |forceBypassCache| be true if |job|'s [=job/force bypass cache flag=] is set, and false otherwise. 1. Let |runResult| be the result of running the [=Run Service Worker=] algorithm with |worker| and |forceBypassCache|. 1. If |runResult| is *failure* or an [=abrupt completion=], then: 1. Invoke [=Reject Job Promise=] with |job| and `TypeError`. - 1. If |newestWorker| is null, then [=map/remove=] [=scope to registration map=][|registration|'s [=service worker registration/scope url=], [[=URL serializer|serialized=]]. + 1. If |newestWorker| is null, then [=map/remove=] [=registration map=][(|origin|,|id|)]. 1. Invoke [=Finish Job=] with |job|. 1. Else, invoke [=Install=] algorithm with |job|, |worker|, and |registration| as its arguments. @@ -2750,7 +2813,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Let |newestWorker| be the result of running Get Newest Worker algorithm passing |registration| as its argument. 1. If |newestWorker| is null, abort these steps. - 1. Let |job| be the result of running Create Job with *update*, |registration|'s [=service worker registration/scope url=], |newestWorker|'s [=service worker/script url=], null, and null. + 1. Let |job| be the result of running Create Job with *update*, |registration|'s [=service worker registration/origin=], |registration|'s [=service worker registration/id=], |newestWorker|'s [=service worker/scope url=], |newestWorker|'s [=service worker/script url=], null, and null. 1. Set |job|'s worker type to |newestWorker|'s [=service worker/type=]. 1. Set |job|'s [=force bypass cache flag=] if |forceBypassCache| is true. 1. Invoke Schedule Job with |job|. @@ -2773,7 +2836,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Run the Update Worker State algorithm passing |registration|'s installing worker and "`installing`" as the arguments. 1. Assert: |job|'s [=job/job promise=] is not null. 1. Invoke [=Resolve Job Promise=] with |job| and |registration|. - 1. Let |settingsObjects| be all [=environment settings objects=] whose [=environment settings object/origin=] is |registration|'s [=service worker registration/scope url=]'s [=url/origin=]. + 1. Let |settingsObjects| be all [=environment settings objects=] whose [=environment settings object/origin=] is |job|'s [=job/origin=]. 1. For each |settingsObject| of |settingsObjects|, [=queue a task=] on |settingsObject|'s [=responsible event loop=] in the [=DOM manipulation task source=] to run the following steps: 1. Let |registrationObjects| be every {{ServiceWorkerRegistration}} object in |settingsObject|'s [=environment settings object/realm=], whose [=ServiceWorkerRegistration/service worker registration=] is |registration|. 1. For each |registrationObject| of |registrationObjects|, [=fire an event=] on |registrationObject| named `updatefound`. @@ -2800,7 +2863,9 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. If |installFailed| is true, then: 1. Run the Update Worker State algorithm passing |registration|'s [=installing worker=] and "`redundant`" as the arguments. 1. Run the Update Registration State algorithm passing |registration|, "installing" and null as the arguments. - 1. If |newestWorker| is null, then [=map/remove=] [=scope to registration map=][|registration|'s [=service worker registration/scope url=], [[=URL serializer|serialized=]]. + 1. Let |id| be |registration|'s [=service worker registration/id=]. + 1. Let |origin| be |registration|'s [=service worker registration/origin=]. + 1. If |newestWorker| is null, then [=map/remove=] [=registration map=][(|origin|,|id|)]. 1. Invoke Finish Job with |job| and abort these steps. 1. Let |map| be |registration|'s [=installing worker=]'s [=script resource map=]. 1. Let |usedSet| be |registration|'s [=installing worker=]'s [=set of used scripts=]. @@ -2831,6 +2896,10 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. If |registration|'s [=active worker=] is not null, then: 1. [=Terminate Service Worker|Terminate=] |registration|'s [=active worker=]. 1. Run the [=Update Worker State=] algorithm passing |registration|'s [=active worker=] and "`redundant`" as the arguments. + 1. Let |oldUsingClients| be a [=list=] of [=/service worker clients=] who are using |registration|. + + Note: We must get the list of clients prior to clearing the old active worker from |registration|. Otherwise the [=/service worker client=] will not be considered to be using |registration| any more since |registration| will no longer be the containing service worker registration. + 1. Run the Update Registration State algorithm passing |registration|, "active" and |registration|'s waiting worker as the arguments. 1. Run the Update Registration State algorithm passing |registration|, "waiting" and null as the arguments. 1. Run the Update Worker State algorithm passing |registration|'s active worker and "`activating`" as the arguments. @@ -2839,7 +2908,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 Note: Make sure to design activation handlers to do non-essential work (like cleanup). This is because activation handlers may not all run to completion, especially in the case of browser termination during activation. A Service Worker should be designed to function properly, even if the activation handlers do not all complete successfully. - 1. Let |matchedClients| be a [=list=] of [=/service worker clients=] whose creation URL matches |registration|'s [=service worker registration/scope url=]. + 1. Let |matchedClients| be a [=list=] of [=/service worker clients=] whose creation URL matches |registration|'s [=active worker=]'s [=service worker/scope url=]. 1. [=list/For each=] |client| of |matchedClients|, [=queue a task=] on |client|'s [=responsible event loop=], using the [=DOM manipulation task source=], to run the following substeps: 1. Let |readyPromise| be |client|'s [=environment settings object/global object=]'s {{ServiceWorkerContainer}} object's [=ServiceWorkerContainer/ready promise=]. 1. If |readyPromise| is null, then [=continue=]. @@ -2850,9 +2919,12 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 Note: Resources will now use the service worker registration instead of the existing application cache. - 1. For each [=/service worker client=] |client| who is using |registration|: - 1. Set |client|'s active worker to |registration|'s active worker. - 1. Invoke Notify Controller Change algorithm with |client| as the argument. + 1. [=list/For each=] |oldClient| of |oldUsingClients|: + 1. If |oldClient|'s creation URL matches |registration|'s [=active worker=]'s [=service worker/scope url=], then: + 1. Set |client|'s active worker to |registration|'s active worker. + 1. Else: + 1. Set |oldClient|'s active worker to null. + 1. Invoke Notify Controller Change algorithm with |oldClient| as the argument. 1. Let |activeWorker| be |registration|'s active worker. 1. If the result of running the [=Should Skip Event=] algorithm with |activeWorker| and "activate" is false, then: 1. If the result of running the [=Run Service Worker=] algorithm with |activeWorker| is not *failure*, then: @@ -3189,7 +3261,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 : Output :: None - 1. [=map/For each=] scope → |registration| of scope to registration map: + 1. [=map/For each=] key → |registration| of registration map: 1. If |registration|'s installing worker |installingWorker| is not null, then: 1. If |registration|'s [=waiting worker=] is null and |registration|'s [=active worker=] is null, invoke Clear Registration with |registration| and continue to the next iteration of the loop. 1. Else, set |installingWorker| to null. @@ -3220,14 +3292,14 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 : Output :: none - 1. If the [=environment settings object/origin=] of |job|'s [=job/scope url=] is not |job|'s [=job/client=]'s [=environment settings object/origin=], then: + 1. If |job|'s [=job/origin=] is not |job|'s [=job/client=]'s [=environment settings object/origin=], then: 1. Invoke [=Reject Job Promise=] with |job| and "{{SecurityError}}" {{DOMException}}. 1. Invoke Finish Job with |job| and abort these steps. - 1. Let |registration| be the result of running Get Registration algorithm passing |job|'s [=job/scope url=] as the argument. + 1. Let |registration| be the result of running Get Registration algorithm passing |job|'s [=job/origin=] and [=job/id=] as the arguments. 1. If |registration| is null, then: 1. Invoke Resolve Job Promise with |job| and false. 1. Invoke Finish Job with |job| and abort these steps. - 1. [=map/Remove=] [=scope to registration map=][|job|'s [=job/scope url=]]. + 1. [=map/Remove=] [=registration map=][(|job|'s [=job/origin=],|job|'s [=job/id=])]. 1. Invoke Resolve Job Promise with |job| and true. 1. Invoke [=Try Clear Registration=] with |registration|. @@ -3240,15 +3312,16 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231

Set Registration

: Input - :: |scope|, a [=/URL=] + :: |origin|, an [=environment settings object/origin=] + :: |id|, an [=service worker registration/id=] :: |updateViaCache|, an [=service worker registration/update via cache mode=] : Output :: |registration|, a [=/service worker registration=] 1. Run the following steps atomically. 1. Let |scopeString| be [=URL serializer|serialized=] |scope| with the *exclude fragment flag* set. - 1. Let |registration| be a new [=/service worker registration=] whose [=service worker registration/scope url=] is set to |scope| and [=service worker registration/update via cache mode=] is set to |updateViaCache|. - 1. [=map/Set=] scope to registration map[|scopeString|] to |registration|. + 1. Let |registration| be a new [=/service worker registration=] whose [=service worker registration/origin=] is set to |origin|, [=service worker registration/id=] is set to |id|, and [=service worker registration/update via cache mode=] is set to |updateViaCache|. + 1. [=map/Set=] registration map[|id|] to |registration|. 1. Return |registration|. @@ -3364,7 +3437,12 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Run the following steps atomically. 1. Let |clientURLString| be serialized |clientURL|. 1. Let |matchingScopeString| be the empty string. - 1. Let |scopeStringSet| be the result of [=map/get the keys|getting the keys=] from scope to registration map. + 1. Let |scopeMap| be the empty map. + 1. [=map/For each=] |key| → |value| of registration map: + 1. Let |activeWorker| be |value|'s [=service worker registration/active worker=], + 1. If |activeWorker| is null, then [=continue=]. + 1. [=map/Set=] |scopeMap|[|active worker|'s [=service worker/scope url] to |value|. + 1. Let |scopeStringSet| be the result of [=map/get the keys|getting the keys=] from |scopeMap|. 1. Set |matchingScopeString| to the longest value in |scopeStringSet| which the value of |clientURLString| starts with, if it exists. Note: The URL string matching in this step is prefix-based rather than path-structural. E.g. a client URL string with "https://example.com/prefix-of/resource.html" will match a registration for a scope with "https://example.com/prefix". The URL string comparison is safe for the same-origin security as HTTP(S) URLs are always [=URL serializer|serialized=] with a trailing slash at the end of the origin part of the URLs. @@ -3373,23 +3451,38 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. If |matchingScopeString| is not the empty string, then: 1. Set |matchingScope| to the result of parsing |matchingScopeString|. 1. Assert: |matchingScope|'s [=url/origin=] and |clientURL|'s [=url/origin=] are [=same origin=]. - 1. Return the result of running [=Get Registration=] algorithm passing |matchingScope| as the argument. + 1. Return |scopeMap|[|matchingScopeString|].

Get Registration

: Input - :: |scope|, a [=/URL=] + :: |origin|, a [=environment settings object/origin=] + :: |id|, a [=service worker registration/id=] : Output - :: A [=/service worker registration=] + :: A [=/service worker registration=] or null. + + 1. Run the following steps atomically. + 1. [=map/Get=] (|origin|,|id|) from [=registration map=] and return the result. +
+ +
+

Get Registration By Scope

+ + : Input + :: |scope|, a [=URL=] + : Output + :: A [=/service worker registration=] or null. 1. Run the following steps atomically. - 1. Let |scopeString| be the empty string. - 1. If |scope| is not null, set |scopeString| to [=URL serializer|serialized=] |scope| with the *exclude fragment flag* set. - 1. [=map/For each=] |key| → |value| of scope to registration map: - 1. If |scopeString| matches |key|, then return |value|. + 1. [=map/For each=] |key| → |value| of registration map: + 1. If |value|'s active worker's [=service worker/scope url=] [=url/equals=] |scope|, then return |value|. + 1. If |value|'s waiting worker's [=service worker/scope url=] [=url/equals=] |scope|, then return |value|. + 1. If |value|'s installing worker's [=service worker/scope url=] [=url/equals=] |scope|, then return |value|. 1. Return null. + + Note: Only one registration should be associated with a given scope at a time since we fail Register when there is a conflicting registration with the same scope.
@@ -3408,6 +3501,22 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Return |newestWorker|.
+
+

Get Oldest Worker

+ + : Input + :: |registration|, a [=/service worker registration=] + : Output + :: |oldestWorker|, a [=/service worker=] + + 1. Run the following steps atomically. + 1. Let |oldestWorker| be null. + 1. If |registration|'s active worker is not null, set |oldestWorker| to |registration|'s active worker. + 1. Else if |registration|'s waiting worker is not null, set |oldestWorker| to |registration|'s waiting worker. + 1. Else if |registration|'s installing worker is not null, set |oldestWorker| to |registration|'s installing worker. + 1. Return |oldestWorker|. +
+

Service Worker Has No Pending Events

@@ -3649,7 +3758,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 An HTTP response to a [=/service worker=]'s script resource request can include the following header: : \`Service-Worker-Allowed\` - :: Indicates the user agent will override the path restriction, which limits the maximum allowed [=service worker registration/scope url=] that the script can control, to the given value. + :: Indicates the user agent will override the path restriction, which limits the maximum allowed [=service worker/scope url=] that the script can control, to the given value. Note: The value is a URL. If a relative URL is given, it is parsed against the script's URL. From b693bf0ecbc67c13fe6a9e7e3229284041b772ab Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Fri, 14 Jan 2022 14:48:06 -0500 Subject: [PATCH 2/9] Apply suggestions from code review Co-authored-by: Jake Archibald --- docs/index.bs | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/docs/index.bs b/docs/index.bs index 72e84ee0..33bd45a7 100644 --- a/docs/index.bs +++ b/docs/index.bs @@ -254,7 +254,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 A [=/service worker registration=] has an associated navigation preload header value, which is a [=byte sequence=]. It is initially set to \`true\`. - A [=/service worker registration=] is said to be unregistered if [=registration map=][(|origin|,|id|)] is not this [=/service worker registration=], where |origin| and |id| are this [=service worker registration=]'s [=service worker registration/origin=] and [=service worker registration/id=] respectively. + A [=/service worker registration=] |registration| is said to be unregistered if [=registration map=][(|registration|'s [=service worker registration/origin=], |registration|'s [=service worker registration/id=])] is not |registration|.

Lifetime

@@ -775,7 +775,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Let |client| be [=this=]'s [=ServiceWorkerContainer/service worker client=]. 1. Let |scriptURL| be the result of parsing |scriptURL| with [=this=]'s relevant settings object's API base URL. 1. Let |scopeURL| be null. - 1. If |options|["{{RegistrationOptions/scope}}"] is present, set |scopeURL| to the result of parsing |options|["{{RegistrationOptions/scope}}"] with the [=this=]'s relevant settings object's API base URL. + 1. If |options|["{{RegistrationOptions/scope}}"] [=map/exists=], set |scopeURL| to the result of [=URL parser|parsing=] |options|["{{RegistrationOptions/scope}}"] with [=this=]'s [=relevant settings object=]'s [=API base URL=]. 1. Let |id| be null. 1. If |options|.{{RegistrationOptions/id} is present, set |id| to |options|["{{RegistrationOptions/id}}"]. 1. Invoke [=Start Register=] with |id|, |scopeURL|, |scriptURL|, |p|, |client|, |client|'s creation URL, |options|["{{RegistrationOptions/type}}"], and |options|["{{RegistrationOptions/updateViaCache}}"]. @@ -806,9 +806,9 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 getRegistrationById(|id|) method steps are: 1. Let |origin| be [=current settings object=]'s [=environment settings object/origin=]. - 1. Let |promise| be a new promise. - 1. Run the following substeps in parallel - 1. Let |registration| be the result of running the [=GetRegistration=] algorithm passing |origin| and |id| as the arguments. + 1. Let |promise| be [=a new promise=]. + 1. Run the following substeps [=in parallel=]. + 1. Let |registration| be the result of running the [=Get Registration=] algorithm passing |origin| and |id| as the arguments. 1. If |registration| is null, resolve |promise| with undefined and abort these steps. 1. Resolve |promise| with the result of [=getting the service worker registration object=] that represents |registration| in |promise|'s [=relevant settings object=]. 1. Return |promise|. @@ -2420,9 +2420,9 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231
A job has a job type, which is one of *register*, *update*, and *unregister*. - A job has an origin. + A job has an origin (an [=/origin=]). - A job has an id. + A job has an id (a string). A job has a scope url (a [=/URL=]). @@ -2618,7 +2618,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. If |scopeURL|'s [=url/scheme=] is not one of "http" and "https", reject |promise| with a TypeError and abort these steps. 1. If any of the strings in |scopeURL|'s [=url/path=] contains either ASCII case-insensitive "%2f" or ASCII case-insensitive "%5c", reject |promise| with a TypeError and abort these steps. 1. If |id| is null, set |id| to |scopeURL|. - 1. Let |job| be the result of running [=Create Job=] with *register*, |client|' [=service worker client/origin=], |id|, |scopeURL|, |scriptURL|, |promise|, and |client|. + 1. Let |job| be the result of running [=Create Job=] with *register*, |client|'s [=service worker client/origin=], |id|, |scopeURL|, |scriptURL|, |promise|, and |client|. 1. Set |job|'s [=job/worker type=] to |workerType|. 1. Set |job|'s [=job/update via cache mode=] to |updateViaCache|. 1. Set |job|'s [=job/referrer=] to |referrer|. @@ -3437,7 +3437,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Run the following steps atomically. 1. Let |clientURLString| be serialized |clientURL|. 1. Let |matchingScopeString| be the empty string. - 1. Let |scopeMap| be the empty map. + 1. Let |scopeMap| be a new [=/ordered map=]. 1. [=map/For each=] |key| → |value| of registration map: 1. Let |activeWorker| be |value|'s [=service worker registration/active worker=], 1. If |activeWorker| is null, then [=continue=]. @@ -3476,13 +3476,12 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 :: A [=/service worker registration=] or null. 1. Run the following steps atomically. - 1. [=map/For each=] |key| → |value| of registration map: - 1. If |value|'s active worker's [=service worker/scope url=] [=url/equals=] |scope|, then return |value|. - 1. If |value|'s waiting worker's [=service worker/scope url=] [=url/equals=] |scope|, then return |value|. - 1. If |value|'s installing worker's [=service worker/scope url=] [=url/equals=] |scope|, then return |value|. + 1. [=map/For each=] |key| → |registration| of [=registration map=]: + 1. [=list/For each=] |serviceWorker| of |registration|'s « [=active worker=], [=waiting worker=], [=installing worker=] »: + 1. If |serviceWorker| is not null and |serviceWorker|'s [=service worker/scope url=] [=url/equals=] |scope|, then return |value|. 1. Return null. - Note: Only one registration should be associated with a given scope at a time since we fail Register when there is a conflicting registration with the same scope. + Note: Only one registration should be associated with a given scope at a time since we fail [=Register=] when there is a conflicting registration with the same scope.
@@ -3509,12 +3508,12 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 : Output :: |oldestWorker|, a [=/service worker=] - 1. Run the following steps atomically. - 1. Let |oldestWorker| be null. - 1. If |registration|'s active worker is not null, set |oldestWorker| to |registration|'s active worker. - 1. Else if |registration|'s waiting worker is not null, set |oldestWorker| to |registration|'s waiting worker. - 1. Else if |registration|'s installing worker is not null, set |oldestWorker| to |registration|'s installing worker. - 1. Return |oldestWorker|. + 1. Return the first of the following that is not null: + 1. |registration|'s [=active worker=]. + 1. |registration|'s [=waiting worker=]. + 1. |registration|'s [=installing worker=]. + + Otherwise, return null.
From 336b11cae2946872bddb0fa221eefed17cda5388 Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Fri, 14 Jan 2022 22:05:32 +0000 Subject: [PATCH 3/9] Remove unnecessary steps from unregister(). --- docs/.index.bs.swp | Bin 0 -> 307200 bytes docs/index.bs | 2 -- 2 files changed, 2 deletions(-) create mode 100644 docs/.index.bs.swp diff --git a/docs/.index.bs.swp b/docs/.index.bs.swp new file mode 100644 index 0000000000000000000000000000000000000000..169b0d7127d10c88132314755ad3302e879f4f8e GIT binary patch literal 307200 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

~y*AMot@8cemKoRdFSTw-#j1C{$MC?gZ? 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 method steps are: 1. Let |promise| be [=a new promise=]. - 1. Let |newestWorker| be the result of running Get Newest Worker algorithm passing |registration| as its argument. - 1. If |newestWorker| is null, return [=a promise rejected with=] an "{{InvalidStateError}}" {{DOMException}} and abort these steps. 1. Let |job| be the result of running [=Create Job=] with *unregister*, the [=service worker registration/origin=], [=service worker registration/id=] of the [=ServiceWorkerRegistration/service worker registration=], null, null, |promise|, and [=this=]'s relevant settings object. 1. Invoke Schedule Job with |job|. 1. Return |promise|. From 9a0fee9e068e4b96e0d645461f14d5de39937b55 Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Fri, 14 Jan 2022 22:19:10 +0000 Subject: [PATCH 4/9] Use this's relevant settings object instead of current settings object. --- docs/.index.bs.swp | Bin 307200 -> 0 bytes docs/index.bs | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 docs/.index.bs.swp diff --git a/docs/.index.bs.swp b/docs/.index.bs.swp deleted file mode 100644 index 169b0d7127d10c88132314755ad3302e879f4f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307200 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

~y*AMot@8cemKoRdFSTw-#j1C{$MC?gZ? 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 method steps are: - 1. Let |origin| be [=current settings object=]'s [=environment settings object/origin=]. + 1. Let |origin| be |this|'s [=relevant settings object=]'s [=environment settings object/origin=]. 1. Let |promise| be [=a new promise=]. 1. Run the following substeps [=in parallel=]. 1. Let |registration| be the result of running the [=Get Registration=] algorithm passing |origin| and |id| as the arguments. From 7c657803318231c364abe6b1d0c0e3475c48e780 Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Fri, 14 Jan 2022 22:24:07 +0000 Subject: [PATCH 5/9] Move scopeURL variable declaration. --- docs/index.bs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/index.bs b/docs/index.bs index 3124cb3e..a0aefb8c 100644 --- a/docs/index.bs +++ b/docs/index.bs @@ -2717,12 +2717,13 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Asynchronously complete these steps with a network error. 1. Let |origin| be |registration|'s [=service worker registration/origin=]. 1. Let |id| be |registration|'s [=service worker registration/id=]. + 1. Let |scopeURL| be null. 1. If |job|'s [=job/scope url=] is null, then: 1. Assert: |job|'s [=job/job type=] is *update*. - 1. Let |scopeURL| be |newest worker|'s [=service worker/scope url=]. + 1. Set |scopeURL| to |newest worker|'s [=service worker/scope url=]. 1. Else: 1. Assert: |job|'s [=job/job type=] is *register*. - 1. Let |scopeURL| be |job|'s [=job/scope url=]. + 1. Set |scopeURL| to |job|'s [=job/scope url=]. 1. Let |maxScopeString| be null. 1. If |serviceWorkerAllowed| is null, then: 1. Let |resolvedScope| be the result of [=URL parser|parsing=] "`./`" using |job|'s [=job/script url=] as the [=base URL=]. From b11f88ed55168e1afa72a3e6c8571a36ae6d4874 Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Thu, 20 Jan 2022 16:17:57 +0000 Subject: [PATCH 6/9] simplify Get Registration algorithm --- docs/index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.bs b/docs/index.bs index a0aefb8c..34f8ef53 100644 --- a/docs/index.bs +++ b/docs/index.bs @@ -3463,7 +3463,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 :: A [=/service worker registration=] or null. 1. Run the following steps atomically. - 1. [=map/Get=] (|origin|,|id|) from [=registration map=] and return the result. + 1. Return [=registration map=][(|origin|,|id|)].

From 5e057c6e789af5013bcd12aee85a47d27e15295b Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Thu, 20 Jan 2022 16:38:21 +0000 Subject: [PATCH 7/9] note that scope and script can be null in jobs --- docs/index.bs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/index.bs b/docs/index.bs index 34f8ef53..c0cce5b9 100644 --- a/docs/index.bs +++ b/docs/index.bs @@ -2422,9 +2422,9 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 A job has an id (a string). - A job has a scope url (a [=/URL=]). + A job has a scope url (a [=/URL=]) or null. - A job has a script url (a [=/URL=]). + A job has a script url (a [=/URL=]) or null. A job has a worker type ("classic" or "module"). @@ -2469,8 +2469,8 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 :: |jobType|, a job type :: |origin|, an [=environment settings object/origin=] :: |id|, an [=service worker registration/id=] - :: |scopeURL|, a [=/URL=] - :: |scriptURL|, a [=/URL=] + :: |scopeURL|, a [=/URL=] or null + :: |scriptURL|, a [=/URL=] or null :: |promise|, a promise :: |client|, a [=/service worker client=] : Output From 6b92a44aee698d156fe61afa686e2849ffe10c35 Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Thu, 20 Jan 2022 17:04:49 +0000 Subject: [PATCH 8/9] add 'last relevant scope' to registration --- docs/index.bs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/index.bs b/docs/index.bs index c0cce5b9..c7fe7182 100644 --- a/docs/index.bs +++ b/docs/index.bs @@ -234,6 +234,8 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 A [=/service worker registration=] has an associated id, a [=string=]. + A [=/service worker registration=] has an associated last relevant scope, a USVString. While individual [=service worker=] instances may have different [=service worker/scope=] values, the [=service worker registration/last relevant scope=] contains the [=service worker/scope=] value last seen on the [=Get Oldest Worker|oldest worker=] associated with the registration. In most cases this will be the scope of the last active [=service worker=] instance. + A [=/service worker registration=] has an associated installing worker (a [=/service worker=] or null) whose [=service worker/state=] is "`installing`". It is initially set to null. A [=/service worker registration=] has an associated waiting worker (a [=/service worker=] or null) whose [=service worker/state=] is "`installed`". It is initially set to null. @@ -607,12 +609,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231

{{ServiceWorkerRegistration/scope}}

- The scope getter steps are: - - 1, Let |oldestWorker| be the result of running [=Get Oldest Worker=] passing |registration| as the argument. - 1. If |oldestWorker| is null, then: - 1. Return null. - 1. Return |oldestWorker|'s [=service worker/scope url=]. + The scope getter steps are to return the [=ServiceWorkerRegistration/service worker registration=]'s [=service worker registration/last relevant scope=].
In the example in [[#service-worker-url]], the value of registration.scope, obtained from navigator.serviceWorker.ready.then(registration => console.log(registration.scope)) for example, will be "https://example.com/". @@ -2654,7 +2651,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Invoke [=Reject Job Promise=] with |job| and "{{InvalidStateError}}" {{DOMException}}. 1. Invoke Finish Job with |job| and abort these steps. 1. Else: - 1. Invoke Set Registration algorithm with |job|'s [=job/origin=], |job|'s [=job/id=], and |job|'s [=job/update via cache mode=]. + 1. Invoke Set Registration algorithm with |job|'s [=job/origin=], |job|'s [=job/id=], |job|'s [=job/scope url=], and |job|'s [=job/update via cache mode=]. 1. Invoke Update algorithm passing |job| as the argument.
@@ -3313,13 +3310,14 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 : Input :: |origin|, an [=environment settings object/origin=] :: |id|, an [=service worker registration/id=] + :: |scope|, a USVString :: |updateViaCache|, an [=service worker registration/update via cache mode=] : Output :: |registration|, a [=/service worker registration=] 1. Run the following steps atomically. 1. Let |scopeString| be [=URL serializer|serialized=] |scope| with the *exclude fragment flag* set. - 1. Let |registration| be a new [=/service worker registration=] whose [=service worker registration/origin=] is set to |origin|, [=service worker registration/id=] is set to |id|, and [=service worker registration/update via cache mode=] is set to |updateViaCache|. + 1. Let |registration| be a new [=/service worker registration=] whose [=service worker registration/origin=] is set to |origin|, [=service worker registration/id=] is set to |id|, [=service worker registration/last relevant scope=] is set to |scope|, and [=service worker registration/update via cache mode=] is set to |updateViaCache|. 1. [=map/Set=] registration map[|id|] to |registration|. 1. Return |registration|.
@@ -3384,6 +3382,8 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231 1. Set |registration|'s [=service worker registration/active worker=] to |source|. 1. For each |registrationObject| in |registrationObjects|: 1. [=Queue a task=] to set the {{ServiceWorkerRegistration/active}} attribute of |registrationObject| to null if |registration|’s [=active worker=] is null, or the result of [=getting the service worker object=] that represents |registration|’s [=active worker=] in |registrationObject|'s [=relevant settings object=]. + 1. Let |oldestWorker| be the result of running [=Get Oldest Worker=] given |registration|. + 1. If |oldestWorker| is not null, then set |registration|'s [=last relevant scope=] to |oldestWorker|'s [=service worker/scope=]. The [=task=] *must* use |registrationObject|'s [=relevant settings object=]'s [=responsible event loop=] and the [=DOM manipulation task source=].
From f73f5fdcad398154208883cf3e6cf6b2a8b7ec79 Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Fri, 21 Jan 2022 21:50:05 +0000 Subject: [PATCH 9/9] expose ServiceWorker.scope --- docs/index.bs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/index.bs b/docs/index.bs index c7fe7182..29070986 100644 --- a/docs/index.bs +++ b/docs/index.bs @@ -384,6 +384,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231
       [SecureContext, Exposed=(Window,Worker)]
       interface ServiceWorker : EventTarget {
+        readonly attribute USVString scope;
         readonly attribute USVString scriptURL;
         readonly attribute ServiceWorkerState state;
         undefined postMessage(any message, sequence<object> transfer);
@@ -425,6 +426,12 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231
       
     
 
+    
+

{{ServiceWorker/scope}}

+ + The scope getter steps are to return the [=/service worker=]'s serialized [=service worker/scope url=]. +
+

{{ServiceWorker/scriptURL}}

@@ -609,7 +616,7 @@ spec: rfc7231; urlPrefix: https://tools.ietf.org/html/rfc7231

{{ServiceWorkerRegistration/scope}}

- The scope getter steps are to return the [=ServiceWorkerRegistration/service worker registration=]'s [=service worker registration/last relevant scope=]. + The scope getter steps are to return the [=ServiceWorkerRegistration/service worker registration=]'s serialized [=service worker registration/last relevant scope=].
In the example in [[#service-worker-url]], the value of registration.scope, obtained from navigator.serviceWorker.ready.then(registration => console.log(registration.scope)) for example, will be "https://example.com/".