| Index: Source/platform/scroll/ScrollableArea.cpp
|
| diff --git a/Source/platform/scroll/ScrollableArea.cpp b/Source/platform/scroll/ScrollableArea.cpp
|
| index 060567b1b789b7362d8b5ac03b3071669edce61a..e19981913fb905222548ca6abfdba67f50c58e07 100644
|
| --- a/Source/platform/scroll/ScrollableArea.cpp
|
| +++ b/Source/platform/scroll/ScrollableArea.cpp
|
| @@ -159,9 +159,10 @@ bool ScrollableArea::scroll(ScrollDirection direction, ScrollGranularity granula
|
| return scrollAnimator()->scroll(orientation, granularity, step, delta);
|
| }
|
|
|
| -void ScrollableArea::scrollToOffsetWithoutAnimation(const FloatPoint& offset)
|
| +void ScrollableArea::scrollToOffsetWithoutAnimation(const FloatPoint& offset, bool cancelProgrammaticAnimations)
|
| {
|
| - cancelProgrammaticScrollAnimation();
|
| + if (cancelProgrammaticAnimations)
|
| + cancelProgrammaticScrollAnimation();
|
| scrollAnimator()->scrollToOffsetWithoutAnimation(offset);
|
| }
|
|
|
| @@ -430,21 +431,33 @@ bool ScrollableArea::scheduleAnimation()
|
|
|
| void ScrollableArea::serviceScrollAnimations(double monotonicTime)
|
| {
|
| - bool hasRunningAnimation = false;
|
| + bool requiresAnimationService = false;
|
| if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) {
|
| scrollAnimator->serviceScrollAnimations();
|
| if (scrollAnimator->hasRunningAnimation())
|
| - hasRunningAnimation = true;
|
| + requiresAnimationService = true;
|
| }
|
| if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator()) {
|
| programmaticScrollAnimator->tickAnimation(monotonicTime);
|
| - if (programmaticScrollAnimator->hasRunningAnimation())
|
| - hasRunningAnimation = true;
|
| + if (programmaticScrollAnimator->hasAnimationThatRequiresService())
|
| + requiresAnimationService = true;
|
| }
|
| - if (!hasRunningAnimation)
|
| + if (!requiresAnimationService)
|
| deregisterForAnimation();
|
| }
|
|
|
| +void ScrollableArea::updateCompositorScrollAnimations()
|
| +{
|
| + if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator())
|
| + programmaticScrollAnimator->updateCompositorAnimations();
|
| +}
|
| +
|
| +void ScrollableArea::notifyCompositorAnimationFinished(int groupId)
|
| +{
|
| + if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator())
|
| + programmaticScrollAnimator->notifyCompositorAnimationFinished(groupId);
|
| +}
|
| +
|
| void ScrollableArea::cancelProgrammaticScrollAnimation()
|
| {
|
| if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator())
|
|
|