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 4b3535aa5b9eaa18502b95b6ddf4e927b381a90a..b42ae219d75ecfd1feb5f604630d55126ecc14a1 100644 |
--- a/content/browser/service_worker/service_worker_context_request_handler.cc |
+++ b/content/browser/service_worker/service_worker_context_request_handler.cc |
@@ -21,6 +21,18 @@ |
namespace content { |
+namespace { |
+bool ShouldBypassCache(bool is_main_script, |
+ blink::WebServiceWorkerUpdateViaCache cache_mode) { |
+ if (is_main_script && |
+ cache_mode != blink::WebServiceWorkerUpdateViaCache::kAll) |
+ return true; |
+ if (cache_mode == blink::WebServiceWorkerUpdateViaCache::kNone) |
+ return true; |
+ return false; |
+} |
+} // namespace |
+ |
ServiceWorkerContextRequestHandler::ServiceWorkerContextRequestHandler( |
base::WeakPtr<ServiceWorkerContextCore> context, |
base::WeakPtr<ServiceWorkerProviderHost> provider_host, |
@@ -191,7 +203,9 @@ net::URLRequestJob* ServiceWorkerContextRequestHandler::MaybeCreateJobImpl( |
int extra_load_flags = 0; |
base::TimeDelta time_since_last_check = |
base::Time::Now() - registration->last_update_check(); |
- if (time_since_last_check > kServiceWorkerScriptMaxCacheAge || |
+ |
+ if (ShouldBypassCache(is_main_script, registration->update_via_cache()) || |
+ time_since_last_check > kServiceWorkerScriptMaxCacheAge || |
version_->force_bypass_cache_for_scripts()) { |
extra_load_flags = net::LOAD_BYPASS_CACHE; |
} |