Index: Source/core/frame/VisualViewport.cpp |
diff --git a/Source/core/frame/VisualViewport.cpp b/Source/core/frame/VisualViewport.cpp |
index 95c5d1416348fae715a163656e7097708bdb2ab6..d52decdc70a7c01efee0cafd6db82cdb4c19199d 100644 |
--- a/Source/core/frame/VisualViewport.cpp |
+++ b/Source/core/frame/VisualViewport.cpp |
@@ -273,11 +273,9 @@ bool VisualViewport::magnifyScaleAroundAnchor(float magnifyDelta, const FloatPoi |
// | +-- outerViewportContainerLayer (fixed pos container) [frame container layer in DeprecatedPaintLayerCompositor] |
// | | +-- outerViewportScrollLayer [frame scroll layer in DeprecatedPaintLayerCompositor] |
// | | +-- content layers ... |
-// | +-- horizontal ScrollbarLayer (non-overlay) |
-// | +-- verticalScrollbarLayer (non-overlay) |
-// | +-- scroll corner (non-overlay) |
-// +- *horizontalScrollbarLayer (overlay) |
-// +- *verticalScrollbarLayer (overlay) |
+// +- horizontalScrollbarLayer |
+// +- verticalScrollbarLayer |
+// +- scroll corner (non-overlay only) |
// |
void VisualViewport::attachToLayerTree(GraphicsLayer* currentLayerTreeRoot, GraphicsLayerFactory* graphicsLayerFactory) |
{ |
@@ -324,8 +322,11 @@ void VisualViewport::attachToLayerTree(GraphicsLayer* currentLayerTreeRoot, Grap |
m_innerViewportContainerLayer->addChild(m_overscrollElasticityLayer.get()); |
m_overscrollElasticityLayer->addChild(m_pageScaleLayer.get()); |
m_pageScaleLayer->addChild(m_innerViewportScrollLayer.get()); |
- m_innerViewportContainerLayer->addChild(m_overlayScrollbarHorizontal.get()); |
- m_innerViewportContainerLayer->addChild(m_overlayScrollbarVertical.get()); |
+ |
+ if (visualViewportSuppliesScrollbars()) { |
+ m_innerViewportContainerLayer->addChild(m_overlayScrollbarHorizontal.get()); |
+ m_innerViewportContainerLayer->addChild(m_overlayScrollbarVertical.get()); |
+ } |
// Ensure this class is set as the scroll layer's ScrollableArea. |
coordinator->scrollableAreaScrollLayerDidChange(this); |
@@ -370,7 +371,6 @@ void VisualViewport::setupScrollbar(WebScrollbar::Orientation orientation) |
// The compositor will control the scrollbar's visibility. Set to invisible by defualt |
// so scrollbars don't show up in layout tests. |
webScrollbarLayer->layer()->setOpacity(0); |
- |
scrollbarGraphicsLayer->setContentsToPlatformLayer(webScrollbarLayer->layer()); |
scrollbarGraphicsLayer->setDrawsContent(false); |
} |
@@ -409,6 +409,14 @@ void VisualViewport::registerLayersWithTreeView(WebLayerTreeView* layerTreeView) |
m_pageScaleLayer->platformLayer(), |
m_innerViewportScrollLayer->platformLayer(), |
scrollLayer); |
+ |
+ // TODO(aelias): Remove this call after this setting is deleted. |
+ layerTreeView->setHidePinchScrollbarsNearMinScale(false); |
+} |
+ |
+bool VisualViewport::visualViewportSuppliesScrollbars() const |
+{ |
+ return frameHost().settings().viewportMetaEnabled(); |
} |
void VisualViewport::clearLayersForTreeView(WebLayerTreeView* layerTreeView) const |