- From: Shunya Shishido <notifications@github.com>
- Date: Mon, 07 Jul 2025 01:48:21 -0700
- To: w3c/ServiceWorker <ServiceWorker@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/ServiceWorker/pull/1756/review/2992782367@github.com>
@sisidovski commented on this pull request.
Thanks!
> + 1. Let |preloadResponseObject| be a new {{Response}} object associated with a new {{Headers}} object whose [=guard=] is "`immutable`".
+ 1. [=header list/Append=] to |preloadRequestHeaders| a new [=header=] whose [=header/name=] is \`<code>Service-Worker-Navigation-Preload</code>\` and [=header/value=] is |registration|'s [=navigation preload header value=].
+ 1. Set |preloadRequest|'s [=service-workers mode=] to "`none`".
+ 1. Let |preloadFetchController| be null.
+ 1. Run the following substeps [=in parallel=], but [=abort when=] |fetchController|'s [=fetch controller/state=] is "<code>terminated</code>" or "<code>aborted</code>":
+ 1. Set |preloadFetchController| to the result of [=Fetch|fetching=] |preloadRequest|.
+
+ To [=fetch/processResponse=] for |navigationPreloadResponse|, run these substeps:
+
+ 1. If |navigationPreloadResponse|'s [=response/type=] is "`error`", reject |preloadResponse| with a `TypeError` and terminate these substeps.
+ 1. Associate |preloadResponseObject| with |navigationPreloadResponse|.
+ 1. Resolve |preloadResponse| with |preloadResponseObject|.
+ 1. [=If aborted=], then:
+ 1. Let |deserializedError| be the result of [=deserialize a serialized abort reason=] given null and |workerRealm|.
+ 1. [=fetch controller/Abort=] |preloadFetchController| with |deserializedError|.
+ 1. Else if |timingInfo|'s [=service worker timing info/worker matched router source=] is not "{{RouterSourceEnum/fetch-event}}", a user agent may run the following substeps:
Thank you! That sounds reasonable. Added `Assert: [=service worker timing info/worker matched router source=] is null.`.
> + 1. Set |preloadRequest|'s [=service-workers mode=] to "`none`".
+ 1. Let |preloadFetchController| be null.
+ 1. Run the following substeps [=in parallel=], but [=abort when=] |fetchController|'s [=fetch controller/state=] is "<code>terminated</code>" or "<code>aborted</code>":
+ 1. Set |preloadFetchController| to the result of [=Fetch|fetching=] |preloadRequest|.
+
+ To [=fetch/processResponse=] for |navigationPreloadResponse|, run these substeps:
+
+ 1. If |navigationPreloadResponse|'s [=response/type=] is "`error`", reject |preloadResponse| with a `TypeError` and terminate these substeps.
+ 1. Associate |preloadResponseObject| with |navigationPreloadResponse|.
+ 1. Resolve |preloadResponse| with |preloadResponseObject|.
+ 1. [=If aborted=], then:
+ 1. Let |deserializedError| be the result of [=deserialize a serialized abort reason=] given null and |workerRealm|.
+ 1. [=fetch controller/Abort=] |preloadFetchController| with |deserializedError|.
+ 1. Else if |timingInfo|'s [=service worker timing info/worker matched router source=] is not "{{RouterSourceEnum/fetch-event}}", a user agent may run the following substeps:
+
+ Note: A user agent may speculatively dispatch a network request in parallel with creating a fetch event in order to minimize the bootstrap cost.
Yes. Let's keep it as is for now.
Just to note: we're happy with rephrasing it with SHOULD.
--
Reply to this email directly or view it on GitHub:
https://github.com/w3c/ServiceWorker/pull/1756#pullrequestreview-2992782367
You are receiving this because you are subscribed to this thread.
Message ID: <w3c/ServiceWorker/pull/1756/review/2992782367@github.com>
Received on Monday, 7 July 2025 08:48:25 UTC