Chromium Code Reviews| Index: Source/modules/serviceworkers/ServiceWorkerRegistration.cpp |
| diff --git a/Source/modules/serviceworkers/ServiceWorkerRegistration.cpp b/Source/modules/serviceworkers/ServiceWorkerRegistration.cpp |
| index 6675a7cf4192f6e98f672c846e24f22791b1909a..c7a54dc2755760ac48936264f1e667670abb6624 100644 |
| --- a/Source/modules/serviceworkers/ServiceWorkerRegistration.cpp |
| +++ b/Source/modules/serviceworkers/ServiceWorkerRegistration.cpp |
| @@ -12,6 +12,7 @@ |
| #include "core/dom/DOMException.h" |
| #include "core/dom/ExceptionCode.h" |
| #include "core/dom/ExecutionContext.h" |
| +#include "core/events/Event.h" |
| #include "modules/EventTargetModules.h" |
| #include "modules/serviceworkers/ServiceWorkerContainerClient.h" |
| #include "modules/serviceworkers/ServiceWorkerError.h" |
| @@ -40,11 +41,49 @@ private: |
| UndefinedValue(); |
| }; |
| +static void deleteIfNoExistingOwner(blink::WebServiceWorker* serviceWorker) |
|
tkent
2014/08/11 01:31:32
Remove blink::
nhiroki
2014/08/11 02:26:06
Done.
|
| +{ |
| + if (serviceWorker && !serviceWorker->proxy()) |
| + delete serviceWorker; |
| +} |
| + |
| const AtomicString& ServiceWorkerRegistration::interfaceName() const |
| { |
| return EventTargetNames::ServiceWorkerRegistration; |
| } |
| +void ServiceWorkerRegistration::dispatchUpdateFoundEvent() |
| +{ |
| + dispatchEvent(Event::create(EventTypeNames::updatefound)); |
| +} |
| + |
| +void ServiceWorkerRegistration::setInstalling(WebServiceWorker* serviceWorker) |
| +{ |
| + if (!executionContext()) { |
| + deleteIfNoExistingOwner(serviceWorker); |
| + return; |
| + } |
| + m_installing = ServiceWorker::from(executionContext(), serviceWorker); |
| +} |
| + |
| +void ServiceWorkerRegistration::setWaiting(WebServiceWorker* serviceWorker) |
| +{ |
| + if (!executionContext()) { |
| + deleteIfNoExistingOwner(serviceWorker); |
| + return; |
| + } |
| + m_waiting = ServiceWorker::from(executionContext(), serviceWorker); |
| +} |
| + |
| +void ServiceWorkerRegistration::setActive(WebServiceWorker* serviceWorker) |
| +{ |
| + if (!executionContext()) { |
| + deleteIfNoExistingOwner(serviceWorker); |
| + return; |
| + } |
| + m_active = ServiceWorker::from(executionContext(), serviceWorker); |
| +} |
| + |
| PassRefPtrWillBeRawPtr<ServiceWorkerRegistration> ServiceWorkerRegistration::take(ScriptPromiseResolver* resolver, WebType* registration) |
| { |
| if (!registration) |
| @@ -52,6 +91,11 @@ PassRefPtrWillBeRawPtr<ServiceWorkerRegistration> ServiceWorkerRegistration::tak |
| return create(resolver->scriptState()->executionContext(), adoptPtr(registration)); |
| } |
| +void ServiceWorkerRegistration::dispose(WebType* registration) |
| +{ |
| + delete registration; |
| +} |
| + |
| String ServiceWorkerRegistration::scope() const |
| { |
| return m_outerRegistration->scope().string(); |
| @@ -98,6 +142,7 @@ ServiceWorkerRegistration::ServiceWorkerRegistration(ExecutionContext* execution |
| return; |
| if (ServiceWorkerContainerClient* client = ServiceWorkerContainerClient::from(executionContext)) |
| m_provider = client->provider(); |
| + m_outerRegistration->setProxy(this); |
| } |
| } // namespace blink |