| Index: Source/core/animation/css/CSSAnimations.cpp
|
| diff --git a/Source/core/animation/css/CSSAnimations.cpp b/Source/core/animation/css/CSSAnimations.cpp
|
| index f2d984ec0e741059dd33c9fd4ca4a41d6b56cb34..7ef17650d7e287147efd9aa61ef85e1ff87f13c9 100644
|
| --- a/Source/core/animation/css/CSSAnimations.cpp
|
| +++ b/Source/core/animation/css/CSSAnimations.cpp
|
| @@ -81,11 +81,11 @@ CSSPropertyID propertyForAnimation(CSSPropertyID property)
|
| return property;
|
| }
|
|
|
| -static void resolveKeyframes(StyleResolver* resolver, Element* element, const Element& parentElement, const RenderStyle& style, RenderStyle* parentStyle, const AtomicString& name, TimingFunction* defaultTimingFunction,
|
| +static void resolveKeyframes(StyleResolver* resolver, const Element* animatingElement, Element& element, const RenderStyle& style, RenderStyle* parentStyle, const AtomicString& name, TimingFunction* defaultTimingFunction,
|
| AnimatableValueKeyframeVector& keyframes)
|
| {
|
| - // When the element is null, use its parent for scoping purposes.
|
| - const Element* elementForScoping = element ? element : &parentElement;
|
| + // When the animating element is null, use its parent for scoping purposes.
|
| + const Element* elementForScoping = animatingElement ? animatingElement : &element;
|
| const StyleRuleKeyframes* keyframesRule = CSSAnimations::matchScopedKeyframesRule(resolver, elementForScoping, name.impl());
|
| if (!keyframesRule)
|
| return;
|
| @@ -98,7 +98,6 @@ static void resolveKeyframes(StyleResolver* resolver, Element* element, const El
|
| PropertySet specifiedPropertiesForUseCounter;
|
| for (size_t i = 0; i < styleKeyframes.size(); ++i) {
|
| const StyleKeyframe* styleKeyframe = styleKeyframes[i].get();
|
| - // It's OK to pass a null element here.
|
| RefPtr<RenderStyle> keyframeStyle = resolver->styleForKeyframe(element, style, parentStyle, styleKeyframe, name);
|
| RefPtrWillBeRawPtr<AnimatableValueKeyframe> keyframe = AnimatableValueKeyframe::create();
|
| const Vector<double>& offsets = styleKeyframe->keys();
|
| @@ -221,19 +220,19 @@ CSSAnimations::CSSAnimations()
|
| {
|
| }
|
|
|
| -PassOwnPtrWillBeRawPtr<CSSAnimationUpdate> CSSAnimations::calculateUpdate(Element* element, const Element& parentElement, const RenderStyle& style, RenderStyle* parentStyle, StyleResolver* resolver)
|
| +PassOwnPtrWillBeRawPtr<CSSAnimationUpdate> CSSAnimations::calculateUpdate(const Element* animatingElement, Element& element, const RenderStyle& style, RenderStyle* parentStyle, StyleResolver* resolver)
|
| {
|
| OwnPtrWillBeRawPtr<CSSAnimationUpdate> update = adoptPtrWillBeNoop(new CSSAnimationUpdate());
|
| - calculateAnimationUpdate(update.get(), element, parentElement, style, parentStyle, resolver);
|
| - calculateAnimationActiveInterpolations(update.get(), element, parentElement.document().timeline().currentTimeInternal());
|
| - calculateTransitionUpdate(update.get(), element, style);
|
| - calculateTransitionActiveInterpolations(update.get(), element, parentElement.document().timeline().currentTimeInternal());
|
| + calculateAnimationUpdate(update.get(), animatingElement, element, style, parentStyle, resolver);
|
| + calculateAnimationActiveInterpolations(update.get(), animatingElement, element.document().timeline().currentTimeInternal());
|
| + calculateTransitionUpdate(update.get(), animatingElement, style);
|
| + calculateTransitionActiveInterpolations(update.get(), animatingElement, element.document().timeline().currentTimeInternal());
|
| return update->isEmpty() ? nullptr : update.release();
|
| }
|
|
|
| -void CSSAnimations::calculateAnimationUpdate(CSSAnimationUpdate* update, Element* element, const Element& parentElement, const RenderStyle& style, RenderStyle* parentStyle, StyleResolver* resolver)
|
| +void CSSAnimations::calculateAnimationUpdate(CSSAnimationUpdate* update, const Element* animatingElement, Element& element, const RenderStyle& style, RenderStyle* parentStyle, StyleResolver* resolver)
|
| {
|
| - const ActiveAnimations* activeAnimations = element ? element->activeAnimations() : 0;
|
| + const ActiveAnimations* activeAnimations = animatingElement ? animatingElement->activeAnimations() : 0;
|
|
|
| #if !ENABLE(ASSERT)
|
| // If we're in an animation style change, no animations can have started, been cancelled or changed play state.
|
| @@ -278,7 +277,7 @@ void CSSAnimations::calculateAnimationUpdate(CSSAnimationUpdate* update, Element
|
| RefPtr<TimingFunction> keyframeTimingFunction = timing.timingFunction;
|
| timing.timingFunction = Timing::defaults().timingFunction;
|
| AnimatableValueKeyframeVector resolvedKeyframes;
|
| - resolveKeyframes(resolver, element, parentElement, style, parentStyle, animationName, keyframeTimingFunction.get(), resolvedKeyframes);
|
| + resolveKeyframes(resolver, animatingElement, element, style, parentStyle, animationName, keyframeTimingFunction.get(), resolvedKeyframes);
|
| if (!resolvedKeyframes.isEmpty()) {
|
| ASSERT(!activeAnimations || !activeAnimations->isAnimationStyleChange());
|
| update->startAnimation(animationName, InertAnimation::create(AnimatableValueKeyframeEffectModel::create(resolvedKeyframes), timing, isPaused));
|
| @@ -450,12 +449,12 @@ void CSSAnimations::calculateTransitionUpdateForProperty(CSSPropertyID id, CSSPr
|
| ASSERT(!element->activeAnimations() || !element->activeAnimations()->isAnimationStyleChange());
|
| }
|
|
|
| -void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const Element* element, const RenderStyle& style)
|
| +void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const Element* animatingElement, const RenderStyle& style)
|
| {
|
| - if (!element)
|
| + if (!animatingElement)
|
| return;
|
|
|
| - ActiveAnimations* activeAnimations = element->activeAnimations();
|
| + ActiveAnimations* activeAnimations = animatingElement->activeAnimations();
|
| const TransitionMap* activeTransitions = activeAnimations ? &activeAnimations->cssAnimations().m_transitions : 0;
|
| const CSSTransitionData* transitionData = style.transitions();
|
|
|
| @@ -469,7 +468,7 @@ void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const
|
|
|
| BitArray<numCSSProperties> listedProperties;
|
| bool anyTransitionHadTransitionAll = false;
|
| - const RenderObject* renderer = element->renderer();
|
| + const RenderObject* renderer = animatingElement->renderer();
|
| if (!animationStyleRecalc && style.display() != NONE && renderer && renderer->style() && transitionData) {
|
| const RenderStyle& oldStyle = *renderer->style();
|
|
|
| @@ -502,7 +501,7 @@ void CSSAnimations::calculateTransitionUpdate(CSSAnimationUpdate* update, const
|
| // but this is a bit hard to do with the current applyMatchedProperties system.
|
| if (!update->activeInterpolationsForAnimations().contains(id)
|
| && (!activeAnimations || !activeAnimations->cssAnimations().m_previousActiveInterpolationsForAnimations.contains(id))) {
|
| - calculateTransitionUpdateForProperty(id, eventId, *transitionData, i, oldStyle, style, activeTransitions, update, element);
|
| + calculateTransitionUpdateForProperty(id, eventId, *transitionData, i, oldStyle, style, activeTransitions, update, animatingElement);
|
| }
|
| }
|
| }
|
| @@ -538,9 +537,9 @@ void CSSAnimations::cancel()
|
| m_pendingUpdate = nullptr;
|
| }
|
|
|
| -void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate* update, const Element* element, double timelineCurrentTime)
|
| +void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate* update, const Element* animatingElement, double timelineCurrentTime)
|
| {
|
| - ActiveAnimations* activeAnimations = element ? element->activeAnimations() : 0;
|
| + ActiveAnimations* activeAnimations = animatingElement ? animatingElement->activeAnimations() : 0;
|
| AnimationStack* animationStack = activeAnimations ? &activeAnimations->defaultStack() : 0;
|
|
|
| if (update->newAnimations().isEmpty() && update->cancelledAnimationAnimationPlayers().isEmpty()) {
|
| @@ -557,9 +556,9 @@ void CSSAnimations::calculateAnimationActiveInterpolations(CSSAnimationUpdate* u
|
| update->adoptActiveInterpolationsForAnimations(activeInterpolationsForAnimations);
|
| }
|
|
|
| -void CSSAnimations::calculateTransitionActiveInterpolations(CSSAnimationUpdate* update, const Element* element, double timelineCurrentTime)
|
| +void CSSAnimations::calculateTransitionActiveInterpolations(CSSAnimationUpdate* update, const Element* animatingElement, double timelineCurrentTime)
|
| {
|
| - ActiveAnimations* activeAnimations = element ? element->activeAnimations() : 0;
|
| + ActiveAnimations* activeAnimations = animatingElement ? animatingElement->activeAnimations() : 0;
|
| AnimationStack* animationStack = activeAnimations ? &activeAnimations->defaultStack() : 0;
|
|
|
| WillBeHeapHashMap<CSSPropertyID, RefPtrWillBeMember<Interpolation> > activeInterpolationsForTransitions;
|
|
|