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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
// 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.
#ifndef ServiceWorkerRegistrationNotifications_h
#define ServiceWorkerRegistrationNotifications_h
#include "bindings/core/v8/ScriptPromise.h"
#include "core/dom/ContextLifecycleObserver.h"
#include "platform/Supplementable.h"
#include "platform/heap/GarbageCollected.h"
#include "platform/heap/Handle.h"
#include "platform/heap/HeapAllocator.h"
#include "platform/heap/Visitor.h"
#include "public/platform/modules/notifications/WebNotificationManager.h"
#include "wtf/Noncopyable.h"
#include "wtf/PassRefPtr.h"
#include <memory>
namespace blink {
class ExecutionContext;
class ExceptionState;
class GetNotificationOptions;
class NotificationOptions;
class NotificationResourcesLoader;
class ScriptState;
class SecurityOrigin;
class ServiceWorkerRegistration;
struct WebNotificationData;
class ServiceWorkerRegistrationNotifications final
: public GarbageCollected<ServiceWorkerRegistrationNotifications>,
public Supplement<ServiceWorkerRegistration>,
public ContextLifecycleObserver {
USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerRegistrationNotifications);
WTF_MAKE_NONCOPYABLE(ServiceWorkerRegistrationNotifications);
public:
static ScriptPromise showNotification(ScriptState*,
ServiceWorkerRegistration&,
const String& title,
const NotificationOptions&,
ExceptionState&);
static ScriptPromise getNotifications(ScriptState*,
ServiceWorkerRegistration&,
const GetNotificationOptions&);
// ContextLifecycleObserver interface.
void contextDestroyed(ExecutionContext*) override;
DECLARE_VIRTUAL_TRACE();
private:
ServiceWorkerRegistrationNotifications(ExecutionContext*,
ServiceWorkerRegistration*);
static const char* supplementName();
static ServiceWorkerRegistrationNotifications& from(
ExecutionContext*,
ServiceWorkerRegistration&);
void prepareShow(const WebNotificationData&,
std::unique_ptr<WebNotificationShowCallbacks>);
void didLoadResources(PassRefPtr<SecurityOrigin>,
const WebNotificationData&,
std::unique_ptr<WebNotificationShowCallbacks>,
NotificationResourcesLoader*);
Member<ServiceWorkerRegistration> m_registration;
HeapHashSet<Member<NotificationResourcesLoader>> m_loaders;
};
} // namespace blink
#endif // ServiceWorkerRegistrationNotifications_h
|