1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "config.h"
#include "modules/push_messaging/PushSubscription.h"
#include "bindings/core/v8/CallbackPromiseAdapter.h"
#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "modules/push_messaging/PushError.h"
#include "modules/serviceworkers/ServiceWorkerRegistration.h"
#include "public/platform/Platform.h"
#include "public/platform/WebPushProvider.h"
#include "public/platform/WebPushSubscription.h"
#include "wtf/OwnPtr.h"
namespace blink {
PushSubscription* PushSubscription::take(ScriptPromiseResolver*, WebPushSubscription* pushSubscription, ServiceWorkerRegistration* serviceWorkerRegistration)
{
OwnPtr<WebPushSubscription> subscription = adoptPtr(pushSubscription);
return new PushSubscription(subscription->endpoint, subscription->subscriptionId, serviceWorkerRegistration);
}
void PushSubscription::dispose(WebPushSubscription* pushSubscription)
{
if (pushSubscription)
delete pushSubscription;
}
PushSubscription::PushSubscription(const String& endpoint, const String& subscriptionId, ServiceWorkerRegistration* serviceWorkerRegistration)
: m_endpoint(endpoint)
, m_subscriptionId(subscriptionId)
, m_serviceWorkerRegistration(serviceWorkerRegistration)
{
}
PushSubscription::~PushSubscription()
{
}
ScriptPromise PushSubscription::unsubscribe(ScriptState* scriptState)
{
RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scriptState);
ScriptPromise promise = resolver->promise();
WebPushProvider* webPushProvider = Platform::current()->pushProvider();
ASSERT(webPushProvider);
webPushProvider->unregister(m_serviceWorkerRegistration->webRegistration(), new CallbackPromiseAdapter<bool, PushError>(resolver));
return promise;
}
void PushSubscription::trace(Visitor* visitor)
{
visitor->trace(m_serviceWorkerRegistration);
}
} // namespace blink
|