| Index: third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
|
| index 52b9388e24a8e3a1c000d9436060d890b878bdd8..ef02d56e2f91c34acb000b704f507d7d91b3ea27 100644
|
| --- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
|
| @@ -752,11 +752,14 @@ void PaintLayerScrollableArea::clampScrollPositionsAfterLayout()
|
| return;
|
| }
|
|
|
| - DoublePoint clampedScrollPosition = clampScrollPosition(scrollPositionDouble());
|
| - if (clampedScrollPosition != scrollPositionDouble())
|
| - ScrollableArea::setScrollPosition(clampedScrollPosition, ProgrammaticScroll);
|
| - else if (scrollOriginChanged())
|
| - scrollPositionChanged(clampedScrollPosition, ProgrammaticScroll);
|
| + DoublePoint clamped = clampScrollPosition(scrollPositionDouble());
|
| + // Restore before clamping because clamping clears the scroll anchor.
|
| + if (clamped != scrollPositionDouble() && shouldPerformScrollAnchoring() && m_scrollAnchor.hasScroller()) {
|
| + m_scrollAnchor.restore();
|
| + clamped = clampScrollPosition(scrollPositionDouble());
|
| + }
|
| + if (clamped != scrollPositionDouble() || scrollOriginChanged())
|
| + ScrollableArea::setScrollPosition(clamped, ProgrammaticScroll);
|
|
|
| setNeedsScrollPositionClamp(false);
|
| resetScrollOriginChanged();
|
|
|