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 7e37425c6e8419afcc0c608d11559e40d7bdb1f9..c3a8ee7654bd0bca004dc39b7b379819346a1622 100644 |
--- a/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp |
+++ b/third_party/WebKit/Source/platform/scroll/ScrollAnimator.cpp |
@@ -190,18 +190,19 @@ |
void ScrollAnimator::adjustAnimationAndSetScrollPosition( |
const DoublePoint& position, |
ScrollType scrollType) { |
- IntSize adjustment = |
- roundedIntPoint(position) - |
+ DoublePoint adjustedPos = m_scrollableArea->clampScrollPosition(position); |
+ IntSize actualAdjustment = |
+ roundedIntPoint(adjustedPos) - |
roundedIntPoint(m_scrollableArea->scrollPositionDouble()); |
- scrollPositionChanged(position, scrollType); |
+ scrollPositionChanged(adjustedPos, scrollType); |
if (m_runState == RunState::Idle) { |
- adjustImplOnlyScrollOffsetAnimation(adjustment); |
+ adjustImplOnlyScrollOffsetAnimation(actualAdjustment); |
} else if (hasRunningAnimation()) { |
- m_targetOffset += toFloatSize(adjustment); |
+ m_targetOffset += toFloatSize(actualAdjustment); |
if (m_animationCurve) { |
- m_animationCurve->applyAdjustment(adjustment); |
+ m_animationCurve->applyAdjustment(actualAdjustment); |
if (m_runState != RunState::RunningOnMainThread && |
registerAndScheduleAnimation()) |
m_runState = RunState::RunningOnCompositorButNeedsAdjustment; |