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

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

Issue 2480293004: Mandate unique_ptr for base::IDMap in IDMapOwnPointer mode. (Closed)
Patch Set: Make changes requested by danakj, fix a few more headers Created 4 years 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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 #include "modules/serviceworkers/ServiceWorkerRegistration.h" 51 #include "modules/serviceworkers/ServiceWorkerRegistration.h"
52 #include "platform/RuntimeEnabledFeatures.h" 52 #include "platform/RuntimeEnabledFeatures.h"
53 #include "platform/weborigin/SchemeRegistry.h" 53 #include "platform/weborigin/SchemeRegistry.h"
54 #include "public/platform/WebString.h" 54 #include "public/platform/WebString.h"
55 #include "public/platform/WebURL.h" 55 #include "public/platform/WebURL.h"
56 #include "public/platform/modules/serviceworker/WebServiceWorker.h" 56 #include "public/platform/modules/serviceworker/WebServiceWorker.h"
57 #include "public/platform/modules/serviceworker/WebServiceWorkerProvider.h" 57 #include "public/platform/modules/serviceworker/WebServiceWorkerProvider.h"
58 #include "public/platform/modules/serviceworker/WebServiceWorkerRegistration.h" 58 #include "public/platform/modules/serviceworker/WebServiceWorkerRegistration.h"
59 #include "wtf/PtrUtil.h" 59 #include "wtf/PtrUtil.h"
60 #include <memory> 60 #include <memory>
61 #include <utility>
61 62
62 namespace blink { 63 namespace blink {
63 64
64 class RegistrationCallback 65 class RegistrationCallback
65 : public WebServiceWorkerProvider::WebServiceWorkerRegistrationCallbacks { 66 : public WebServiceWorkerProvider::WebServiceWorkerRegistrationCallbacks {
66 public: 67 public:
67 explicit RegistrationCallback(ScriptPromiseResolver* resolver) 68 explicit RegistrationCallback(ScriptPromiseResolver* resolver)
68 : m_resolver(resolver) {} 69 : m_resolver(resolver) {}
69 ~RegistrationCallback() override {} 70 ~RegistrationCallback() override {}
70 71
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 callbacks->onError(WebServiceWorkerError( 315 callbacks->onError(WebServiceWorkerError(
315 WebServiceWorkerError::ErrorTypeSecurity, 316 WebServiceWorkerError::ErrorTypeSecurity,
316 String( 317 String(
317 "Failed to register a ServiceWorker: The provided scriptURL ('" + 318 "Failed to register a ServiceWorker: The provided scriptURL ('" +
318 scriptURL.getString() + 319 scriptURL.getString() +
319 "') violates the Content Security Policy."))); 320 "') violates the Content Security Policy.")));
320 return; 321 return;
321 } 322 }
322 } 323 }
323 324
324 m_provider->registerServiceWorker(patternURL, scriptURL, callbacks.release()); 325 m_provider->registerServiceWorker(patternURL, scriptURL,
326 std::move(callbacks));
325 } 327 }
326 328
327 ScriptPromise ServiceWorkerContainer::registerServiceWorker( 329 ScriptPromise ServiceWorkerContainer::registerServiceWorker(
328 ScriptState* scriptState, 330 ScriptState* scriptState,
329 const String& url, 331 const String& url,
330 const RegistrationOptions& options) { 332 const RegistrationOptions& options) {
331 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 333 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
332 ScriptPromise promise = resolver->promise(); 334 ScriptPromise promise = resolver->promise();
333 335
334 if (!m_provider) { 336 if (!m_provider) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 SecurityOrigin::create(completedURL); 408 SecurityOrigin::create(completedURL);
407 resolver->reject( 409 resolver->reject(
408 DOMException::create(SecurityError, 410 DOMException::create(SecurityError,
409 "Failed to get a ServiceWorkerRegistration: The " 411 "Failed to get a ServiceWorkerRegistration: The "
410 "origin of the provided documentURL ('" + 412 "origin of the provided documentURL ('" +
411 documentURLOrigin->toString() + 413 documentURLOrigin->toString() +
412 "') does not match the current origin ('" + 414 "') does not match the current origin ('" +
413 documentOrigin->toString() + "').")); 415 documentOrigin->toString() + "')."));
414 return promise; 416 return promise;
415 } 417 }
416 m_provider->getRegistration(completedURL, 418 m_provider->getRegistration(
417 new GetRegistrationCallback(resolver)); 419 completedURL, WTF::makeUnique<GetRegistrationCallback>(resolver));
418 420
419 return promise; 421 return promise;
420 } 422 }
421 423
422 ScriptPromise ServiceWorkerContainer::getRegistrations( 424 ScriptPromise ServiceWorkerContainer::getRegistrations(
423 ScriptState* scriptState) { 425 ScriptState* scriptState) {
424 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 426 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
425 ScriptPromise promise = resolver->promise(); 427 ScriptPromise promise = resolver->promise();
426 428
427 if (!m_provider) { 429 if (!m_provider) {
(...skipping 16 matching lines...) Expand all
444 if (!SchemeRegistry::shouldTreatURLSchemeAsAllowingServiceWorkers( 446 if (!SchemeRegistry::shouldTreatURLSchemeAsAllowingServiceWorkers(
445 pageURL.protocol())) { 447 pageURL.protocol())) {
446 resolver->reject(DOMException::create( 448 resolver->reject(DOMException::create(
447 SecurityError, 449 SecurityError,
448 "Failed to get ServiceWorkerRegistration objects: The URL protocol of " 450 "Failed to get ServiceWorkerRegistration objects: The URL protocol of "
449 "the current origin ('" + 451 "the current origin ('" +
450 documentOrigin->toString() + "') is not supported.")); 452 documentOrigin->toString() + "') is not supported."));
451 return promise; 453 return promise;
452 } 454 }
453 455
454 m_provider->getRegistrations(new GetRegistrationsCallback(resolver)); 456 m_provider->getRegistrations(
457 WTF::makeUnique<GetRegistrationsCallback>(resolver));
455 458
456 return promise; 459 return promise;
457 } 460 }
458 461
459 ServiceWorkerContainer::ReadyProperty* 462 ServiceWorkerContainer::ReadyProperty*
460 ServiceWorkerContainer::createReadyProperty() { 463 ServiceWorkerContainer::createReadyProperty() {
461 return new ReadyProperty(getExecutionContext(), this, ReadyProperty::Ready); 464 return new ReadyProperty(getExecutionContext(), this, ReadyProperty::Ready);
462 } 465 }
463 466
464 ScriptPromise ServiceWorkerContainer::ready(ScriptState* callerState) { 467 ScriptPromise ServiceWorkerContainer::ready(ScriptState* callerState) {
465 if (!getExecutionContext()) 468 if (!getExecutionContext())
466 return ScriptPromise(); 469 return ScriptPromise();
467 470
468 if (!callerState->world().isMainWorld()) { 471 if (!callerState->world().isMainWorld()) {
469 // FIXME: Support .ready from isolated worlds when 472 // FIXME: Support .ready from isolated worlds when
470 // ScriptPromiseProperty can vend Promises in isolated worlds. 473 // ScriptPromiseProperty can vend Promises in isolated worlds.
471 return ScriptPromise::rejectWithDOMException( 474 return ScriptPromise::rejectWithDOMException(
472 callerState, 475 callerState,
473 DOMException::create(NotSupportedError, 476 DOMException::create(NotSupportedError,
474 "'ready' is only supported in pages.")); 477 "'ready' is only supported in pages."));
475 } 478 }
476 479
477 if (!m_ready) { 480 if (!m_ready) {
478 m_ready = createReadyProperty(); 481 m_ready = createReadyProperty();
479 if (m_provider) 482 if (m_provider) {
480 m_provider->getRegistrationForReady( 483 m_provider->getRegistrationForReady(
481 new GetRegistrationForReadyCallback(m_ready.get())); 484 WTF::makeUnique<GetRegistrationForReadyCallback>(m_ready.get()));
485 }
482 } 486 }
483 487
484 return m_ready->promise(callerState->world()); 488 return m_ready->promise(callerState->world());
485 } 489 }
486 490
487 void ServiceWorkerContainer::setController( 491 void ServiceWorkerContainer::setController(
488 std::unique_ptr<WebServiceWorker::Handle> handle, 492 std::unique_ptr<WebServiceWorker::Handle> handle,
489 bool shouldNotifyControllerChange) { 493 bool shouldNotifyControllerChange) {
490 if (!getExecutionContext()) 494 if (!getExecutionContext())
491 return; 495 return;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 531
528 if (ServiceWorkerContainerClient* client = 532 if (ServiceWorkerContainerClient* client =
529 ServiceWorkerContainerClient::from(executionContext)) { 533 ServiceWorkerContainerClient::from(executionContext)) {
530 m_provider = client->provider(); 534 m_provider = client->provider();
531 if (m_provider) 535 if (m_provider)
532 m_provider->setClient(this); 536 m_provider->setClient(this);
533 } 537 }
534 } 538 }
535 539
536 } // namespace blink 540 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698