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 5d6d6d3fb280d241804e343a125a07cfdbfc5af3..48c64a0d69eac00822dac09f221903aaf75263a0 100644 |
--- a/third_party/WebKit/Source/core/page/scrolling/TopDocumentRootScrollerController.cpp |
+++ b/third_party/WebKit/Source/core/page/scrolling/TopDocumentRootScrollerController.cpp |
@@ -94,6 +94,11 @@ void TopDocumentRootScrollerController::recomputeGlobalRootScroller() { |
// changes. |
setNeedsCompositingInputsUpdateOnGlobalRootScroller(); |
+ ScrollableArea* oldRootScrollerArea = |
+ m_globalRootScroller |
+ ? RootScrollerUtil::scrollableAreaFor(*m_globalRootScroller.get()) |
+ : nullptr; |
+ |
m_globalRootScroller = target; |
setNeedsCompositingInputsUpdateOnGlobalRootScroller(); |
@@ -104,6 +109,13 @@ void TopDocumentRootScrollerController::recomputeGlobalRootScroller() { |
// ViewportScrollCallback to swap the target into the layout viewport |
// in RootFrameViewport. |
m_viewportApplyScroll->setScroller(targetScroller); |
+ |
+ // The scrollers may need to stop using their own scrollbars as Android |
+ // Chrome's VisualViewport provides the scrollbars for the root scroller. |
+ if (oldRootScrollerArea) |
+ oldRootScrollerArea->didChangeGlobalRootScroller(); |
+ |
+ targetScroller->didChangeGlobalRootScroller(); |
} |
Document* TopDocumentRootScrollerController::topDocument() const { |