Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Side by Side Diff: third_party/WebKit/Source/modules/serviceworkers/ServiceWorkerContainer.cpp

Issue 2771823002: Implement updateViaCache flag and no-cache by default for main service worker scripts
Patch Set: fix tests Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 visitor->trace(m_ready); 148 visitor->trace(m_ready);
149 visitor->trace(m_navigator); 149 visitor->trace(m_navigator);
150 EventTargetWithInlineData::trace(visitor); 150 EventTargetWithInlineData::trace(visitor);
151 ContextLifecycleObserver::trace(visitor); 151 ContextLifecycleObserver::trace(visitor);
152 } 152 }
153 153
154 void ServiceWorkerContainer::registerServiceWorkerImpl( 154 void ServiceWorkerContainer::registerServiceWorkerImpl(
155 ExecutionContext* executionContext, 155 ExecutionContext* executionContext,
156 const KURL& rawScriptURL, 156 const KURL& rawScriptURL,
157 const KURL& scope, 157 const KURL& scope,
158 bool useCache,
158 std::unique_ptr<RegistrationCallbacks> callbacks) { 159 std::unique_ptr<RegistrationCallbacks> callbacks) {
159 if (!m_provider) { 160 if (!m_provider) {
160 callbacks->onError( 161 callbacks->onError(
161 WebServiceWorkerError(WebServiceWorkerError::ErrorTypeState, 162 WebServiceWorkerError(WebServiceWorkerError::ErrorTypeState,
162 "Failed to register a ServiceWorker: The " 163 "Failed to register a ServiceWorker: The "
163 "document is in an invalid state.")); 164 "document is in an invalid state."));
164 return; 165 return;
165 } 166 }
166 167
167 RefPtr<SecurityOrigin> documentOrigin = executionContext->getSecurityOrigin(); 168 RefPtr<SecurityOrigin> documentOrigin = executionContext->getSecurityOrigin();
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 callbacks->onError(WebServiceWorkerError( 253 callbacks->onError(WebServiceWorkerError(
253 WebServiceWorkerError::ErrorTypeSecurity, 254 WebServiceWorkerError::ErrorTypeSecurity,
254 String( 255 String(
255 "Failed to register a ServiceWorker: The provided scriptURL ('" + 256 "Failed to register a ServiceWorker: The provided scriptURL ('" +
256 scriptURL.getString() + 257 scriptURL.getString() +
257 "') violates the Content Security Policy."))); 258 "') violates the Content Security Policy.")));
258 return; 259 return;
259 } 260 }
260 } 261 }
261 262
262 m_provider->registerServiceWorker(patternURL, scriptURL, 263 m_provider->registerServiceWorker(patternURL, scriptURL, useCache,
263 std::move(callbacks)); 264 std::move(callbacks));
264 } 265 }
265 266
266 ScriptPromise ServiceWorkerContainer::registerServiceWorker( 267 ScriptPromise ServiceWorkerContainer::registerServiceWorker(
267 ScriptState* scriptState, 268 ScriptState* scriptState,
268 const String& url, 269 const String& url,
269 const RegistrationOptions& options) { 270 const RegistrationOptions& options) {
270 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 271 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
271 ScriptPromise promise = resolver->promise(); 272 ScriptPromise promise = resolver->promise();
272 273
(...skipping 12 matching lines...) Expand all
285 286
286 KURL scriptURL = executionContext->completeURL(url); 287 KURL scriptURL = executionContext->completeURL(url);
287 scriptURL.removeFragmentIdentifier(); 288 scriptURL.removeFragmentIdentifier();
288 289
289 KURL patternURL; 290 KURL patternURL;
290 if (options.scope().isNull()) 291 if (options.scope().isNull())
291 patternURL = KURL(scriptURL, "./"); 292 patternURL = KURL(scriptURL, "./");
292 else 293 else
293 patternURL = executionContext->completeURL(options.scope()); 294 patternURL = executionContext->completeURL(options.scope());
294 295
296 bool useCache = options.useCache();
297
295 registerServiceWorkerImpl( 298 registerServiceWorkerImpl(
296 executionContext, scriptURL, patternURL, 299 executionContext, scriptURL, patternURL, useCache,
297 WTF::makeUnique<CallbackPromiseAdapter<ServiceWorkerRegistration, 300 WTF::makeUnique<CallbackPromiseAdapter<ServiceWorkerRegistration,
298 ServiceWorkerErrorForUpdate>>( 301 ServiceWorkerErrorForUpdate>>(
299 resolver)); 302 resolver));
300 303
301 return promise; 304 return promise;
302 } 305 }
303 306
304 ScriptPromise ServiceWorkerContainer::getRegistration( 307 ScriptPromise ServiceWorkerContainer::getRegistration(
305 ScriptState* scriptState, 308 ScriptState* scriptState,
306 const String& documentURL) { 309 const String& documentURL) {
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 486
484 if (ServiceWorkerContainerClient* client = 487 if (ServiceWorkerContainerClient* client =
485 ServiceWorkerContainerClient::from(executionContext)) { 488 ServiceWorkerContainerClient::from(executionContext)) {
486 m_provider = client->provider(); 489 m_provider = client->provider();
487 if (m_provider) 490 if (m_provider)
488 m_provider->setClient(this); 491 m_provider->setClient(this);
489 } 492 }
490 } 493 }
491 494
492 } // namespace blink 495 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698