Chromium Code Reviews| Index: content/browser/service_worker/link_header_support.cc |
| diff --git a/content/browser/service_worker/link_header_support.cc b/content/browser/service_worker/link_header_support.cc |
| index 32ce5777969044119357c0eb381863847c7686c7..d8f11bceb63186f31d22fce170617b1fd2fe0d64 100644 |
| --- a/content/browser/service_worker/link_header_support.cc |
| +++ b/content/browser/service_worker/link_header_support.cc |
| @@ -33,6 +33,22 @@ void RegisterServiceWorkerFinished(int64_t trace_id, bool result) { |
| trace_id, "Success", result); |
| } |
| +blink::WebServiceWorkerUpdateViaCache ParseUpdateViaCache( |
|
nhiroki
2017/06/21 15:04:58
Can you add a link to https://html.spec.whatwg.org
yuryu
2017/07/20 10:15:12
Done.
|
| + const std::unordered_map<std::string, base::Optional<std::string>>& |
| + params) { |
| + auto cache_param = params.find("updateviacache"); |
| + if (cache_param == params.end()) |
| + return blink::WebServiceWorkerUpdateViaCache::kImports; |
| + const std::string& cache = cache_param->second.value_or(""); |
| + if (base::EqualsCaseInsensitiveASCII(cache, "imports")) |
| + return blink::WebServiceWorkerUpdateViaCache::kImports; |
| + if (base::EqualsCaseInsensitiveASCII(cache, "never")) |
|
nhiroki
2017/06/21 15:04:58
never -> none?
https://w3c.github.io/ServiceWorker
yuryu
2017/07/20 10:15:12
Done.
|
| + return blink::WebServiceWorkerUpdateViaCache::kNone; |
| + if (base::EqualsCaseInsensitiveASCII(cache, "all")) |
| + return blink::WebServiceWorkerUpdateViaCache::kAll; |
| + return blink::WebServiceWorkerUpdateViaCache::kUnknown; |
| +} |
| + |
| void HandleServiceWorkerLink( |
| net::URLRequest* request, |
| const std::string& url, |
| @@ -95,6 +111,11 @@ void HandleServiceWorkerLink( |
| GURL scope_url = scope_param == params.end() |
| ? script_url.Resolve("./") |
| : context_url.Resolve(scope_param->second.value_or("")); |
| + blink::WebServiceWorkerUpdateViaCache update_via_cache = |
| + ParseUpdateViaCache(params); |
| + if (update_via_cache == blink::WebServiceWorkerUpdateViaCache::kUnknown) { |
| + return; |
| + } |
| if (!context_url.is_valid() || !script_url.is_valid() || |
| !scope_url.is_valid()) |
| @@ -119,7 +140,7 @@ void HandleServiceWorkerLink( |
| "ServiceWorker", "LinkHeaderResourceThrottle::HandleServiceWorkerLink", |
| ++trace_id, "Pattern", scope_url.spec(), "Script URL", script_url.spec()); |
| service_worker_context->RegisterServiceWorker( |
| - scope_url, script_url, |
| + scope_url, script_url, update_via_cache, |
| base::Bind(&RegisterServiceWorkerFinished, trace_id)); |
| } |