Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(422)

Side by Side Diff: Source/modules/serviceworkers/ServiceWorkerRegistration.h

Issue 1148383012: Oilpan: prefer eager finalization over prefinalizers. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: expand&improve comments Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ServiceWorkerRegistration_h 5 #ifndef ServiceWorkerRegistration_h
6 #define ServiceWorkerRegistration_h 6 #define ServiceWorkerRegistration_h
7 7
8 #include "core/dom/ActiveDOMObject.h" 8 #include "core/dom/ActiveDOMObject.h"
9 #include "core/events/EventTarget.h" 9 #include "core/events/EventTarget.h"
10 #include "modules/serviceworkers/ServiceWorker.h" 10 #include "modules/serviceworkers/ServiceWorker.h"
(...skipping 13 matching lines...) Expand all
24 class WebServiceWorkerProvider; 24 class WebServiceWorkerProvider;
25 25
26 class ServiceWorkerRegistration final 26 class ServiceWorkerRegistration final
27 : public RefCountedGarbageCollectedEventTargetWithInlineData<ServiceWorkerRe gistration> 27 : public RefCountedGarbageCollectedEventTargetWithInlineData<ServiceWorkerRe gistration>
28 , public ActiveDOMObject 28 , public ActiveDOMObject
29 , public WebServiceWorkerRegistrationProxy 29 , public WebServiceWorkerRegistrationProxy
30 , public HeapSupplementable<ServiceWorkerRegistration> { 30 , public HeapSupplementable<ServiceWorkerRegistration> {
31 DEFINE_WRAPPERTYPEINFO(); 31 DEFINE_WRAPPERTYPEINFO();
32 DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<S erviceWorkerRegistration>); 32 DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<S erviceWorkerRegistration>);
33 USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerRegistration); 33 USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerRegistration);
34 USING_PRE_FINALIZER(ServiceWorkerRegistration, dispose);
35 public: 34 public:
36 // EventTarget overrides. 35 // EventTarget overrides.
37 virtual const AtomicString& interfaceName() const override; 36 virtual const AtomicString& interfaceName() const override;
38 virtual ExecutionContext* executionContext() const override { return ActiveD OMObject::executionContext(); } 37 virtual ExecutionContext* executionContext() const override { return ActiveD OMObject::executionContext(); }
39 38
40 // WebServiceWorkerRegistrationProxy overrides. 39 // WebServiceWorkerRegistrationProxy overrides.
41 virtual void dispatchUpdateFoundEvent() override; 40 virtual void dispatchUpdateFoundEvent() override;
42 virtual void setInstalling(WebServiceWorker*) override; 41 virtual void setInstalling(WebServiceWorker*) override;
43 virtual void setWaiting(WebServiceWorker*) override; 42 virtual void setWaiting(WebServiceWorker*) override;
44 virtual void setActive(WebServiceWorker*) override; 43 virtual void setActive(WebServiceWorker*) override;
(...skipping 10 matching lines...) Expand all
55 54
56 String scope() const; 55 String scope() const;
57 56
58 WebServiceWorkerRegistration* webRegistration() { return m_outerRegistration .get(); } 57 WebServiceWorkerRegistration* webRegistration() { return m_outerRegistration .get(); }
59 58
60 ScriptPromise unregister(ScriptState*); 59 ScriptPromise unregister(ScriptState*);
61 60
62 DEFINE_ATTRIBUTE_EVENT_LISTENER(updatefound); 61 DEFINE_ATTRIBUTE_EVENT_LISTENER(updatefound);
63 62
64 virtual ~ServiceWorkerRegistration() override; 63 virtual ~ServiceWorkerRegistration() override;
64
65 // Eager finalization needed to promptly release owned WebServiceWorkerRegis tration.
66 EAGERLY_FINALIZE();
65 DECLARE_VIRTUAL_TRACE(); 67 DECLARE_VIRTUAL_TRACE();
66 68
67 private: 69 private:
68 static ServiceWorkerRegistration* getOrCreate(ExecutionContext*, WebServiceW orkerRegistration*); 70 static ServiceWorkerRegistration* getOrCreate(ExecutionContext*, WebServiceW orkerRegistration*);
69 ServiceWorkerRegistration(ExecutionContext*, PassOwnPtr<WebServiceWorkerRegi stration>); 71 ServiceWorkerRegistration(ExecutionContext*, PassOwnPtr<WebServiceWorkerRegi stration>);
70 72
71 // ActiveDOMObject overrides. 73 // ActiveDOMObject overrides.
72 virtual bool hasPendingActivity() const override; 74 virtual bool hasPendingActivity() const override;
73 virtual void stop() override; 75 virtual void stop() override;
74 76
75 void dispose();
76
77 OwnPtr<WebServiceWorkerRegistration> m_outerRegistration; 77 OwnPtr<WebServiceWorkerRegistration> m_outerRegistration;
78 WebServiceWorkerProvider* m_provider; 78 WebServiceWorkerProvider* m_provider;
79 RefPtrWillBeMember<ServiceWorker> m_installing; 79 RefPtrWillBeMember<ServiceWorker> m_installing;
80 RefPtrWillBeMember<ServiceWorker> m_waiting; 80 RefPtrWillBeMember<ServiceWorker> m_waiting;
81 RefPtrWillBeMember<ServiceWorker> m_active; 81 RefPtrWillBeMember<ServiceWorker> m_active;
82 82
83 bool m_stopped; 83 bool m_stopped;
84 }; 84 };
85 85
86 } // namespace blink 86 } // namespace blink
87 87
88 #endif // ServiceWorkerRegistration_h 88 #endif // ServiceWorkerRegistration_h
OLDNEW
« no previous file with comments | « Source/modules/serviceworkers/ServiceWorker.cpp ('k') | Source/modules/serviceworkers/ServiceWorkerRegistration.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698