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 7f981ede20bb1a2161bbe71cd3826efc547bb1f5..72141c58eee7d18b21dd09fc02837f9dd18cad1c 100644 |
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp |
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp |
@@ -3390,6 +3390,18 @@ IntSize FrameView::contentsSize() const |
return m_contentsSize; |
} |
+void FrameView::clipPaintRect(FloatRect* paintRect) const |
+{ |
+ // Paint the whole rect if "mainFrameClipsContent" is false, meaning that |
+ // WebPreferences::record_whole_document is true. |
+ if (!m_frame->settings()->mainFrameClipsContent()) |
+ return; |
+ |
+ paintRect->intersect( |
+ page()->chromeClient().visibleContentRectForPainting().value_or( |
+ visibleContentRect())); |
+} |
+ |
IntPoint FrameView::minimumScrollPosition() const |
{ |
return IntPoint(-scrollOrigin().x(), -scrollOrigin().y()); |
@@ -3468,7 +3480,7 @@ void FrameView::setScrollOffset(const DoublePoint& offset, ScrollType scrollType |
cache->handleScrollPositionChanged(this); |
frame().loader().saveScrollState(); |
- frame().loader().client()->didChangeScrollOffset(); |
+ didChangeScrollOffset(); |
if (scrollType == CompositorScroll && m_frame->isMainFrame()) { |
if (DocumentLoader* documentLoader = m_frame->loader().documentLoader()) |
@@ -3479,6 +3491,13 @@ void FrameView::setScrollOffset(const DoublePoint& offset, ScrollType scrollType |
clearScrollAnchor(); |
} |
+void FrameView::didChangeScrollOffset() |
+{ |
+ frame().loader().client()->didChangeScrollOffset(); |
+ if (frame().isMainFrame()) |
+ frame().host()->chromeClient().mainFrameScrollOffsetChanged(); |
+} |
+ |
void FrameView::clearScrollAnchor() |
{ |
if (!RuntimeEnabledFeatures::scrollAnchoringEnabled()) |