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 44f2446632fc84ee790b38e7d3a2133f1022b82c..0b967f25aecc70cf6d48d0d30225dbdc4de5eb7a 100644 |
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp |
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp |
@@ -158,6 +158,7 @@ FrameView::FrameView(LocalFrame* frame) |
, m_verticalScrollbarMode(ScrollbarAuto) |
, m_horizontalScrollbarLock(false) |
, m_verticalScrollbarLock(false) |
+ , m_visibleContentRectForPainting(nullptr) |
, m_scrollbarsAvoidingResizer(0) |
, m_scrollbarsSuppressed(false) |
, m_inUpdateScrollbars(false) |
@@ -3309,6 +3310,23 @@ IntSize FrameView::contentsSize() const |
return m_contentsSize; |
} |
+IntRect FrameView::visibleContentRectForPainting() const |
+{ |
+ if (m_visibleContentRectForPainting) |
+ return *m_visibleContentRectForPainting; |
+ return visibleContentRect(); |
+} |
+ |
+void FrameView::setVisibleContentRectForPainting(const IntRect& rect) |
+{ |
+ m_visibleContentRectForPainting.reset(new IntRect(rect)); |
+} |
+ |
+void FrameView::resetVisibleContentRectForPainting() |
+{ |
+ m_visibleContentRectForPainting.reset(); |
+} |
+ |
IntPoint FrameView::minimumScrollPosition() const |
{ |
return IntPoint(-scrollOrigin().x(), -scrollOrigin().y()); |
@@ -3387,7 +3405,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()) |
@@ -3398,6 +3416,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()) |