Index: content/browser/service_worker/service_worker_context_request_handler.cc |
diff --git a/content/browser/service_worker/service_worker_context_request_handler.cc b/content/browser/service_worker/service_worker_context_request_handler.cc |
index bf360b9fbc97f5adae4c1476e8d5ee5e9746dedb..b728436ba403511e6bcd0acbf9b25d4a109072fd 100644 |
--- a/content/browser/service_worker/service_worker_context_request_handler.cc |
+++ b/content/browser/service_worker/service_worker_context_request_handler.cc |
@@ -73,13 +73,17 @@ net::URLRequestJob* ServiceWorkerContextRequestHandler::MaybeCreateJob( |
extra_load_flags = net::LOAD_BYPASS_CACHE; |
} |
- return new ServiceWorkerWriteToCacheJob(request, |
- network_delegate, |
- resource_type_, |
- context_, |
- version_.get(), |
- extra_load_flags, |
- response_id); |
+ ServiceWorkerVersion* stored_version = registration->waiting_version() |
+ ? registration->waiting_version() |
+ : registration->active_version(); |
+ int64 incumbent_response_id = kInvalidServiceWorkerResourceId; |
+ if (stored_version && stored_version->script_url() == request->url()) { |
+ incumbent_response_id = |
+ stored_version->script_cache_map()->LookupResourceId(request->url()); |
+ } |
+ return new ServiceWorkerWriteToCacheJob( |
+ request, network_delegate, resource_type_, context_, version_.get(), |
+ extra_load_flags, response_id, incumbent_response_id); |
} |
int64 response_id = kInvalidServiceWorkerResponseId; |