Index: Source/core/animation/KeyframeEffect.cpp |
diff --git a/Source/core/animation/KeyframeEffect.cpp b/Source/core/animation/KeyframeEffect.cpp |
index fcf364a1ed5817ef5777f49f5131967e6a63eb0a..0afa07e9837f71cf7e403be29b4d57eaf5ac9465 100644 |
--- a/Source/core/animation/KeyframeEffect.cpp |
+++ b/Source/core/animation/KeyframeEffect.cpp |
@@ -136,9 +136,13 @@ void KeyframeEffect::applyEffects() |
if (!m_target || !m_model) |
return; |
- // Cancel composited animation of transform if a motion path has been introduced on the element. |
+ // Cancel composited animation of transform if a motion path, translate, |
+ // rotate or scale operation has been introduced on the element. |
if (m_target->computedStyle() |
- && m_target->computedStyle()->hasMotionPath() |
+ && (m_target->computedStyle()->hasMotionPath() |
+ || m_target->computedStyle()->translate() |
+ || m_target->computedStyle()->rotate() |
+ || m_target->computedStyle()->scale()) |
&& animation()->hasActiveAnimationsOnCompositor() |
&& animation()->affects(*m_target, CSSPropertyTransform)) { |
animation()->cancelAnimationOnCompositor(); |
@@ -242,7 +246,7 @@ bool KeyframeEffect::isCandidateForAnimationOnCompositor(double animationPlaybac |
{ |
if (!model() |
|| !m_target |
- || (m_target->computedStyle() && m_target->computedStyle()->hasMotionPath())) |
+ || (m_target->computedStyle() && (m_target->computedStyle()->hasMotionPath() || m_target->computedStyle()->translate() || m_target->computedStyle()->rotate() || m_target->computedStyle()->scale()))) |
return false; |
return CompositorAnimations::instance()->isCandidateForAnimationOnCompositor(specifiedTiming(), *m_target, animation(), *model(), animationPlaybackRate); |