Index: Source/modules/serviceworkers/ServiceWorkerContainer.cpp |
diff --git a/Source/modules/serviceworkers/ServiceWorkerContainer.cpp b/Source/modules/serviceworkers/ServiceWorkerContainer.cpp |
index 532feb2300418e63abe5c433324addc489d65058..fd56d84d22a656f9136c466411d523bb8e6d2e3d 100644 |
--- a/Source/modules/serviceworkers/ServiceWorkerContainer.cpp |
+++ b/Source/modules/serviceworkers/ServiceWorkerContainer.cpp |
@@ -64,11 +64,13 @@ public: |
: m_resolver(resolver) { } |
~RegistrationCallback() override { } |
- void onSuccess(WebServiceWorkerRegistration* registration) override |
+ // Takes ownership of |registrationRaw|. |
+ void onSuccess(WebServiceWorkerRegistration* registrationRaw) override |
{ |
+ OwnPtr<WebServiceWorkerRegistration> registration = adoptPtr(registrationRaw); |
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) |
return; |
- m_resolver->resolve(ServiceWorkerRegistration::take(m_resolver.get(), registration)); |
+ m_resolver->resolve(ServiceWorkerRegistration::create(m_resolver->executionContext(), registration.release())); |
} |
// Takes ownership of |errorRaw|. |
@@ -91,8 +93,10 @@ public: |
: m_resolver(resolver) { } |
~GetRegistrationCallback() override { } |
- void onSuccess(WebServiceWorkerRegistration* registration) override |
+ // Takes ownership of |registrationRaw|. |
+ void onSuccess(WebServiceWorkerRegistration* registrationRaw) override |
{ |
+ OwnPtr<WebServiceWorkerRegistration> registration = adoptPtr(registrationRaw); |
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) |
return; |
if (!registration) { |
@@ -100,7 +104,7 @@ public: |
m_resolver->resolve(); |
return; |
} |
- m_resolver->resolve(ServiceWorkerRegistration::take(m_resolver.get(), registration)); |
+ m_resolver->resolve(ServiceWorkerRegistration::create(m_resolver->executionContext(), registration.release())); |
} |
// Takes ownership of |errorRaw|. |
@@ -151,13 +155,18 @@ public: |
explicit GetRegistrationForReadyCallback(ReadyProperty* ready) |
: m_ready(ready) { } |
~GetRegistrationForReadyCallback() { } |
- void onSuccess(WebServiceWorkerRegistration* registration) override |
+ |
+ // Takes ownership of |registrationRaw|. |
+ void onSuccess(WebServiceWorkerRegistration* registrationRaw) override |
{ |
- ASSERT(registration); |
+ ASSERT(registrationRaw); |
ASSERT(m_ready->state() == ReadyProperty::Pending); |
+ |
+ OwnPtr<WebServiceWorkerRegistration> registration = adoptPtr(registrationRaw); |
if (m_ready->executionContext() && !m_ready->executionContext()->activeDOMObjectsAreStopped()) |
- m_ready->resolve(ServiceWorkerRegistration::from(m_ready->executionContext(), registration)); |
+ m_ready->resolve(ServiceWorkerRegistration::create(m_ready->executionContext(), registration.release())); |
} |
+ |
private: |
Persistent<ReadyProperty> m_ready; |
WTF_MAKE_NONCOPYABLE(GetRegistrationForReadyCallback); |