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

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

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, 7 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.cpp
diff --git a/Source/core/animation/DocumentTimeline.cpp b/Source/core/animation/DocumentTimeline.cpp
index f9891590e0cebec67fb94a5004348404327b8550..5292cd0b6c5e5e46d9d193eadc588cbcbb996a6b 100644
--- a/Source/core/animation/DocumentTimeline.cpp
+++ b/Source/core/animation/DocumentTimeline.cpp
@@ -45,17 +45,17 @@ namespace WebCore {
const double DocumentTimeline::s_minimumDelay = 0.04;
-PassRefPtr<DocumentTimeline> DocumentTimeline::create(Document* document, PassOwnPtr<PlatformTiming> timing)
+PassRefPtrWillBeRawPtr<DocumentTimeline> DocumentTimeline::create(Document* document, PassOwnPtrWillBeRawPtr<PlatformTiming> timing)
{
- return adoptRef(new DocumentTimeline(document, timing));
+ return adoptRefWillBeNoop(new DocumentTimeline(document, timing));
}
-DocumentTimeline::DocumentTimeline(Document* document, PassOwnPtr<PlatformTiming> timing)
+DocumentTimeline::DocumentTimeline(Document* document, PassOwnPtrWillBeRawPtr<PlatformTiming> timing)
: m_zeroTime(nullValue())
, m_document(document)
{
if (!timing)
- m_timing = adoptPtr(new DocumentTimelineTiming(this));
+ m_timing = adoptPtrWillBeNoop(new DocumentTimelineTiming(this));
else
m_timing = timing;
@@ -64,13 +64,15 @@ DocumentTimeline::DocumentTimeline(Document* document, PassOwnPtr<PlatformTiming
DocumentTimeline::~DocumentTimeline()
{
+#if !ENABLE(OILPAN)
for (HashSet<AnimationPlayer*>::iterator it = m_players.begin(); it != m_players.end(); ++it)
(*it)->timelineDestroyed();
+#endif
}
AnimationPlayer* DocumentTimeline::createAnimationPlayer(TimedItem* child)
{
- RefPtr<AnimationPlayer> player = AnimationPlayer::create(*this, child);
+ RefPtrWillBeRawPtr<AnimationPlayer> player = AnimationPlayer::create(*this, child);
AnimationPlayer* result = player.get();
m_players.add(result);
setOutdatedAnimationPlayer(result);
@@ -99,8 +101,8 @@ void DocumentTimeline::serviceAnimations(TimingUpdateReason reason)
m_timing->cancelWake();
double timeToNextEffect = std::numeric_limits<double>::infinity();
- Vector<AnimationPlayer*> players;
- for (HashSet<RefPtr<AnimationPlayer> >::iterator it = m_playersNeedingUpdate.begin(); it != m_playersNeedingUpdate.end(); ++it)
+ WillBeHeapVector<RawPtrWillBeMember<AnimationPlayer> > players;
+ for (WillBeHeapHashSet<RefPtrWillBeMember<AnimationPlayer> >::iterator it = m_playersNeedingUpdate.begin(); it != m_playersNeedingUpdate.end(); ++it)
players.append(it->get());
std::sort(players.begin(), players.end(), AnimationPlayer::hasLowerPriority);
@@ -145,6 +147,11 @@ void DocumentTimeline::DocumentTimelineTiming::serviceOnNextFrame()
m_timeline->m_document->view()->scheduleAnimation();
}
+void DocumentTimeline::DocumentTimelineTiming::trace(Visitor* visitor)
+{
+ visitor->trace(m_timeline);
+}
+
double DocumentTimeline::currentTime(bool& isNull)
{
return currentTimeInternal(isNull) * 1000;
@@ -180,14 +187,14 @@ double DocumentTimeline::effectiveTime()
void DocumentTimeline::pauseAnimationsForTesting(double pauseTime)
{
- for (HashSet<RefPtr<AnimationPlayer> >::iterator it = m_playersNeedingUpdate.begin(); it != m_playersNeedingUpdate.end(); ++it)
+ for (WillBeHeapHashSet<RefPtrWillBeMember<AnimationPlayer> >::iterator it = m_playersNeedingUpdate.begin(); it != m_playersNeedingUpdate.end(); ++it)
(*it)->pauseForTesting(pauseTime);
serviceAnimations(TimingUpdateOnDemand);
}
bool DocumentTimeline::hasOutdatedAnimationPlayer() const
{
- for (HashSet<RefPtr<AnimationPlayer> >::iterator it = m_playersNeedingUpdate.begin(); it != m_playersNeedingUpdate.end(); ++it) {
+ for (WillBeHeapHashSet<RefPtrWillBeMember<AnimationPlayer> >::iterator it = m_playersNeedingUpdate.begin(); it != m_playersNeedingUpdate.end(); ++it) {
if ((*it)->outdated())
return true;
}
@@ -209,7 +216,7 @@ size_t DocumentTimeline::numberOfActiveAnimationsForTesting() const
if (isNull(m_zeroTime))
return 0;
size_t count = 0;
- for (HashSet<RefPtr<AnimationPlayer> >::iterator it = m_playersNeedingUpdate.begin(); it != m_playersNeedingUpdate.end(); ++it) {
+ for (WillBeHeapHashSet<RefPtrWillBeMember<AnimationPlayer> >::iterator it = m_playersNeedingUpdate.begin(); it != m_playersNeedingUpdate.end(); ++it) {
const TimedItem* timedItem = (*it)->source();
if ((*it)->hasStartTime())
count += (timedItem && (timedItem->isCurrent() || timedItem->isInEffect()));
@@ -217,9 +224,20 @@ size_t DocumentTimeline::numberOfActiveAnimationsForTesting() const
return count;
}
-void DocumentTimeline::detachFromDocument() {
+#if !ENABLE(OILPAN)
+void DocumentTimeline::detachFromDocument()
+{
// FIXME: DocumentTimeline should keep Document alive.
- m_document = 0;
+ m_document = nullptr;
+}
+#endif
+
+void DocumentTimeline::trace(Visitor* visitor)
+{
+ visitor->trace(m_document);
+ visitor->trace(m_timing);
+ visitor->trace(m_playersNeedingUpdate);
+ visitor->trace(m_players);
}
} // namespace

Powered by Google App Engine
This is Rietveld 408576698