Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011, Google Inc. All rights reserved. | 2 * Copyright (c) 2011, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 101 resetAnimationState(); | 101 resetAnimationState(); |
| 102 } | 102 } |
| 103 return ScrollAnimatorBase::userScroll(orientation, granularity, step, de lta); | 103 return ScrollAnimatorBase::userScroll(orientation, granularity, step, de lta); |
| 104 } | 104 } |
| 105 | 105 |
| 106 float usedPixelDelta = computeDeltaToConsume(orientation, step * delta); | 106 float usedPixelDelta = computeDeltaToConsume(orientation, step * delta); |
| 107 FloatPoint pixelDelta = (orientation == VerticalScrollbar | 107 FloatPoint pixelDelta = (orientation == VerticalScrollbar |
| 108 ? FloatPoint(0, usedPixelDelta) : FloatPoint(usedPixelDelta, 0)); | 108 ? FloatPoint(0, usedPixelDelta) : FloatPoint(usedPixelDelta, 0)); |
| 109 | 109 |
| 110 FloatPoint targetPos = desiredTargetPosition(); | 110 FloatPoint targetPos = desiredTargetPosition(); |
| 111 targetPos.moveBy(pixelDelta); | 111 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
| |
| 112 | 112 |
| 113 // Reset animation state in case we get a scroll between when an animation | |
| 114 // was asked to be cancelled and updateCompositorAnimations is called. | |
| 115 if (m_runState == RunState::WaitingToCancelOnCompositor) { | |
| 116 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
| |
| 117 resetAnimationState(); | |
| 118 } | |
| 119 | |
| 113 if (m_animationCurve) { | 120 if (m_animationCurve) { |
| 114 if ((targetPos - m_targetOffset).isZero()) { | 121 if ((targetPos - m_targetOffset).isZero()) { |
| 115 // Report unused delta only if there is no animation running. See | 122 // Report unused delta only if there is no animation running. See |
| 116 // comment below regarding scroll latching. | 123 // comment below regarding scroll latching. |
| 117 return ScrollResultOneDimensional(/* didScroll */ true, /* unusedScr ollDelta */ 0); | 124 return ScrollResultOneDimensional(/* didScroll */ true, /* unusedScr ollDelta */ 0); |
| 118 } | 125 } |
| 119 | 126 |
| 120 m_targetOffset = targetPos; | 127 m_targetOffset = targetPos; |
| 121 ASSERT(m_runState == RunState::RunningOnMainThread | 128 ASSERT(m_runState == RunState::RunningOnMainThread |
| 122 || m_runState == RunState::RunningOnCompositor | 129 || m_runState == RunState::RunningOnCompositor |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 181 if (isFinished) | 188 if (isFinished) |
| 182 resetAnimationState(); | 189 resetAnimationState(); |
| 183 else | 190 else |
| 184 scrollableArea()->scheduleAnimation(); | 191 scrollableArea()->scheduleAnimation(); |
| 185 | 192 |
| 186 TRACE_EVENT0("blink", "ScrollAnimator::notifyPositionChanged"); | 193 TRACE_EVENT0("blink", "ScrollAnimator::notifyPositionChanged"); |
| 187 notifyPositionChanged(); | 194 notifyPositionChanged(); |
| 188 } | 195 } |
| 189 | 196 |
| 190 void ScrollAnimator::updateCompositorAnimations() | 197 void ScrollAnimator::updateCompositorAnimations() |
| 191 { | 198 { |
|
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
| |
| 192 if (m_compositorAnimationId && m_runState != RunState::RunningOnCompositor | 199 if (m_runState == RunState::WaitingToCancelOnCompositor) { |
| 193 && m_runState != RunState::RunningOnCompositorButNeedsUpdate) { | 200 ASSERT(m_compositorAnimationId); |
| 194 // If the current run state is WaitingToSendToCompositor but we have a | |
| 195 // non-zero compositor animation id, there's a currently running | |
| 196 // compositor animation that needs to be removed here before the new | |
| 197 // animation is added below. | |
| 198 ASSERT(m_runState == RunState::WaitingToCancelOnCompositor | |
| 199 || m_runState == RunState::WaitingToSendToCompositor); | |
| 200 | |
| 201 abortAnimation(); | 201 abortAnimation(); |
| 202 | 202 resetAnimationState(); |
| 203 m_compositorAnimationId = 0; | 203 return; |
| 204 m_compositorAnimationGroupId = 0; | |
| 205 if (m_runState == RunState::WaitingToCancelOnCompositor) { | |
| 206 resetAnimationState(); | |
| 207 return; | |
| 208 } | |
| 209 } | 204 } |
| 210 | 205 |
| 211 if (m_runState == RunState::WaitingToSendToCompositor | 206 if (m_runState == RunState::WaitingToSendToCompositor |
| 212 || m_runState == RunState::RunningOnCompositorButNeedsUpdate) { | 207 || m_runState == RunState::RunningOnCompositorButNeedsUpdate) { |
| 213 if (m_runState == RunState::RunningOnCompositorButNeedsUpdate) { | 208 if (m_runState == RunState::RunningOnCompositorButNeedsUpdate) { |
| 214 // Abort the running animation before a new one with an updated | 209 // Abort the running animation before a new one with an updated |
| 215 // target is added. | 210 // target is added. |
| 216 abortAnimation(); | 211 abortAnimation(); |
| 217 | 212 |
| 218 m_compositorAnimationId = 0; | 213 m_compositorAnimationId = 0; |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 299 } | 294 } |
| 300 return true; | 295 return true; |
| 301 } | 296 } |
| 302 | 297 |
| 303 DEFINE_TRACE(ScrollAnimator) | 298 DEFINE_TRACE(ScrollAnimator) |
| 304 { | 299 { |
| 305 ScrollAnimatorBase::trace(visitor); | 300 ScrollAnimatorBase::trace(visitor); |
| 306 } | 301 } |
| 307 | 302 |
| 308 } // namespace blink | 303 } // namespace blink |
| OLD | NEW |