Index: cc/trees/layer_tree_impl.cc |
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
index 041c5fea5186105c11c86371cea45ed66c3ee206..54529b6cf3397f0d6c75bb77605122facfbd73ab 100644 |
--- a/cc/trees/layer_tree_impl.cc |
+++ b/cc/trees/layer_tree_impl.cc |
@@ -395,6 +395,29 @@ void LayerTreeImpl::DidUpdatePageScale() { |
} |
ForceScrollbarParameterUpdateAfterScaleChange(page_scale_layer()); |
+ |
+ HideInnerViewportScrollbarsIfNearMinimumScale(); |
+} |
+ |
+void LayerTreeImpl::HideInnerViewportScrollbarsIfNearMinimumScale() { |
+ if (!InnerViewportContainerLayer()) |
+ return; |
+ |
+ LayerImpl::ScrollbarSet* scrollbars = |
+ InnerViewportContainerLayer()->scrollbars(); |
+ |
+ if (!scrollbars) |
+ return; |
+ |
+ for (LayerImpl::ScrollbarSet::iterator it = scrollbars->begin(); |
+ it != scrollbars->end(); |
+ ++it) { |
+ ScrollbarLayerImplBase* scrollbar = *it; |
+ float minimum_scale_to_show_at = |
+ min_page_scale_factor() * settings().scrollbar_show_scale_threshold; |
+ scrollbar->SetHideLayerAndSubtree( |
+ current_page_scale_factor() < minimum_scale_to_show_at); |
+ } |
} |
SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() { |
@@ -476,6 +499,8 @@ void LayerTreeImpl::SetViewportLayersFromIds( |
DCHECK(outer_viewport_scroll_layer_ || |
outer_viewport_scroll_layer_id == Layer::INVALID_ID); |
+ HideInnerViewportScrollbarsIfNearMinimumScale(); |
+ |
if (!root_layer_scroll_offset_delegate_) |
return; |