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

Unified Diff: Source/core/animation/DocumentTimeline.h

Issue 225073004: Oilpan: Completely move core/animations/ to oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/animation/DocumentTimeline.h
diff --git a/Source/core/animation/DocumentTimeline.h b/Source/core/animation/DocumentTimeline.h
index 6ff8bdfbf246bfba7002d92f4178a8788dbf4676..a0c15dd52b01f6732d079f964d5c847ebca6f195 100644
--- a/Source/core/animation/DocumentTimeline.h
+++ b/Source/core/animation/DocumentTimeline.h
@@ -36,6 +36,7 @@
#include "core/dom/Element.h"
#include "core/events/Event.h"
#include "platform/Timer.h"
+#include "platform/heap/Handle.h"
#include "wtf/RefCounted.h"
#include "wtf/RefPtr.h"
#include "wtf/Vector.h"
@@ -46,9 +47,9 @@ class Document;
class TimedItem;
// DocumentTimeline is constructed and owned by Document, and tied to its lifecycle.
-class DocumentTimeline : public RefCounted<DocumentTimeline> {
+class DocumentTimeline : public RefCountedWillBeGarbageCollectedFinalized<DocumentTimeline> {
public:
- class PlatformTiming {
+ class PlatformTiming : public NoBaseWillBeGarbageCollectedFinalized<PlatformTiming> {
public:
// Calls DocumentTimeline's wake() method after duration seconds.
@@ -56,10 +57,10 @@ public:
virtual void cancelWake() = 0;
virtual void serviceOnNextFrame() = 0;
virtual ~PlatformTiming() { }
-
+ virtual void trace(Visitor*) = 0;
};
- static PassRefPtr<DocumentTimeline> create(Document*, PassOwnPtr<PlatformTiming> = nullptr);
+ static PassRefPtrWillBeRawPtr<DocumentTimeline> create(Document*, PassOwnPtrWillBeRawPtr<PlatformTiming> = nullptr);
~DocumentTimeline();
void serviceAnimations(AnimationPlayer::UpdateReason);
@@ -68,11 +69,13 @@ public:
AnimationPlayer* createAnimationPlayer(TimedItem*);
AnimationPlayer* play(TimedItem*);
+#if !ENABLE(OILPAN)
void playerDestroyed(AnimationPlayer* player)
{
ASSERT(m_players.contains(player));
m_players.remove(player);
}
+#endif
// Called from setReadyState() in Document.cpp to set m_zeroTime to
// performance.timing.domInteractive
@@ -94,16 +97,20 @@ public:
Document* document() { return m_document; }
void detachFromDocument();
+ void trace(Visitor*);
+
protected:
- DocumentTimeline(Document*, PassOwnPtr<PlatformTiming>);
+ DocumentTimeline(Document*, PassOwnPtrWillBeRawPtr<PlatformTiming>);
private:
double m_zeroTime;
+ // FIXME: oilpan: This should be a Member once the Document is moved to the heap.
+ // DocumentTimeline should keep the Document alive.
Document* m_document;
// AnimationPlayers which will be updated on the next frame
// i.e. current, in effect, or had timing changed
- HashSet<RefPtr<AnimationPlayer> > m_playersNeedingUpdate;
- HashSet<AnimationPlayer*> m_players;
+ WillBeHeapHashSet<RefPtrWillBeMember<AnimationPlayer> > m_playersNeedingUpdate;
+ WillBeHeapHashSet<RawPtrWillBeWeakMember<AnimationPlayer> > m_players;
bool m_hasOutdatedAnimationPlayer;
void wake();
@@ -111,7 +118,7 @@ private:
friend class SMILTimeContainer;
static const double s_minimumDelay;
- OwnPtr<PlatformTiming> m_timing;
+ OwnPtrWillBeMember<PlatformTiming> m_timing;
class DocumentTimelineTiming FINAL : public PlatformTiming {
public:
@@ -128,10 +135,11 @@ private:
void timerFired(Timer<DocumentTimelineTiming>*) { m_timeline->wake(); }
+ virtual void trace(Visitor*) OVERRIDE;
+
private:
- DocumentTimeline* m_timeline;
+ RawPtrWillBeMember<DocumentTimeline> m_timeline;
Timer<DocumentTimelineTiming> m_timer;
-
};
friend class AnimationDocumentTimelineTest;

Powered by Google App Engine
This is Rietveld 408576698