Index: Source/core/animation/css/CSSAnimations.cpp |
diff --git a/Source/core/animation/css/CSSAnimations.cpp b/Source/core/animation/css/CSSAnimations.cpp |
index d4f37e2066b7dc5272ac283108f41e874dccf23e..b9c8aecfae8d8e719abdb44c52920a41c7f74488 100644 |
--- a/Source/core/animation/css/CSSAnimations.cpp |
+++ b/Source/core/animation/css/CSSAnimations.cpp |
@@ -32,7 +32,7 @@ |
#include "core/animation/css/CSSAnimations.h" |
#include "core/StylePropertyShorthand.h" |
-#include "core/animation/AnimationPlayer.h" |
+#include "core/animation/Animation.h" |
#include "core/animation/AnimationTimeline.h" |
#include "core/animation/CompositorAnimations.h" |
#include "core/animation/DeferredLegacyStyleInterpolation.h" |
@@ -183,19 +183,19 @@ CSSAnimations::CSSAnimations() |
{ |
} |
-const AtomicString CSSAnimations::getAnimationNameForInspector(const AnimationPlayer& player) |
+const AtomicString CSSAnimations::getAnimationNameForInspector(const Animation& animation) |
{ |
for (const auto& it : m_animations) { |
- if (it.value->player->sequenceNumber() == player.sequenceNumber()) |
+ if (it.value->animation->sequenceNumber() == animation.sequenceNumber()) |
return it.key; |
} |
return nullAtom; |
} |
-bool CSSAnimations::isTransitionAnimationForInspector(const AnimationPlayer& player) const |
+bool CSSAnimations::isTransitionAnimationForInspector(const Animation& animation) const |
{ |
for (const auto& it : m_transitions) { |
- if (it.value.player->sequenceNumber() == player.sequenceNumber()) |
+ if (it.value.animation->sequenceNumber() == animation.sequenceNumber()) |
return true; |
} |
return false; |
@@ -257,23 +257,23 @@ void CSSAnimations::calculateAnimationUpdate(CSSAnimationUpdate* update, const E |
inactive.remove(animationName); |
const RunningAnimation* runningAnimation = existing->value.get(); |
- AnimationPlayer* player = runningAnimation->player.get(); |
+ Animation* animation = runningAnimation->animation.get(); |
if (keyframesRule != runningAnimation->styleRule || keyframesRule->version() != runningAnimation->styleRuleVersion || runningAnimation->specifiedTiming != specifiedTiming) { |
ASSERT(!isAnimationStyleChange); |
- update->updateAnimation(animationName, player, InertAnimation::create( |
+ update->updateAnimation(animationName, animation, InertAnimation::create( |
createKeyframeEffect(resolver, animatingElement, element, &style, parentStyle, animationName, keyframeTimingFunction.get()), |
- timing, isPaused, player->unlimitedCurrentTimeInternal()), specifiedTiming, keyframesRule); |
- } else if (!isAnimationStyleChange && player->source() && player->source()->isAnimation()) { |
- AnimationEffect* effect = toAnimation(player->source())->effect(); |
+ timing, isPaused, animation->unlimitedCurrentTimeInternal()), specifiedTiming, keyframesRule); |
+ } else if (!isAnimationStyleChange && animation->source() && animation->source()->isAnimation()) { |
+ EffectModel* effect = toKeyframeEffect(animation->source())->effect(); |
if (effect && effect->isKeyframeEffectModel()) { |
KeyframeEffectModelBase* keyframeEffect = toKeyframeEffectModelBase(effect); |
if (keyframeEffect->hasSyntheticKeyframes()) |
- update->updateAnimationStyle(player, keyframeEffect, animatingElement->layoutObject(), style); |
+ update->updateAnimationStyle(animation, keyframeEffect, animatingElement->layoutObject(), style); |
} |
} |
- if (isPaused != player->paused()) { |
+ if (isPaused != animation->paused()) { |
ASSERT(!isAnimationStyleChange); |
update->toggleAnimationPaused(animationName); |
} |
@@ -292,7 +292,7 @@ void CSSAnimations::calculateAnimationUpdate(CSSAnimationUpdate* update, const E |
ASSERT(inactive.isEmpty() || cssAnimations); |
for (const AtomicString& animationName : inactive) { |
ASSERT(!isAnimationStyleChange); |
- update->cancelAnimation(animationName, *cssAnimations->m_animations.get(animationName)->player); |
+ update->cancelAnimation(animationName, *cssAnimations->m_animations.get(animationName)->animation); |
} |
} |
@@ -313,26 +313,26 @@ void CSSAnimations::maybeApplyPendingUpdate(Element* element) |
DisableCompositingQueryAsserts disabler; |
for (const AtomicString& animationName : update->cancelledAnimationNames()) { |
- RefPtrWillBeRawPtr<AnimationPlayer> player = m_animations.take(animationName)->player; |
- player->cancel(); |
- player->update(TimingUpdateOnDemand); |
+ RefPtrWillBeRawPtr<Animation> animation = m_animations.take(animationName)->animation; |
+ animation->cancel(); |
+ animation->update(TimingUpdateOnDemand); |
} |
for (const AtomicString& animationName : update->animationsWithPauseToggled()) { |
- AnimationPlayer* player = m_animations.get(animationName)->player.get(); |
- if (player->paused()) |
- player->unpause(); |
+ Animation* animation = m_animations.get(animationName)->animation.get(); |
+ if (animation->paused()) |
+ animation->unpause(); |
else |
- player->pause(); |
- if (player->outdated()) |
- player->update(TimingUpdateOnDemand); |
+ animation->pause(); |
+ if (animation->outdated()) |
+ animation->update(TimingUpdateOnDemand); |
} |
for (const auto& entry : update->animationsWithUpdates()) { |
- Animation* animation = toAnimation(entry.player->source()); |
+ KeyframeEffect* effect = toKeyframeEffect(entry.animation->source()); |
- animation->setEffect(entry.animation->effect()); |
- animation->updateSpecifiedTiming(entry.animation->specifiedTiming()); |
+ effect->setEffect(entry.effect->effect()); |
+ effect->updateSpecifiedTiming(entry.effect->specifiedTiming()); |
m_animations.find(entry.name)->value->update(entry); |
} |
@@ -351,22 +351,22 @@ void CSSAnimations::maybeApplyPendingUpdate(Element* element) |
if (styleUpdate.snapshot.webkitFilter) |
updated |= styleUpdate.effect->updateNeutralKeyframeAnimatableValues(CSSPropertyWebkitFilter, styleUpdate.snapshot.webkitFilter); |
if (updated) { |
- styleUpdate.player->setOutdated(); |
- styleUpdate.player->setCompositorPending(true); |
+ styleUpdate.animation->setOutdated(); |
+ styleUpdate.animation->setCompositorPending(true); |
} |
} |
for (const auto& entry : update->newAnimations()) { |
- const InertAnimation* inertAnimation = entry.animation.get(); |
+ const InertAnimation* inertAnimation = entry.effect.get(); |
OwnPtrWillBeRawPtr<AnimationEventDelegate> eventDelegate = adoptPtrWillBeNoop(new AnimationEventDelegate(element, entry.name)); |
- RefPtrWillBeRawPtr<Animation> animation = Animation::create(element, inertAnimation->effect(), inertAnimation->specifiedTiming(), Animation::DefaultPriority, eventDelegate.release()); |
- animation->setName(inertAnimation->name()); |
- RefPtrWillBeRawPtr<AnimationPlayer> player = element->document().timeline().play(animation.get()); |
+ RefPtrWillBeRawPtr<KeyframeEffect> effect = KeyframeEffect::create(element, inertAnimation->effect(), inertAnimation->specifiedTiming(), KeyframeEffect::DefaultPriority, eventDelegate.release()); |
+ effect->setName(inertAnimation->name()); |
+ RefPtrWillBeRawPtr<Animation> animation = element->document().timeline().play(effect.get()); |
if (inertAnimation->paused()) |
- player->pause(); |
- player->update(TimingUpdateOnDemand); |
+ animation->pause(); |
+ animation->update(TimingUpdateOnDemand); |
- m_animations.set(entry.name, adoptRefWillBeNoop(new RunningAnimation(player, entry))); |
+ m_animations.set(entry.name, adoptRefWillBeNoop(new RunningAnimation(animation, entry))); |
} |
// Transitions that are run on the compositor only update main-thread state |
@@ -374,30 +374,30 @@ void CSSAnimations::maybeApplyPendingUpdate(Element* element) |
// be when transitions are retargeted. Instead of triggering complete style |
// recalculation, we find these cases by searching for new transitions that |
// have matching cancelled animation property IDs on the compositor. |
- WillBeHeapHashMap<CSSPropertyID, std::pair<RefPtrWillBeMember<Animation>, double>> retargetedCompositorTransitions; |
+ WillBeHeapHashMap<CSSPropertyID, std::pair<RefPtrWillBeMember<KeyframeEffect>, double>> retargetedCompositorTransitions; |
for (CSSPropertyID id : update->cancelledTransitions()) { |
ASSERT(m_transitions.contains(id)); |
- RefPtrWillBeRawPtr<AnimationPlayer> player = m_transitions.take(id).player; |
- Animation* animation = toAnimation(player->source()); |
- if (animation->hasActiveAnimationsOnCompositor(id) && update->newTransitions().find(id) != update->newTransitions().end() && !player->limited()) |
- retargetedCompositorTransitions.add(id, std::pair<RefPtrWillBeMember<Animation>, double>(animation, player->startTimeInternal())); |
- player->cancel(); |
+ RefPtrWillBeRawPtr<Animation> animation = m_transitions.take(id).animation; |
+ KeyframeEffect* effect = toKeyframeEffect(animation->source()); |
+ if (effect->hasActiveAnimationsOnCompositor(id) && update->newTransitions().find(id) != update->newTransitions().end() && !animation->limited()) |
+ retargetedCompositorTransitions.add(id, std::pair<RefPtrWillBeMember<KeyframeEffect>, double>(effect, animation->startTimeInternal())); |
+ animation->cancel(); |
// after cancelation, transitions must be downgraded or they'll fail |
// to be considered when retriggering themselves. This can happen if |
- // the transition is captured through getAnimationPlayers then played. |
- if (player->source() && player->source()->isAnimation()) |
- toAnimation(player->source())->downgradeToNormalAnimation(); |
- player->update(TimingUpdateOnDemand); |
+ // the transition is captured through getAnimations then played. |
+ if (animation->source() && animation->source()->isAnimation()) |
+ toKeyframeEffect(animation->source())->downgradeToNormal(); |
+ animation->update(TimingUpdateOnDemand); |
} |
for (CSSPropertyID id : update->finishedTransitions()) { |
// This transition can also be cancelled and finished at the same time |
if (m_transitions.contains(id)) { |
- RefPtrWillBeRawPtr<AnimationPlayer> player = m_transitions.take(id).player; |
+ RefPtrWillBeRawPtr<Animation> animation = m_transitions.take(id).animation; |
// Transition must be downgraded |
- if (player->source() && player->source()->isAnimation()) |
- toAnimation(player->source())->downgradeToNormalAnimation(); |
+ if (animation->source() && animation->source()->isAnimation()) |
+ toKeyframeEffect(animation->source())->downgradeToNormal(); |
} |
} |
@@ -409,14 +409,14 @@ void CSSAnimations::maybeApplyPendingUpdate(Element* element) |
runningTransition.to = newTransition.to; |
CSSPropertyID id = newTransition.id; |
- InertAnimation* inertAnimation = newTransition.animation.get(); |
+ InertAnimation* inertAnimation = newTransition.effect.get(); |
OwnPtrWillBeRawPtr<TransitionEventDelegate> eventDelegate = adoptPtrWillBeNoop(new TransitionEventDelegate(element, newTransition.eventId)); |
- RefPtrWillBeRawPtr<AnimationEffect> effect = inertAnimation->effect(); |
+ RefPtrWillBeRawPtr<EffectModel> effect = inertAnimation->effect(); |
if (retargetedCompositorTransitions.contains(id)) { |
- const std::pair<RefPtrWillBeMember<Animation>, double>& oldTransition = retargetedCompositorTransitions.get(id); |
- RefPtrWillBeRawPtr<Animation> oldAnimation = oldTransition.first; |
+ const std::pair<RefPtrWillBeMember<KeyframeEffect>, double>& oldTransition = retargetedCompositorTransitions.get(id); |
+ RefPtrWillBeRawPtr<KeyframeEffect> oldAnimation = oldTransition.first; |
double oldStartTime = oldTransition.second; |
double inheritedTime = isNull(oldStartTime) ? 0 : element->document().timeline().currentTimeInternal() - oldStartTime; |
@@ -440,11 +440,11 @@ void CSSAnimations::maybeApplyPendingUpdate(Element* element) |
} |
} |
- RefPtrWillBeRawPtr<Animation> transition = Animation::create(element, effect, inertAnimation->specifiedTiming(), Animation::TransitionPriority, eventDelegate.release()); |
+ RefPtrWillBeRawPtr<KeyframeEffect> transition = KeyframeEffect::create(element, effect, inertAnimation->specifiedTiming(), KeyframeEffect::TransitionPriority, eventDelegate.release()); |
transition->setName(inertAnimation->name()); |
- RefPtrWillBeRawPtr<AnimationPlayer> player = element->document().timeline().play(transition.get()); |
- player->update(TimingUpdateOnDemand); |
- runningTransition.player = player; |
+ RefPtrWillBeRawPtr<Animation> animation = element->document().timeline().play(transition.get()); |
+ animation->update(TimingUpdateOnDemand); |
+ runningTransition.animation = animation; |
m_transitions.set(id, runningTransition); |
ASSERT(id != CSSPropertyInvalid); |
Platform::current()->histogramSparse("WebCore.Animation.CSSProperties", UseCounter::mapCSSPropertyIdToCSSSampleIdForHistogram(id)); |
@@ -575,9 +575,9 @@ void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const |
CSSPropertyID id = entry.key; |
if (!anyTransitionHadTransitionAll && !animationStyleRecalc && !listedProperties.get(id)) { |
// TODO: Figure out why this fails on Chrome OS login page. crbug.com/365507 |
- // ASSERT(player.playStateInternal() == AnimationPlayer::Finished || !(elementAnimations && elementAnimations->isAnimationStyleChange())); |
+ // ASSERT(animation.playStateInternal() == Animation::Finished || !(elementAnimations && elementAnimations->isAnimationStyleChange())); |
update->cancelTransition(id); |
- } else if (entry.value.player->finishedInternal()) { |
+ } else if (entry.value.animation->finishedInternal()) { |
update->finishTransition(id); |
} |
} |
@@ -587,13 +587,13 @@ void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const |
void CSSAnimations::cancel() |
{ |
for (const auto& entry : m_animations) { |
- entry.value->player->cancel(); |
- entry.value->player->update(TimingUpdateOnDemand); |
+ entry.value->animation->cancel(); |
+ entry.value->animation->update(TimingUpdateOnDemand); |
} |
for (const auto& entry : m_transitions) { |
- entry.value.player->cancel(); |
- entry.value.player->update(TimingUpdateOnDemand); |
+ entry.value.animation->cancel(); |
+ entry.value.animation->update(TimingUpdateOnDemand); |
} |
m_animations.clear(); |
@@ -606,19 +606,19 @@ void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate* u |
ElementAnimations* elementAnimations = animatingElement ? animatingElement->elementAnimations() : nullptr; |
AnimationStack* animationStack = elementAnimations ? &elementAnimations->defaultStack() : nullptr; |
- if (update->newAnimations().isEmpty() && update->suppressedAnimationAnimationPlayers().isEmpty()) { |
- ActiveInterpolationMap activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, 0, 0, Animation::DefaultPriority, timelineCurrentTime)); |
+ if (update->newAnimations().isEmpty() && update->suppressedAnimationAnimations().isEmpty()) { |
+ ActiveInterpolationMap activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, 0, 0, KeyframeEffect::DefaultPriority, timelineCurrentTime)); |
update->adoptActiveInterpolationsForAnimations(activeInterpolationsForAnimations); |
return; |
} |
- WillBeHeapVector<RawPtrWillBeMember<InertAnimation>> newAnimations; |
+ WillBeHeapVector<RawPtrWillBeMember<InertAnimation>> newEffects; |
for (const auto& newAnimation : update->newAnimations()) |
- newAnimations.append(newAnimation.animation.get()); |
+ newEffects.append(newAnimation.effect.get()); |
for (const auto& updatedAnimation : update->animationsWithUpdates()) |
- newAnimations.append(updatedAnimation.animation.get()); // Animations with updates use a temporary InertAnimation for the current frame. |
+ newEffects.append(updatedAnimation.effect.get()); // Animations with updates use a temporary InertAnimation for the current frame. |
- ActiveInterpolationMap activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, &newAnimations, &update->suppressedAnimationAnimationPlayers(), Animation::DefaultPriority, timelineCurrentTime)); |
+ ActiveInterpolationMap activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, &newEffects, &update->suppressedAnimationAnimations(), KeyframeEffect::DefaultPriority, timelineCurrentTime)); |
update->adoptActiveInterpolationsForAnimations(activeInterpolationsForAnimations); |
} |
@@ -629,23 +629,23 @@ void CSSAnimations::calculateTransitionActiveInterpolations(CSSAnimationUpdate* |
ActiveInterpolationMap activeInterpolationsForTransitions; |
if (update->newTransitions().isEmpty() && update->cancelledTransitions().isEmpty()) { |
- activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, 0, 0, Animation::TransitionPriority, timelineCurrentTime); |
+ activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, 0, 0, KeyframeEffect::TransitionPriority, timelineCurrentTime); |
} else { |
WillBeHeapVector<RawPtrWillBeMember<InertAnimation>> newTransitions; |
for (const auto& entry : update->newTransitions()) |
- newTransitions.append(entry.value.animation.get()); |
+ newTransitions.append(entry.value.effect.get()); |
- WillBeHeapHashSet<RawPtrWillBeMember<const AnimationPlayer>> cancelledAnimationPlayers; |
+ WillBeHeapHashSet<RawPtrWillBeMember<const Animation>> cancelledAnimations; |
if (!update->cancelledTransitions().isEmpty()) { |
ASSERT(elementAnimations); |
const TransitionMap& transitionMap = elementAnimations->cssAnimations().m_transitions; |
for (CSSPropertyID id : update->cancelledTransitions()) { |
ASSERT(transitionMap.contains(id)); |
- cancelledAnimationPlayers.add(transitionMap.get(id).player.get()); |
+ cancelledAnimations.add(transitionMap.get(id).animation.get()); |
} |
} |
- activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, &newTransitions, &cancelledAnimationPlayers, Animation::TransitionPriority, timelineCurrentTime); |
+ activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, &newTransitions, &cancelledAnimations, KeyframeEffect::TransitionPriority, timelineCurrentTime); |
} |
// Properties being animated by animations don't get values from transitions applied. |
@@ -670,25 +670,25 @@ void CSSAnimations::AnimationEventDelegate::maybeDispatch(Document::ListenerType |
} |
} |
-bool CSSAnimations::AnimationEventDelegate::requiresIterationEvents(const AnimationNode& animationNode) |
+bool CSSAnimations::AnimationEventDelegate::requiresIterationEvents(const AnimationEffect& animationNode) |
{ |
return document().hasListenerType(Document::ANIMATIONITERATION_LISTENER); |
} |
-void CSSAnimations::AnimationEventDelegate::onEventCondition(const AnimationNode& animationNode) |
+void CSSAnimations::AnimationEventDelegate::onEventCondition(const AnimationEffect& animationNode) |
{ |
- const AnimationNode::Phase currentPhase = animationNode.phase(); |
+ const AnimationEffect::Phase currentPhase = animationNode.phase(); |
const double currentIteration = animationNode.currentIteration(); |
if (m_previousPhase != currentPhase |
- && (currentPhase == AnimationNode::PhaseActive || currentPhase == AnimationNode::PhaseAfter) |
- && (m_previousPhase == AnimationNode::PhaseNone || m_previousPhase == AnimationNode::PhaseBefore)) { |
+ && (currentPhase == AnimationEffect::PhaseActive || currentPhase == AnimationEffect::PhaseAfter) |
+ && (m_previousPhase == AnimationEffect::PhaseNone || m_previousPhase == AnimationEffect::PhaseBefore)) { |
const double startDelay = animationNode.specifiedTiming().startDelay; |
const double elapsedTime = startDelay < 0 ? -startDelay : 0; |
maybeDispatch(Document::ANIMATIONSTART_LISTENER, EventTypeNames::animationstart, elapsedTime); |
} |
- if (currentPhase == AnimationNode::PhaseActive && m_previousPhase == currentPhase && m_previousIteration != currentIteration) { |
+ if (currentPhase == AnimationEffect::PhaseActive && m_previousPhase == currentPhase && m_previousIteration != currentIteration) { |
// We fire only a single event for all iterations thast terminate |
// between a single pair of samples. See http://crbug.com/275263. For |
// compatibility with the existing implementation, this event uses |
@@ -698,7 +698,7 @@ void CSSAnimations::AnimationEventDelegate::onEventCondition(const AnimationNode |
maybeDispatch(Document::ANIMATIONITERATION_LISTENER, EventTypeNames::animationiteration, elapsedTime); |
} |
- if (currentPhase == AnimationNode::PhaseAfter && m_previousPhase != AnimationNode::PhaseAfter) |
+ if (currentPhase == AnimationEffect::PhaseAfter && m_previousPhase != AnimationEffect::PhaseAfter) |
maybeDispatch(Document::ANIMATIONEND_LISTENER, EventTypeNames::animationend, animationNode.activeDurationInternal()); |
m_previousPhase = currentPhase; |
@@ -708,7 +708,7 @@ void CSSAnimations::AnimationEventDelegate::onEventCondition(const AnimationNode |
DEFINE_TRACE(CSSAnimations::AnimationEventDelegate) |
{ |
visitor->trace(m_animationTarget); |
- AnimationNode::EventDelegate::trace(visitor); |
+ AnimationEffect::EventDelegate::trace(visitor); |
} |
EventTarget* CSSAnimations::TransitionEventDelegate::eventTarget() const |
@@ -716,10 +716,10 @@ EventTarget* CSSAnimations::TransitionEventDelegate::eventTarget() const |
return EventPath::eventTargetRespectingTargetRules(*m_transitionTarget); |
} |
-void CSSAnimations::TransitionEventDelegate::onEventCondition(const AnimationNode& animationNode) |
+void CSSAnimations::TransitionEventDelegate::onEventCondition(const AnimationEffect& animationNode) |
{ |
- const AnimationNode::Phase currentPhase = animationNode.phase(); |
- if (currentPhase == AnimationNode::PhaseAfter && currentPhase != m_previousPhase && document().hasListenerType(Document::TRANSITIONEND_LISTENER)) { |
+ const AnimationEffect::Phase currentPhase = animationNode.phase(); |
+ if (currentPhase == AnimationEffect::PhaseAfter && currentPhase != m_previousPhase && document().hasListenerType(Document::TRANSITIONEND_LISTENER)) { |
String propertyName = getPropertyNameString(m_property); |
const Timing& timing = animationNode.specifiedTiming(); |
double elapsedTime = timing.iterationDuration; |
@@ -736,7 +736,7 @@ void CSSAnimations::TransitionEventDelegate::onEventCondition(const AnimationNod |
DEFINE_TRACE(CSSAnimations::TransitionEventDelegate) |
{ |
visitor->trace(m_transitionTarget); |
- AnimationNode::EventDelegate::trace(visitor); |
+ AnimationEffect::EventDelegate::trace(visitor); |
} |
const StylePropertyShorthand& CSSAnimations::propertiesForTransitionAll() |
@@ -761,7 +761,7 @@ const StylePropertyShorthand& CSSAnimations::propertiesForTransitionAll() |
return propertyShorthand; |
} |
-// Animation properties are not allowed to be affected by Web Animations. |
+// KeyframeEffect properties are not allowed to be affected by Web Animations. |
// http://dev.w3.org/fxtf/web-animations/#not-animatable |
bool CSSAnimations::isAllowedAnimation(CSSPropertyID property) |
{ |
@@ -804,7 +804,7 @@ DEFINE_TRACE(CSSAnimationUpdate) |
visitor->trace(m_activeInterpolationsForAnimations); |
visitor->trace(m_activeInterpolationsForTransitions); |
visitor->trace(m_newAnimations); |
- visitor->trace(m_suppressedAnimationPlayers); |
+ visitor->trace(m_suppressedAnimations); |
visitor->trace(m_animationsWithUpdates); |
visitor->trace(m_animationsWithStyleUpdates); |
#endif |