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 77a82de84346149dd8e02194c33410b7140a8db7..f462d42b812be9bda60330ccc31e5879cc198488 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,11 @@ 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 dispached a navigation prelaod |
falken
2017/01/18 14:24:58
nit: dispatched
horo
2017/01/18 16:14:57
Done.
|
+ // request to keep the mojom::URLLoader related objects in it. |
falken
2017/01/18 14:24:58
Ah, I see... can you add something to the comment
horo
2017/01/18 16:14:57
Yes.
Done.
|
+ if (!did_navigation_preload_) { |
+ fetch_dispatcher_.reset(); |
+ } |
ServiceWorkerMetrics::RecordFetchEventStatus(IsMainResourceLoad(), status); |
ServiceWorkerMetrics::URLRequestJobResult result = |
@@ -879,7 +883,8 @@ void ServiceWorkerURLRequestJob::RequestBodyFileSizesResolved(bool success) { |
base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, |
weak_factory_.GetWeakPtr()))); |
worker_start_time_ = base::TimeTicks::Now(); |
- fetch_dispatcher_->MaybeStartNavigationPreload(request()); |
+ did_navigation_preload_ = |
+ fetch_dispatcher_->MaybeStartNavigationPreload(request()); |
fetch_dispatcher_->Run(); |
} |