Index: Source/core/animation/CompositorAnimations.cpp |
diff --git a/Source/core/animation/CompositorAnimations.cpp b/Source/core/animation/CompositorAnimations.cpp |
index 62eef54ffef1e562c34dc525042b2944231653df..24dd788a64118288112626a1d749c5b5dab4ea58 100644 |
--- a/Source/core/animation/CompositorAnimations.cpp |
+++ b/Source/core/animation/CompositorAnimations.cpp |
@@ -31,7 +31,7 @@ |
#include "config.h" |
#include "core/animation/CompositorAnimations.h" |
-#include "core/animation/AnimationNode.h" |
+#include "core/animation/AnimationEffect.h" |
#include "core/animation/AnimationTranslationUtil.h" |
#include "core/animation/ElementAnimations.h" |
#include "core/animation/CompositorAnimationsImpl.h" |
@@ -73,27 +73,27 @@ void getKeyframeValuesForProperty(const KeyframeEffectModelBase* effect, Propert |
} |
} |
-bool considerPlayerAsIncompatible(const AnimationPlayer& player, const AnimationPlayer& playerToAdd) |
+bool considerAnimationAsIncompatible(const Animation& animation, const Animation& animationToAdd) |
{ |
- if (&player == &playerToAdd) |
+ if (&animation == &animationToAdd) |
return false; |
- switch (player.playStateInternal()) { |
- case AnimationPlayer::Idle: |
+ switch (animation.playStateInternal()) { |
+ case Animation::Idle: |
return false; |
- case AnimationPlayer::Pending: |
- case AnimationPlayer::Running: |
+ case Animation::Pending: |
+ case Animation::Running: |
return true; |
- case AnimationPlayer::Paused: |
- case AnimationPlayer::Finished: |
- return AnimationPlayer::hasLowerPriority(&playerToAdd, &player); |
+ case Animation::Paused: |
+ case Animation::Finished: |
+ return Animation::hasLowerPriority(&animationToAdd, &animation); |
default: |
ASSERT_NOT_REACHED(); |
return true; |
} |
} |
-bool hasIncompatibleAnimations(const Element& targetElement, const AnimationPlayer& playerToAdd, const AnimationEffect& effectToAdd) |
+bool hasIncompatibleAnimations(const Element& targetElement, const Animation& animationToAdd, const EffectModel& effectToAdd) |
{ |
const bool affectsOpacity = effectToAdd.affects(PropertyHandle(CSSPropertyOpacity)); |
const bool affectsTransform = effectToAdd.affects(PropertyHandle(CSSPropertyTransform)); |
@@ -105,14 +105,14 @@ bool hasIncompatibleAnimations(const Element& targetElement, const AnimationPlay |
ElementAnimations* elementAnimations = targetElement.elementAnimations(); |
ASSERT(elementAnimations); |
- for (const auto& entry : elementAnimations->players()) { |
- const AnimationPlayer* attachedPlayer = entry.key; |
- if (!considerPlayerAsIncompatible(*attachedPlayer, playerToAdd)) |
+ for (const auto& entry : elementAnimations->animations()) { |
+ const Animation* attachedAnimation = entry.key; |
+ if (!considerAnimationAsIncompatible(*attachedAnimation, animationToAdd)) |
continue; |
- if ((affectsOpacity && attachedPlayer->affects(targetElement, CSSPropertyOpacity)) |
- || (affectsTransform && attachedPlayer->affects(targetElement, CSSPropertyTransform)) |
- || (affectsFilter && attachedPlayer->affects(targetElement, CSSPropertyWebkitFilter))) |
+ if ((affectsOpacity && attachedAnimation->affects(targetElement, CSSPropertyOpacity)) |
+ || (affectsTransform && attachedAnimation->affects(targetElement, CSSPropertyTransform)) |
+ || (affectsFilter && attachedAnimation->affects(targetElement, CSSPropertyWebkitFilter))) |
return true; |
} |
@@ -125,7 +125,7 @@ CSSPropertyID CompositorAnimations::CompositableProperties[3] = { |
CSSPropertyOpacity, CSSPropertyTransform, CSSPropertyWebkitFilter |
}; |
-bool CompositorAnimations::getAnimatedBoundingBox(FloatBox& box, const AnimationEffect& effect, double minValue, double maxValue) const |
+bool CompositorAnimations::getAnimatedBoundingBox(FloatBox& box, const EffectModel& effect, double minValue, double maxValue) const |
{ |
const KeyframeEffectModelBase& keyframeEffect = toKeyframeEffectModelBase(effect); |
@@ -158,7 +158,7 @@ bool CompositorAnimations::getAnimatedBoundingBox(FloatBox& box, const Animation |
return false; |
// TODO: Add support for inflating modes other than Replace. |
- if (frames[j]->composite() != AnimationEffect::CompositeReplace) |
+ if (frames[j]->composite() != EffectModel::CompositeReplace) |
return false; |
const TimingFunction& timing = frames[j]->easing(); |
@@ -192,7 +192,7 @@ bool CompositorAnimations::getAnimatedBoundingBox(FloatBox& box, const Animation |
// CompositorAnimations public API |
// ----------------------------------------------------------------------- |
-bool CompositorAnimations::isCandidateForAnimationOnCompositor(const Timing& timing, const Element& targetElement, const AnimationPlayer* playerToAdd, const AnimationEffect& effect, double playerPlaybackRate) |
+bool CompositorAnimations::isCandidateForAnimationOnCompositor(const Timing& timing, const Element& targetElement, const Animation* animationToAdd, const EffectModel& effect, double animationPlaybackRate) |
{ |
const KeyframeEffectModelBase& keyframeEffect = toKeyframeEffectModelBase(effect); |
@@ -208,8 +208,8 @@ bool CompositorAnimations::isCandidateForAnimationOnCompositor(const Timing& tim |
ASSERT(keyframes.size() >= 2); |
for (const auto& keyframe : keyframes) { |
// FIXME: Determine candidacy based on the CSSValue instead of a snapshot AnimatableValue. |
- bool isNeutralKeyframe = keyframe->isCSSPropertySpecificKeyframe() && !toCSSPropertySpecificKeyframe(keyframe.get())->value() && keyframe->composite() == AnimationEffect::CompositeAdd; |
- if ((keyframe->composite() != AnimationEffect::CompositeReplace && !isNeutralKeyframe) || !keyframe->getAnimatableValue()) |
+ bool isNeutralKeyframe = keyframe->isCSSPropertySpecificKeyframe() && !toCSSPropertySpecificKeyframe(keyframe.get())->value() && keyframe->composite() == EffectModel::CompositeAdd; |
+ if ((keyframe->composite() != EffectModel::CompositeReplace && !isNeutralKeyframe) || !keyframe->getAnimatableValue()) |
return false; |
switch (property.cssProperty()) { |
@@ -232,17 +232,17 @@ bool CompositorAnimations::isCandidateForAnimationOnCompositor(const Timing& tim |
} |
} |
- if (playerToAdd && hasIncompatibleAnimations(targetElement, *playerToAdd, effect)) |
+ if (animationToAdd && hasIncompatibleAnimations(targetElement, *animationToAdd, effect)) |
return false; |
CompositorAnimationsImpl::CompositorTiming out; |
- if (!CompositorAnimationsImpl::convertTimingForCompositor(timing, 0, out, playerPlaybackRate)) |
+ if (!CompositorAnimationsImpl::convertTimingForCompositor(timing, 0, out, animationPlaybackRate)) |
return false; |
return true; |
} |
-void CompositorAnimations::cancelIncompatibleAnimationsOnCompositor(const Element& targetElement, const AnimationPlayer& playerToAdd, const AnimationEffect& effectToAdd) |
+void CompositorAnimations::cancelIncompatibleAnimationsOnCompositor(const Element& targetElement, const Animation& animationToAdd, const EffectModel& effectToAdd) |
{ |
const bool affectsOpacity = effectToAdd.affects(PropertyHandle(CSSPropertyOpacity)); |
const bool affectsTransform = effectToAdd.affects(PropertyHandle(CSSPropertyTransform)); |
@@ -254,15 +254,15 @@ void CompositorAnimations::cancelIncompatibleAnimationsOnCompositor(const Elemen |
ElementAnimations* elementAnimations = targetElement.elementAnimations(); |
ASSERT(elementAnimations); |
- for (const auto& entry : elementAnimations->players()) { |
- AnimationPlayer* attachedPlayer = entry.key; |
- if (!considerPlayerAsIncompatible(*attachedPlayer, playerToAdd)) |
+ for (const auto& entry : elementAnimations->animations()) { |
+ Animation* attachedAnimation = entry.key; |
+ if (!considerAnimationAsIncompatible(*attachedAnimation, animationToAdd)) |
continue; |
- if ((affectsOpacity && attachedPlayer->affects(targetElement, CSSPropertyOpacity)) |
- || (affectsTransform && attachedPlayer->affects(targetElement, CSSPropertyTransform)) |
- || (affectsFilter && attachedPlayer->affects(targetElement, CSSPropertyWebkitFilter))) |
- attachedPlayer->cancelAnimationOnCompositor(); |
+ if ((affectsOpacity && attachedAnimation->affects(targetElement, CSSPropertyOpacity)) |
+ || (affectsTransform && attachedAnimation->affects(targetElement, CSSPropertyTransform)) |
+ || (affectsFilter && attachedAnimation->affects(targetElement, CSSPropertyWebkitFilter))) |
+ attachedAnimation->cancelAnimationOnCompositor(); |
} |
} |
@@ -271,10 +271,10 @@ bool CompositorAnimations::canStartAnimationOnCompositor(const Element& element) |
return element.layoutObject() && element.layoutObject()->compositingState() == PaintsIntoOwnBacking; |
} |
-bool CompositorAnimations::startAnimationOnCompositor(const Element& element, int group, double startTime, double timeOffset, const Timing& timing, const AnimationPlayer& player, const AnimationEffect& effect, Vector<int>& startedAnimationIds, double playerPlaybackRate) |
+bool CompositorAnimations::startAnimationOnCompositor(const Element& element, int group, double startTime, double timeOffset, const Timing& timing, const Animation& animation, const EffectModel& effect, Vector<int>& startedAnimationIds, double animationPlaybackRate) |
{ |
ASSERT(startedAnimationIds.isEmpty()); |
- ASSERT(isCandidateForAnimationOnCompositor(timing, element, &player, effect, playerPlaybackRate)); |
+ ASSERT(isCandidateForAnimationOnCompositor(timing, element, &animation, effect, animationPlaybackRate)); |
ASSERT(canStartAnimationOnCompositor(element)); |
const KeyframeEffectModelBase& keyframeEffect = toKeyframeEffectModelBase(effect); |
@@ -283,18 +283,18 @@ bool CompositorAnimations::startAnimationOnCompositor(const Element& element, in |
ASSERT(layer); |
Vector<OwnPtr<WebCompositorAnimation>> animations; |
- CompositorAnimationsImpl::getAnimationOnCompositor(timing, group, startTime, timeOffset, keyframeEffect, animations, playerPlaybackRate); |
+ CompositorAnimationsImpl::getAnimationOnCompositor(timing, group, startTime, timeOffset, keyframeEffect, animations, animationPlaybackRate); |
ASSERT(!animations.isEmpty()); |
- for (auto& animation : animations) { |
- int id = animation->id(); |
+ for (auto& compositorAnimation : animations) { |
+ int id = compositorAnimation->id(); |
if (RuntimeEnabledFeatures::compositorAnimationTimelinesEnabled()) { |
- WebCompositorAnimationPlayer* compositorPlayer = player.compositorPlayer(); |
+ WebCompositorAnimationPlayer* compositorPlayer = animation.compositorPlayer(); |
ASSERT(compositorPlayer); |
- compositorPlayer->addAnimation(animation.leakPtr()); |
- } else if (!layer->compositedDeprecatedPaintLayerMapping()->mainGraphicsLayer()->addAnimation(animation.release())) { |
+ compositorPlayer->addAnimation(compositorAnimation.leakPtr()); |
+ } else if (!layer->compositedDeprecatedPaintLayerMapping()->mainGraphicsLayer()->addAnimation(compositorAnimation.release())) { |
// FIXME: We should know ahead of time whether these animations can be started. |
for (int startedAnimationId : startedAnimationIds) |
- cancelAnimationOnCompositor(element, player, startedAnimationId); |
+ cancelAnimationOnCompositor(element, animation, startedAnimationId); |
startedAnimationIds.clear(); |
return false; |
} |
@@ -304,18 +304,18 @@ bool CompositorAnimations::startAnimationOnCompositor(const Element& element, in |
return true; |
} |
-void CompositorAnimations::cancelAnimationOnCompositor(const Element& element, const AnimationPlayer& player, int id) |
+void CompositorAnimations::cancelAnimationOnCompositor(const Element& element, const Animation& animation, int id) |
{ |
if (!canStartAnimationOnCompositor(element)) { |
// When an element is being detached, we cancel any associated |
- // AnimationPlayers for CSS animations. But by the time we get |
+ // Animations for CSS animations. But by the time we get |
// here the mapping will have been removed. |
// FIXME: Defer remove/pause operations until after the |
// compositing update. |
return; |
} |
if (RuntimeEnabledFeatures::compositorAnimationTimelinesEnabled()) { |
- WebCompositorAnimationPlayer* compositorPlayer = player.compositorPlayer(); |
+ WebCompositorAnimationPlayer* compositorPlayer = animation.compositorPlayer(); |
ASSERT(compositorPlayer); |
compositorPlayer->removeAnimation(id); |
} else { |
@@ -323,7 +323,7 @@ void CompositorAnimations::cancelAnimationOnCompositor(const Element& element, c |
} |
} |
-void CompositorAnimations::pauseAnimationForTestingOnCompositor(const Element& element, const AnimationPlayer& player, int id, double pauseTime) |
+void CompositorAnimations::pauseAnimationForTestingOnCompositor(const Element& element, const Animation& animation, int id, double pauseTime) |
{ |
// FIXME: canStartAnimationOnCompositor queries compositingState, which is not necessarily up to date. |
// https://code.google.com/p/chromium/issues/detail?id=339847 |
@@ -334,7 +334,7 @@ void CompositorAnimations::pauseAnimationForTestingOnCompositor(const Element& e |
return; |
} |
if (RuntimeEnabledFeatures::compositorAnimationTimelinesEnabled()) { |
- WebCompositorAnimationPlayer* compositorPlayer = player.compositorPlayer(); |
+ WebCompositorAnimationPlayer* compositorPlayer = animation.compositorPlayer(); |
ASSERT(compositorPlayer); |
compositorPlayer->pauseAnimation(id, pauseTime); |
} else { |
@@ -342,12 +342,12 @@ void CompositorAnimations::pauseAnimationForTestingOnCompositor(const Element& e |
} |
} |
-bool CompositorAnimations::canAttachCompositedLayers(const Element& element, const AnimationPlayer& player) |
+bool CompositorAnimations::canAttachCompositedLayers(const Element& element, const Animation& animation) |
{ |
if (!RuntimeEnabledFeatures::compositorAnimationTimelinesEnabled()) |
return false; |
- if (!player.compositorPlayer()) |
+ if (!animation.compositorPlayer()) |
return false; |
if (!element.layoutObject() || !element.layoutObject()->isBoxModelObject()) |
@@ -366,14 +366,14 @@ bool CompositorAnimations::canAttachCompositedLayers(const Element& element, con |
return true; |
} |
-void CompositorAnimations::attachCompositedLayers(const Element& element, const AnimationPlayer& player) |
+void CompositorAnimations::attachCompositedLayers(const Element& element, const Animation& animation) |
{ |
ASSERT(element.layoutObject()); |
DeprecatedPaintLayer* layer = toLayoutBoxModelObject(element.layoutObject())->layer(); |
ASSERT(layer); |
- WebCompositorAnimationPlayer* compositorPlayer = player.compositorPlayer(); |
+ WebCompositorAnimationPlayer* compositorPlayer = animation.compositorPlayer(); |
ASSERT(compositorPlayer); |
ASSERT(layer->compositedDeprecatedPaintLayerMapping()); |
@@ -384,7 +384,7 @@ void CompositorAnimations::attachCompositedLayers(const Element& element, const |
// CompositorAnimationsImpl |
// ----------------------------------------------------------------------- |
-bool CompositorAnimationsImpl::convertTimingForCompositor(const Timing& timing, double timeOffset, CompositorTiming& out, double playerPlaybackRate) |
+bool CompositorAnimationsImpl::convertTimingForCompositor(const Timing& timing, double timeOffset, CompositorTiming& out, double animationPlaybackRate) |
{ |
timing.assertValid(); |
@@ -404,8 +404,8 @@ bool CompositorAnimationsImpl::convertTimingForCompositor(const Timing& timing, |
out.scaledDuration = timing.iterationDuration; |
out.direction = timing.direction; |
// Compositor's time offset is positive for seeking into the animation. |
- out.scaledTimeOffset = -timing.startDelay / playerPlaybackRate + timeOffset; |
- out.playbackRate = timing.playbackRate * playerPlaybackRate; |
+ out.scaledTimeOffset = -timing.startDelay / animationPlaybackRate + timeOffset; |
+ out.playbackRate = timing.playbackRate * animationPlaybackRate; |
out.fillMode = timing.fillMode == Timing::FillModeAuto ? Timing::FillModeNone : timing.fillMode; |
out.iterationStart = timing.iterationStart; |
out.assertValid(); |
@@ -597,11 +597,11 @@ void CompositorAnimationsImpl::addKeyframesToCurve(WebCompositorAnimationCurve& |
} |
} |
-void CompositorAnimationsImpl::getAnimationOnCompositor(const Timing& timing, int group, double startTime, double timeOffset, const KeyframeEffectModelBase& effect, Vector<OwnPtr<WebCompositorAnimation>>& animations, double playerPlaybackRate) |
+void CompositorAnimationsImpl::getAnimationOnCompositor(const Timing& timing, int group, double startTime, double timeOffset, const KeyframeEffectModelBase& effect, Vector<OwnPtr<WebCompositorAnimation>>& animations, double animationPlaybackRate) |
{ |
ASSERT(animations.isEmpty()); |
CompositorTiming compositorTiming; |
- bool timingValid = convertTimingForCompositor(timing, timeOffset, compositorTiming, playerPlaybackRate); |
+ bool timingValid = convertTimingForCompositor(timing, timeOffset, compositorTiming, animationPlaybackRate); |
ASSERT_UNUSED(timingValid, timingValid); |
PropertyHandleSet properties = effect.properties(); |