Don't hide pinch viewport scrollbars near min-scale with device emulation.

Depends on http://crrev.com/1269813004.

BUG=515746
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1267603004

Cr-Commit-Position: refs/heads/master@{#341784}
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index 19963024..aba949e 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -58,6 +58,7 @@
       page_scale_factor_(page_scale_factor),
       min_page_scale_factor_(0),
       max_page_scale_factor_(0),
+      hide_pinch_scrollbars_near_min_scale_(false),
       elastic_overscroll_(elastic_overscroll),
       viewport_size_invalid_(false),
       needs_update_draw_properties_(true),
@@ -230,6 +231,9 @@
   target_tree->set_top_controls_height(top_controls_height_);
   target_tree->PushTopControls(nullptr);
 
+  target_tree->set_hide_pinch_scrollbars_near_min_scale(
+      hide_pinch_scrollbars_near_min_scale_);
+
   // Active tree already shares the page_scale_factor object with pending
   // tree so only the limits need to be provided.
   target_tree->PushPageScaleFactorAndLimits(nullptr, min_page_scale_factor(),
@@ -465,11 +469,10 @@
   }
 
   ForceScrollbarParameterUpdateAfterScaleChange(PageScaleLayer());
-
-  HideInnerViewportScrollbarsIfNearMinimumScale();
+  HideInnerViewportScrollbarsIfNeeded();
 }
 
-void LayerTreeImpl::HideInnerViewportScrollbarsIfNearMinimumScale() {
+void LayerTreeImpl::HideInnerViewportScrollbarsIfNeeded() {
   if (!InnerViewportContainerLayer())
     return;
 
@@ -479,15 +482,14 @@
   if (!scrollbars)
     return;
 
+  float minimum_scale_to_show_at = min_page_scale_factor() * 1.05f;
+  bool hide_scrollbars =
+      hide_pinch_scrollbars_near_min_scale_ &&
+      (current_page_scale_factor() < minimum_scale_to_show_at);
+
   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);
-  }
+       it != scrollbars->end(); ++it)
+    (*it)->SetHideLayerAndSubtree(hide_scrollbars);
 }
 
 SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() {
@@ -543,7 +545,7 @@
   inner_viewport_scroll_layer_id_ = inner_viewport_scroll_layer_id;
   outer_viewport_scroll_layer_id_ = outer_viewport_scroll_layer_id;
 
-  HideInnerViewportScrollbarsIfNearMinimumScale();
+  HideInnerViewportScrollbarsIfNeeded();
 }
 
 void LayerTreeImpl::ClearViewportLayers() {