blob: bce85d2b6bf986bcc7bb7087af9743de1f0449b6 [file] [log] [blame]
// 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 "modules/push_messaging/PushSubscriptionCallbacks.h"
#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "modules/push_messaging/PushError.h"
#include "modules/push_messaging/PushSubscription.h"
#include "modules/serviceworkers/ServiceWorkerRegistration.h"
#include "public/platform/modules/push_messaging/WebPushSubscription.h"
namespace blink {
PushSubscriptionCallbacks::PushSubscriptionCallbacks(ScriptPromiseResolver* resolver, ServiceWorkerRegistration* serviceWorkerRegistration)
: m_resolver(resolver)
, m_serviceWorkerRegistration(serviceWorkerRegistration)
{
ASSERT(m_resolver);
ASSERT(m_serviceWorkerRegistration);
}
PushSubscriptionCallbacks::~PushSubscriptionCallbacks()
{
}
void PushSubscriptionCallbacks::onSuccess(std::unique_ptr<WebPushSubscription> webPushSubscription)
{
if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
return;
m_resolver->resolve(PushSubscription::take(m_resolver.get(), adoptPtr(webPushSubscription.release()), m_serviceWorkerRegistration));
}
void PushSubscriptionCallbacks::onError(const WebPushError& error)
{
if (!m_resolver->getExecutionContext() || m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
return;
m_resolver->reject(PushError::take(m_resolver.get(), error));
}
} // namespace blink