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 77 78 79 80 81 82 83 84
|
// 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 ServiceWorkerRegistration_h
#define ServiceWorkerRegistration_h
#include "core/dom/ActiveDOMObject.h"
#include "core/events/EventTarget.h"
#include "modules/serviceworkers/ServiceWorker.h"
#include "platform/Supplementable.h"
#include "public/platform/WebServiceWorkerRegistration.h"
#include "public/platform/WebServiceWorkerRegistrationProxy.h"
#include "wtf/OwnPtr.h"
#include "wtf/PassOwnPtr.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h"
namespace blink {
class ScriptPromise;
class ScriptPromiseResolver;
class ScriptState;
class WebServiceWorkerProvider;
class ServiceWorkerRegistration final
: public RefCountedGarbageCollectedEventTargetWithInlineData<ServiceWorkerRegistration>
, public ActiveDOMObject
, public WebServiceWorkerRegistrationProxy
, public HeapSupplementable<ServiceWorkerRegistration> {
DEFINE_WRAPPERTYPEINFO();
DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<ServiceWorkerRegistration>);
USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerRegistration);
public:
// EventTarget overrides.
virtual const AtomicString& interfaceName() const override;
virtual ExecutionContext* executionContext() const override { return ActiveDOMObject::executionContext(); }
// WebServiceWorkerRegistrationProxy overrides.
virtual void dispatchUpdateFoundEvent() override;
virtual void setInstalling(WebServiceWorker*) override;
virtual void setWaiting(WebServiceWorker*) override;
virtual void setActive(WebServiceWorker*) override;
// For CallbackPromiseAdapter.
typedef WebServiceWorkerRegistration WebType;
static ServiceWorkerRegistration* from(ExecutionContext*, WebType* registration);
static ServiceWorkerRegistration* take(ScriptPromiseResolver*, WebType* registration);
static void dispose(WebType* registration);
PassRefPtrWillBeRawPtr<ServiceWorker> installing() { return m_installing.get(); }
PassRefPtrWillBeRawPtr<ServiceWorker> waiting() { return m_waiting.get(); }
PassRefPtrWillBeRawPtr<ServiceWorker> active() { return m_active.get(); }
String scope() const;
WebServiceWorkerRegistration* webRegistration() { return m_outerRegistration.get(); }
ScriptPromise unregister(ScriptState*);
DEFINE_ATTRIBUTE_EVENT_LISTENER(updatefound);
virtual void trace(Visitor*) override;
private:
static ServiceWorkerRegistration* getOrCreate(ExecutionContext*, WebServiceWorkerRegistration*);
ServiceWorkerRegistration(ExecutionContext*, PassOwnPtr<WebServiceWorkerRegistration>);
// ActiveDOMObject overrides.
virtual bool hasPendingActivity() const override;
virtual void stop() override;
OwnPtr<WebServiceWorkerRegistration> m_outerRegistration;
WebServiceWorkerProvider* m_provider;
RefPtrWillBeMember<ServiceWorker> m_installing;
RefPtrWillBeMember<ServiceWorker> m_waiting;
RefPtrWillBeMember<ServiceWorker> m_active;
bool m_stopped;
};
} // namespace blink
#endif // ServiceWorkerRegistration_h
|