| Index: content/browser/service_worker/service_worker_url_request_job.cc
|
| diff --git a/content/browser/service_worker/service_worker_url_request_job.cc b/content/browser/service_worker/service_worker_url_request_job.cc
|
| index 62325d45afcad222a5e754272585a8669ae67a78..f69a0ac376a99a62458a61cead649368117f6733 100644
|
| --- a/content/browser/service_worker/service_worker_url_request_job.cc
|
| +++ b/content/browser/service_worker/service_worker_url_request_job.cc
|
| @@ -565,7 +565,13 @@ void ServiceWorkerURLRequestJob::DidDispatchFetchEvent(
|
| ServiceWorkerFetchEventResult fetch_result,
|
| const ServiceWorkerResponse& response,
|
| const scoped_refptr<ServiceWorkerVersion>& version) {
|
| - fetch_dispatcher_.reset();
|
| + // Do not clear |fetch_dispatcher_| if it has dispatched a navigation preload
|
| + // request to keep the mojom::URLLoader related objects in it, because the
|
| + // preload response might still need to be streamed even after calling
|
| + // respondWith().
|
| + if (!did_navigation_preload_) {
|
| + fetch_dispatcher_.reset();
|
| + }
|
| ServiceWorkerMetrics::RecordFetchEventStatus(IsMainResourceLoad(), status);
|
|
|
| ServiceWorkerMetrics::URLRequestJobResult result =
|
|
|