Index: third_party/WebKit/Source/core/page/scrolling/TopDocumentRootScrollerController.cpp |
diff --git a/third_party/WebKit/Source/core/page/scrolling/TopDocumentRootScrollerController.cpp b/third_party/WebKit/Source/core/page/scrolling/TopDocumentRootScrollerController.cpp |
index 48c64a0d69eac00822dac09f221903aaf75263a0..0552d56119c2f09abef8a073dcc592ff27cba81c 100644 |
--- a/third_party/WebKit/Source/core/page/scrolling/TopDocumentRootScrollerController.cpp |
+++ b/third_party/WebKit/Source/core/page/scrolling/TopDocumentRootScrollerController.cpp |
@@ -41,6 +41,27 @@ void TopDocumentRootScrollerController::didChangeRootScroller() { |
recomputeGlobalRootScroller(); |
} |
+void TopDocumentRootScrollerController::mainFrameViewResized() { |
+ Element* rootScroller = globalRootScroller(); |
+ if (!rootScroller) |
+ return; |
+ |
+ ScrollableArea* area = |
+ RootScrollerUtil::scrollableAreaForRootScroller(*rootScroller); |
+ |
+ if (!area) |
+ return; |
+ |
+ if (PaintLayer* layer = area->layer()) { |
+ layer->setNeedsCompositingInputsUpdate(); |
+ |
+ // This is needed if the root scroller is an iframe, since the iframe |
+ // doesn't have a scrolling/clip layer, its PLC has a container layer that |
+ // needs to be resized instead. |
+ layer->compositor()->frameViewDidChangeSize(); |
+ } |
+} |
+ |
Element* TopDocumentRootScrollerController::findGlobalRootScrollerElement() { |
if (!topDocument()) |
return nullptr; |
@@ -72,7 +93,8 @@ void TopDocumentRootScrollerController::recomputeGlobalRootScroller() { |
if (!target || target == m_globalRootScroller) |
return; |
- ScrollableArea* targetScroller = RootScrollerUtil::scrollableAreaFor(*target); |
+ ScrollableArea* targetScroller = |
+ RootScrollerUtil::scrollableAreaForRootScroller(*target); |
if (!targetScroller) |
return; |
@@ -95,9 +117,9 @@ void TopDocumentRootScrollerController::recomputeGlobalRootScroller() { |
setNeedsCompositingInputsUpdateOnGlobalRootScroller(); |
ScrollableArea* oldRootScrollerArea = |
- m_globalRootScroller |
- ? RootScrollerUtil::scrollableAreaFor(*m_globalRootScroller.get()) |
- : nullptr; |
+ m_globalRootScroller ? RootScrollerUtil::scrollableAreaForRootScroller( |
+ *m_globalRootScroller.get()) |
+ : nullptr; |
m_globalRootScroller = target; |
@@ -177,7 +199,7 @@ GraphicsLayer* TopDocumentRootScrollerController::rootScrollerLayer() const { |
return nullptr; |
ScrollableArea* area = |
- RootScrollerUtil::scrollableAreaFor(*m_globalRootScroller); |
+ RootScrollerUtil::scrollableAreaForRootScroller(*m_globalRootScroller); |
if (!area) |
return nullptr; |
@@ -191,6 +213,10 @@ GraphicsLayer* TopDocumentRootScrollerController::rootScrollerLayer() const { |
return graphicsLayer; |
} |
+PaintLayer* TopDocumentRootScrollerController::rootScrollerPaintLayer() const { |
+ return RootScrollerUtil::paintLayerForRootScroller(m_globalRootScroller); |
+} |
+ |
Element* TopDocumentRootScrollerController::globalRootScroller() const { |
return m_globalRootScroller.get(); |
} |