Index: Source/core/animation/css/CSSAnimations.cpp |
diff --git a/Source/core/animation/css/CSSAnimations.cpp b/Source/core/animation/css/CSSAnimations.cpp |
index 7755f01a943c7261fe3d083049e0ec09715d5521..f4a08afa5050a7e6cfcc43e013b3ee684cbe69c4 100644 |
--- a/Source/core/animation/css/CSSAnimations.cpp |
+++ b/Source/core/animation/css/CSSAnimations.cpp |
@@ -324,9 +324,9 @@ PassOwnPtr<CSSAnimationUpdate> CSSAnimations::calculateUpdate(Element* element, |
{ |
OwnPtr<CSSAnimationUpdate> update = adoptPtr(new CSSAnimationUpdate()); |
calculateAnimationUpdate(update.get(), element, parentElement, style, parentStyle, resolver); |
- calculateAnimationActiveInterpolations(update.get(), element); |
+ calculateAnimationActiveInterpolations(update.get(), element, parentElement.document().timeline().currentTime()); |
calculateTransitionUpdate(update.get(), element, style); |
- calculateTransitionActiveInterpolations(update.get(), element); |
+ calculateTransitionActiveInterpolations(update.get(), element, parentElement.document().transitionTimeline().currentTime()); |
return update->isEmpty() ? nullptr : update.release(); |
} |
@@ -653,13 +653,13 @@ void CSSAnimations::cancel() |
m_pendingUpdate = nullptr; |
} |
-void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate* update, const Element* element) |
+void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate* update, const Element* element, double timelineCurrentTime) |
{ |
ActiveAnimations* activeAnimations = element ? element->activeAnimations() : 0; |
AnimationStack* animationStack = activeAnimations ? &activeAnimations->defaultStack() : 0; |
if (update->newAnimations().isEmpty() && update->cancelledAnimationAnimationPlayers().isEmpty()) { |
- HashMap<CSSPropertyID, RefPtr<Interpolation> > activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, 0, 0, Animation::DefaultPriority)); |
+ HashMap<CSSPropertyID, RefPtr<Interpolation> > activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, 0, 0, Animation::DefaultPriority, timelineCurrentTime)); |
update->adoptActiveInterpolationsForAnimations(activeInterpolationsForAnimations); |
return; |
} |
@@ -670,18 +670,18 @@ void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate* u |
for (HashSet<RefPtr<InertAnimation> >::const_iterator animationsIter = animations.begin(); animationsIter != animations.end(); ++animationsIter) |
newAnimations.append(animationsIter->get()); |
} |
- HashMap<CSSPropertyID, RefPtr<Interpolation> > activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, &newAnimations, &update->cancelledAnimationAnimationPlayers(), Animation::DefaultPriority)); |
+ HashMap<CSSPropertyID, RefPtr<Interpolation> > activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, &newAnimations, &update->cancelledAnimationAnimationPlayers(), Animation::DefaultPriority, timelineCurrentTime)); |
update->adoptActiveInterpolationsForAnimations(activeInterpolationsForAnimations); |
} |
-void CSSAnimations::calculateTransitionActiveInterpolations(CSSAnimationUpdate* update, const Element* element) |
+void CSSAnimations::calculateTransitionActiveInterpolations(CSSAnimationUpdate* update, const Element* element, double timelineCurrentTime) |
{ |
ActiveAnimations* activeAnimations = element ? element->activeAnimations() : 0; |
AnimationStack* animationStack = activeAnimations ? &activeAnimations->defaultStack() : 0; |
HashMap<CSSPropertyID, RefPtr<Interpolation> > activeInterpolationsForTransitions; |
if (update->newTransitions().isEmpty() && update->cancelledTransitions().isEmpty()) { |
- activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, 0, 0, Animation::TransitionPriority); |
+ activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, 0, 0, Animation::TransitionPriority, timelineCurrentTime); |
} else { |
Vector<InertAnimation*> newTransitions; |
for (CSSAnimationUpdate::NewTransitionMap::const_iterator iter = update->newTransitions().begin(); iter != update->newTransitions().end(); ++iter) |
@@ -697,7 +697,7 @@ void CSSAnimations::calculateTransitionActiveInterpolations(CSSAnimationUpdate* |
} |
} |
- activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, &newTransitions, &cancelledAnimationPlayers, Animation::TransitionPriority); |
+ activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, &newTransitions, &cancelledAnimationPlayers, Animation::TransitionPriority, timelineCurrentTime); |
} |
// Properties being animated by animations don't get values from transitions applied. |