| Index: third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
 | 
| diff --git a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
 | 
| index b717e08a653fad1d135766e18a01070cddfca373..1ced72570e0c241a56b8311391f61ae8df638670 100644
 | 
| --- a/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
 | 
| +++ b/third_party/WebKit/Source/platform/scroll/ProgrammaticScrollAnimator.cpp
 | 
| @@ -10,6 +10,7 @@
 | 
|  #include "platform/geometry/IntSize.h"
 | 
|  #include "platform/graphics/GraphicsLayer.h"
 | 
|  #include "platform/scroll/ScrollableArea.h"
 | 
| +#include "platform/scroll/SmoothScrollSequencer.h"
 | 
|  #include "platform/wtf/PtrUtil.h"
 | 
|  #include "public/platform/Platform.h"
 | 
|  #include "public/platform/WebCompositorSupport.h"
 | 
| @@ -39,12 +40,15 @@ void ProgrammaticScrollAnimator::ScrollToOffsetWithoutAnimation(
 | 
|    NotifyOffsetChanged(offset);
 | 
|  }
 | 
|  
 | 
| -void ProgrammaticScrollAnimator::AnimateToOffset(const ScrollOffset& offset) {
 | 
| +void ProgrammaticScrollAnimator::AnimateToOffset(
 | 
| +    const ScrollOffset& offset,
 | 
| +    bool sequenced_for_smooth_scroll) {
 | 
|    if (run_state_ == RunState::kPostAnimationCleanup)
 | 
|      ResetAnimationState();
 | 
|  
 | 
|    start_time_ = 0.0;
 | 
|    target_offset_ = offset;
 | 
| +  sequenced_for_smooth_scroll_ = sequenced_for_smooth_scroll;
 | 
|    animation_curve_ = CompositorScrollOffsetAnimationCurve::Create(
 | 
|        CompositorOffsetFromBlinkOffset(target_offset_),
 | 
|        CompositorScrollOffsetAnimationCurve::kScrollDurationDeltaBased);
 | 
| @@ -76,6 +80,7 @@ void ProgrammaticScrollAnimator::TickAnimation(double monotonic_time) {
 | 
|  
 | 
|    if (is_finished) {
 | 
|      run_state_ = RunState::kPostAnimationCleanup;
 | 
| +    AnimationFinished();
 | 
|    } else if (!scrollable_area_->ScheduleAnimation()) {
 | 
|      NotifyOffsetChanged(offset);
 | 
|      ResetAnimationState();
 | 
| @@ -169,6 +174,16 @@ void ProgrammaticScrollAnimator::NotifyCompositorAnimationFinished(
 | 
|      int group_id) {
 | 
|    DCHECK_NE(run_state_, RunState::kRunningOnCompositorButNeedsUpdate);
 | 
|    ScrollAnimatorCompositorCoordinator::CompositorAnimationFinished(group_id);
 | 
| +  AnimationFinished();
 | 
| +}
 | 
| +
 | 
| +void ProgrammaticScrollAnimator::AnimationFinished() {
 | 
| +  if (sequenced_for_smooth_scroll_) {
 | 
| +    sequenced_for_smooth_scroll_ = false;
 | 
| +    if (SmoothScrollSequencer* sequencer =
 | 
| +            GetScrollableArea()->GetSmoothScrollSequencer())
 | 
| +      sequencer->RunQueuedAnimations();
 | 
| +  }
 | 
|  }
 | 
|  
 | 
|  DEFINE_TRACE(ProgrammaticScrollAnimator) {
 | 
| 
 |