Chromium Code Reviews| Index: third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp |
| diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp |
| index de0000b4a8f5a948cb00f564d08a62014024fb01..9024ccc84ca536d98be100bbd5ea8e5da9d740af 100644 |
| --- a/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp |
| +++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp |
| @@ -110,6 +110,13 @@ ScrollResultOneDimensional ScrollAnimator::userScroll( |
| FloatPoint targetPos = desiredTargetPosition(); |
| targetPos.moveBy(pixelDelta); |
|
ymalik
2016/02/07 21:23:37
@ajuma
This is speculatively fix up the assert fa
ajuma
2016/02/08 15:05:35
Assuming that userScroll can get called at arbitra
|
| + // Reset animation state in case we get a scroll between when an animation |
| + // was asked to be cancelled and updateCompositorAnimations is called. |
| + if (m_runState == RunState::WaitingToCancelOnCompositor) { |
| + abortAnimation(); |
|
ajuma
2016/02/08 15:05:35
It looks like this could touch compositing state i
ymalik
2016/02/08 18:41:23
Ah right. That's why we have the whole state machi
|
| + resetAnimationState(); |
| + } |
| + |
| if (m_animationCurve) { |
| if ((targetPos - m_targetOffset).isZero()) { |
| // Report unused delta only if there is no animation running. See |
| @@ -189,23 +196,11 @@ void ScrollAnimator::tickAnimation(double monotonicTime) |
| void ScrollAnimator::updateCompositorAnimations() |
| { |
|
ymalik
2016/02/07 21:23:37
I don't think we should ever be in a state where w
ajuma
2016/02/08 15:05:35
Sounds reasonable.
ymalik
2016/02/08 18:41:23
Based on your feedback above, I moved the call to
|
| - if (m_compositorAnimationId && m_runState != RunState::RunningOnCompositor |
| - && m_runState != RunState::RunningOnCompositorButNeedsUpdate) { |
| - // If the current run state is WaitingToSendToCompositor but we have a |
| - // non-zero compositor animation id, there's a currently running |
| - // compositor animation that needs to be removed here before the new |
| - // animation is added below. |
| - ASSERT(m_runState == RunState::WaitingToCancelOnCompositor |
| - || m_runState == RunState::WaitingToSendToCompositor); |
| - |
| + if (m_runState == RunState::WaitingToCancelOnCompositor) { |
| + ASSERT(m_compositorAnimationId); |
| abortAnimation(); |
| - |
| - m_compositorAnimationId = 0; |
| - m_compositorAnimationGroupId = 0; |
| - if (m_runState == RunState::WaitingToCancelOnCompositor) { |
| - resetAnimationState(); |
| - return; |
| - } |
| + resetAnimationState(); |
| + return; |
| } |
| if (m_runState == RunState::WaitingToSendToCompositor |