Index: Source/modules/push_messaging/PushRegistration.cpp |
diff --git a/Source/modules/push_messaging/PushRegistration.cpp b/Source/modules/push_messaging/PushRegistration.cpp |
index 79a9bbae88b1fdde1f6109bdc2e282ed3f1a7ff3..83713fb00f76519612903129bd7abfab58f5b639 100644 |
--- a/Source/modules/push_messaging/PushRegistration.cpp |
+++ b/Source/modules/push_messaging/PushRegistration.cpp |
@@ -5,24 +5,31 @@ |
#include "config.h" |
#include "modules/push_messaging/PushRegistration.h" |
+#include "bindings/core/v8/CallbackPromiseAdapter.h" |
+#include "bindings/core/v8/ScriptPromiseResolver.h" |
+#include "modules/serviceworkers/ServiceWorkerRegistration.h" |
+#include "public/platform/Platform.h" |
+#include "public/platform/WebPushProvider.h" |
+#include "public/platform/WebPushRegistration.h" |
#include "wtf/OwnPtr.h" |
namespace blink { |
-PushRegistration* PushRegistration::take(ScriptPromiseResolver*, WebType* registrationRaw) |
+PushRegistration* PushRegistration::take(ScriptPromiseResolver*, WebPushRegistration* pushRegistration, ServiceWorkerRegistration* serviceWorkerRegistration) |
{ |
- OwnPtr<WebType> registration = adoptPtr(registrationRaw); |
- return new PushRegistration(registration->endpoint, registration->registrationId); |
+ OwnPtr<WebPushRegistration> registration = adoptPtr(pushRegistration); |
+ return new PushRegistration(registration->endpoint, registration->registrationId, serviceWorkerRegistration); |
} |
-void PushRegistration::dispose(WebType* registrationRaw) |
+void PushRegistration::dispose(WebPushRegistration* pushRegistration) |
{ |
- delete registrationRaw; |
+ delete pushRegistration; |
} |
-PushRegistration::PushRegistration(const String& pushEndpoint, const String& pushRegistrationId) |
+PushRegistration::PushRegistration(const String& pushEndpoint, const String& pushRegistrationId, ServiceWorkerRegistration* registration) |
: m_pushEndpoint(pushEndpoint) |
, m_pushRegistrationId(pushRegistrationId) |
+ , m_serviceWorkerRegistration(registration) |
{ |
} |
@@ -30,4 +37,21 @@ PushRegistration::~PushRegistration() |
{ |
} |
+ScriptPromise PushRegistration::unregister(ScriptState* scriptState) |
+{ |
+ RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState); |
+ ScriptPromise promise = resolver->promise(); |
+ |
+ WebPushProvider* webPushProvider = Platform::current()->pushProvider(); |
+ ASSERT(webPushProvider); |
+ |
+ webPushProvider->unregister(m_serviceWorkerRegistration->webRegistration(), new CallbackPromiseAdapter<bool, void>(resolver)); |
+ return promise; |
+} |
+ |
+void PushRegistration::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_serviceWorkerRegistration); |
+} |
+ |
} // namespace blink |