| Index: Source/core/animation/css/CSSAnimations.cpp
|
| diff --git a/Source/core/animation/css/CSSAnimations.cpp b/Source/core/animation/css/CSSAnimations.cpp
|
| index 7cefadf2a2fa333ca1faa86d5fe86a35b646caea..d58fa9b27908c8f37f0d06610f9ff282941a0526 100644
|
| --- a/Source/core/animation/css/CSSAnimations.cpp
|
| +++ b/Source/core/animation/css/CSSAnimations.cpp
|
| @@ -349,9 +349,9 @@ PassOwnPtr<CSSAnimationUpdate> CSSAnimations::calculateUpdate(Element* element,
|
| {
|
| OwnPtr<CSSAnimationUpdate> update = adoptPtr(new CSSAnimationUpdate());
|
| calculateAnimationUpdate(update.get(), element, parentElement, style, parentStyle, resolver);
|
| - calculateAnimationCompositableValues(update.get(), element);
|
| + calculateAnimationActiveInterpolations(update.get(), element);
|
| calculateTransitionUpdate(update.get(), element, style);
|
| - calculateTransitionCompositableValues(update.get(), element);
|
| + calculateTransitionActiveInterpolations(update.get(), element);
|
| return update->isEmpty() ? nullptr : update.release();
|
| }
|
|
|
| @@ -433,13 +433,13 @@ void CSSAnimations::calculateAnimationUpdate(CSSAnimationUpdate* update, Element
|
| void CSSAnimations::maybeApplyPendingUpdate(Element* element)
|
| {
|
| if (!m_pendingUpdate) {
|
| - m_previousCompositableValuesForAnimations.clear();
|
| + m_previousActiveInterpolationsForAnimations.clear();
|
| return;
|
| }
|
|
|
| OwnPtr<CSSAnimationUpdate> update = m_pendingUpdate.release();
|
|
|
| - m_previousCompositableValuesForAnimations.swap(update->compositableValuesForAnimations());
|
| + m_previousActiveInterpolationsForAnimations.swap(update->activeInterpolationsForAnimations());
|
|
|
| // FIXME: cancelling, pausing, unpausing animations all query compositingState, which is not necessarily up to date here
|
| // since we call this from recalc style.
|
| @@ -524,10 +524,9 @@ void CSSAnimations::maybeApplyPendingUpdate(Element* element)
|
| KeyframeEffectModel::KeyframeVector newFrames;
|
| newFrames.append(frames[0]->clone());
|
| newFrames[0]->clearPropertyValue(id);
|
| - ASSERT(oldAnimation->compositableValues()->size() == 1);
|
| - const AnimationEffect::CompositableValue* compositableValue = oldAnimation->compositableValues()->at(0).second.get();
|
| - ASSERT(!compositableValue->dependsOnUnderlyingValue());
|
| - newFrames[0]->setPropertyValue(id, compositableValue->compositeOnto(0).get());
|
| + ASSERT(oldAnimation->activeInterpolations()->size() == 1);
|
| + const AnimatableValue* value = toLegacyStyleInterpolation(oldAnimation->activeInterpolations()->at(0).get())->currentValue();
|
| + newFrames[0]->setPropertyValue(id, value);
|
| newFrames.append(frames[1]->clone());
|
| effect = KeyframeEffectModel::create(newFrames);
|
| }
|
| @@ -643,8 +642,8 @@ void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const
|
|
|
| // FIXME: We should transition if an !important property changes even when an animation is running,
|
| // but this is a bit hard to do with the current applyMatchedProperties system.
|
| - if (!update->compositableValuesForAnimations().contains(id)
|
| - && (!activeAnimations || !activeAnimations->cssAnimations().m_previousCompositableValuesForAnimations.contains(id))) {
|
| + if (!update->activeInterpolationsForAnimations().contains(id)
|
| + && (!activeAnimations || !activeAnimations->cssAnimations().m_previousActiveInterpolationsForAnimations.contains(id))) {
|
| calculateTransitionUpdateForProperty(id, anim, oldStyle, style, activeTransitions, update, element);
|
| }
|
| }
|
| @@ -679,14 +678,14 @@ void CSSAnimations::cancel()
|
| m_pendingUpdate = nullptr;
|
| }
|
|
|
| -void CSSAnimations::calculateAnimationCompositableValues(CSSAnimationUpdate* update, const Element* element)
|
| +void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate* update, const Element* element)
|
| {
|
| ActiveAnimations* activeAnimations = element ? element->activeAnimations() : 0;
|
| AnimationStack* animationStack = activeAnimations ? &activeAnimations->defaultStack() : 0;
|
|
|
| if (update->newAnimations().isEmpty() && update->cancelledAnimationPlayers().isEmpty()) {
|
| - AnimationEffect::CompositableValueMap compositableValuesForAnimations(AnimationStack::compositableValues(animationStack, 0, 0, Animation::DefaultPriority));
|
| - update->adoptCompositableValuesForAnimations(compositableValuesForAnimations);
|
| + HashMap<CSSPropertyID, RefPtr<Interpolation> > activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, 0, 0, Animation::DefaultPriority));
|
| + update->adoptActiveInterpolationsForAnimations(activeInterpolationsForAnimations);
|
| return;
|
| }
|
|
|
| @@ -696,18 +695,18 @@ void CSSAnimations::calculateAnimationCompositableValues(CSSAnimationUpdate* upd
|
| for (HashSet<RefPtr<InertAnimation> >::const_iterator animationsIter = animations.begin(); animationsIter != animations.end(); ++animationsIter)
|
| newAnimations.append(animationsIter->get());
|
| }
|
| - AnimationEffect::CompositableValueMap compositableValuesForAnimations(AnimationStack::compositableValues(animationStack, &newAnimations, &update->cancelledAnimationPlayers(), Animation::DefaultPriority));
|
| - update->adoptCompositableValuesForAnimations(compositableValuesForAnimations);
|
| + HashMap<CSSPropertyID, RefPtr<Interpolation> > activeInterpolationsForAnimations(AnimationStack::activeInterpolations(animationStack, &newAnimations, &update->cancelledAnimationPlayers(), Animation::DefaultPriority));
|
| + update->adoptActiveInterpolationsForAnimations(activeInterpolationsForAnimations);
|
| }
|
|
|
| -void CSSAnimations::calculateTransitionCompositableValues(CSSAnimationUpdate* update, const Element* element)
|
| +void CSSAnimations::calculateTransitionActiveInterpolations(CSSAnimationUpdate* update, const Element* element)
|
| {
|
| ActiveAnimations* activeAnimations = element ? element->activeAnimations() : 0;
|
| AnimationStack* animationStack = activeAnimations ? &activeAnimations->defaultStack() : 0;
|
|
|
| - AnimationEffect::CompositableValueMap compositableValuesForTransitions;
|
| + HashMap<CSSPropertyID, RefPtr<Interpolation> > activeInterpolationsForTransitions;
|
| if (update->newTransitions().isEmpty() && update->cancelledTransitions().isEmpty()) {
|
| - compositableValuesForTransitions = AnimationStack::compositableValues(animationStack, 0, 0, Animation::TransitionPriority);
|
| + activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, 0, 0, Animation::TransitionPriority);
|
| } else {
|
| Vector<InertAnimation*> newTransitions;
|
| for (CSSAnimationUpdate::NewTransitionMap::const_iterator iter = update->newTransitions().begin(); iter != update->newTransitions().end(); ++iter)
|
| @@ -723,15 +722,15 @@ void CSSAnimations::calculateTransitionCompositableValues(CSSAnimationUpdate* up
|
| }
|
| }
|
|
|
| - compositableValuesForTransitions = AnimationStack::compositableValues(animationStack, &newTransitions, &cancelledPlayers, Animation::TransitionPriority);
|
| + activeInterpolationsForTransitions = AnimationStack::activeInterpolations(animationStack, &newTransitions, &cancelledPlayers, Animation::TransitionPriority);
|
| }
|
|
|
| // Properties being animated by animations don't get values from transitions applied.
|
| - if (!update->compositableValuesForAnimations().isEmpty() && !compositableValuesForTransitions.isEmpty()) {
|
| - for (AnimationEffect::CompositableValueMap::const_iterator iter = update->compositableValuesForAnimations().begin(); iter != update->compositableValuesForAnimations().end(); ++iter)
|
| - compositableValuesForTransitions.remove(iter->key);
|
| + if (!update->activeInterpolationsForAnimations().isEmpty() && !activeInterpolationsForTransitions.isEmpty()) {
|
| + for (HashMap<CSSPropertyID, RefPtr<Interpolation> >::const_iterator iter = update->activeInterpolationsForAnimations().begin(); iter != update->activeInterpolationsForAnimations().end(); ++iter)
|
| + activeInterpolationsForTransitions.remove(iter->key);
|
| }
|
| - update->adoptCompositableValuesForTransitions(compositableValuesForTransitions);
|
| + update->adoptActiveInterpolationsForTransitions(activeInterpolationsForTransitions);
|
| }
|
|
|
| void CSSAnimations::AnimationEventDelegate::maybeDispatch(Document::ListenerType listenerType, const AtomicString& eventName, double elapsedTime)
|
|
|