| Index: third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
|
| diff --git a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
|
| index 85623d4c7bd72ee817a391de3c3bda140c737fdc..e8e4e3f1f596f172eb21a54d7fb645531bc449f8 100644
|
| --- a/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
|
| +++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimatorCompositorCoordinator.cpp
|
| @@ -261,9 +261,9 @@ bool ScrollAnimatorCompositorCoordinator::hasImplOnlyAnimationUpdate() const
|
| return !m_implOnlyAnimationAdjustment.isZero() || m_implOnlyAnimationTakeover;
|
| }
|
|
|
| -void ScrollAnimatorCompositorCoordinator::updateCompositorAnimations()
|
| +void ScrollAnimatorCompositorCoordinator::updateImplOnlyCompositorAnimations()
|
| {
|
| - if (!getScrollableArea()->scrollAnimatorEnabled() || !hasImplOnlyAnimationUpdate())
|
| + if (!hasImplOnlyAnimationUpdate())
|
| return;
|
|
|
| GraphicsLayer* layer = getScrollableArea()->layerForScrolling();
|
| @@ -283,6 +283,14 @@ void ScrollAnimatorCompositorCoordinator::updateCompositorAnimations()
|
| m_implOnlyAnimationTakeover = false;
|
| }
|
|
|
| +void ScrollAnimatorCompositorCoordinator::updateCompositorAnimations()
|
| +{
|
| + if (!getScrollableArea()->scrollAnimatorEnabled())
|
| + return;
|
| +
|
| + updateImplOnlyCompositorAnimations();
|
| +}
|
| +
|
| void ScrollAnimatorCompositorCoordinator::adjustAnimationAndSetScrollPosition(
|
| IntSize adjustment, ScrollType scrollType) {
|
| // Subclasses should override this and adjust the animation as necessary.
|
| @@ -308,6 +316,11 @@ void ScrollAnimatorCompositorCoordinator::takeOverImplOnlyScrollOffsetAnimation(
|
|
|
| m_implOnlyAnimationTakeover = true;
|
|
|
| + // Update compositor animations right away to avoid skipping a frame.
|
| + // This imposes the constraint that this function should only be called
|
| + // from or after DocumentLifecycle::LifecycleState::CompositingClean state.
|
| + updateImplOnlyCompositorAnimations();
|
| +
|
| getScrollableArea()->registerForAnimation();
|
| }
|
|
|
|
|