Index: third_party/WebKit/Source/core/frame/FrameView.cpp |
diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp |
index 687b58d8451b0789bb81f5d439dc29cfbdc80004..ee1ca3f5c889c21117b7941fad2247a4800cc04e 100644 |
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp |
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp |
@@ -828,6 +828,14 @@ void FrameView::performPreLayoutTasks() |
m_scrollAnchor.save(); |
} |
+bool FrameView::shouldPerformScrollAnchoring() const |
+{ |
+ return RuntimeEnabledFeatures::scrollAnchoringEnabled() |
+ && m_frame->settings() && !m_frame->settings()->rootLayerScrolls() |
+ && m_scrollAnchor.hasScroller() |
+ && layoutBox()->style()->overflowAnchor() != AnchorNone; |
+} |
+ |
static inline void layoutFromRootObject(LayoutObject& root) |
{ |
LayoutState layoutState(root); |
@@ -3655,7 +3663,7 @@ void FrameView::adjustScrollPositionFromUpdateScrollbars() |
// Restore before clamping because clamping clears the scroll anchor. |
// TODO(ymalik): This same logic exists in PaintLayerScrollableArea. |
// Remove when root-layer-scrolls is enabled. |
- if (clamped != scrollPositionDouble() && shouldPerformScrollAnchoring() && m_scrollAnchor.hasScroller()) { |
+ if (clamped != scrollPositionDouble() && shouldPerformScrollAnchoring()) { |
m_scrollAnchor.restore(); |
clamped = clampScrollPosition(scrollPositionDouble()); |
} |