1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef ServiceWorkerRegistration_h
6 #define ServiceWorkerRegistration_h
8 #include "core/dom/ActiveDOMObject.h"
9 #include "core/events/EventTarget.h"
10 #include "modules/serviceworkers/ServiceWorker.h"
11 #include "public/platform/WebServiceWorkerRegistration.h"
12 #include "public/platform/WebServiceWorkerRegistrationProxy.h"
13 #include "wtf/OwnPtr.h"
14 #include "wtf/PassOwnPtr.h"
15 #include "wtf/PassRefPtr.h"
16 #include "wtf/RefCounted.h"
21 class ScriptPromiseResolver;
23 class WebServiceWorkerProvider;
25 class ServiceWorkerRegistration FINAL
26 : public RefCountedWillBeRefCountedGarbageCollected<ServiceWorkerRegistration>
27 , public ActiveDOMObject
28 , public EventTargetWithInlineData
29 , public WebServiceWorkerRegistrationProxy {
30 REFCOUNTED_EVENT_TARGET(ServiceWorkerRegistration);
31 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerRegistration);
33 virtual ~ServiceWorkerRegistration() { }
35 // EventTarget overrides.
36 virtual const AtomicString& interfaceName() const OVERRIDE;
37 virtual ExecutionContext* executionContext() const OVERRIDE { return ActiveDOMObject::executionContext(); }
39 // WebServiceWorkerRegistrationProxy overrides.
40 virtual void dispatchUpdateFoundEvent() OVERRIDE;
41 virtual void setInstalling(WebServiceWorker*) OVERRIDE;
42 virtual void setWaiting(WebServiceWorker*) OVERRIDE;
43 virtual void setActive(WebServiceWorker*) OVERRIDE;
45 // For CallbackPromiseAdapter.
46 typedef WebServiceWorkerRegistration WebType;
47 static PassRefPtrWillBeRawPtr<ServiceWorkerRegistration> take(ScriptPromiseResolver*, WebType* registration);
48 static void dispose(WebType* registration);
50 PassRefPtrWillBeRawPtr<ServiceWorker> installing() { return m_installing.get(); }
51 PassRefPtrWillBeRawPtr<ServiceWorker> waiting() { return m_waiting.get(); }
52 PassRefPtrWillBeRawPtr<ServiceWorker> active() { return m_active.get(); }
56 ScriptPromise unregister(ScriptState*);
58 DEFINE_ATTRIBUTE_EVENT_LISTENER(updatefound);
60 virtual void trace(Visitor*) OVERRIDE;
63 static PassRefPtrWillBeRawPtr<ServiceWorkerRegistration> getOrCreate(ExecutionContext*, WebServiceWorkerRegistration*);
64 ServiceWorkerRegistration(ExecutionContext*, PassOwnPtr<WebServiceWorkerRegistration>);
66 // ActiveDOMObject overrides.
67 virtual bool hasPendingActivity() const OVERRIDE;
68 virtual void stop() OVERRIDE;
70 OwnPtr<WebServiceWorkerRegistration> m_outerRegistration;
71 WebServiceWorkerProvider* m_provider;
72 RefPtrWillBeMember<ServiceWorker> m_installing;
73 RefPtrWillBeMember<ServiceWorker> m_waiting;
74 RefPtrWillBeMember<ServiceWorker> m_active;
81 #endif // ServiceWorkerRegistration_h