summaryrefslogtreecommitdiffstats
path: root/cc/trees
diff options
context:
space:
mode:
authorskobes <skobes@chromium.org>2015-08-04 13:38:05 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-04 20:39:48 +0000
commit93102bcfca81af17e97fcad1c28b027fa7cad114 (patch)
treed1b1392ef7ec0828370b0dea648734b2761156fc /cc/trees
parent07ea627e1310ea81313db708d044753e7507b100 (diff)
downloadchromium_src-93102bcfca81af17e97fcad1c28b027fa7cad114.zip
chromium_src-93102bcfca81af17e97fcad1c28b027fa7cad114.tar.gz
chromium_src-93102bcfca81af17e97fcad1c28b027fa7cad114.tar.bz2
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}
Diffstat (limited to 'cc/trees')
-rw-r--r--cc/trees/layer_tree_host.cc5
-rw-r--r--cc/trees/layer_tree_host.h5
-rw-r--r--cc/trees/layer_tree_impl.cc26
-rw-r--r--cc/trees/layer_tree_impl.h7
-rw-r--r--cc/trees/layer_tree_impl_unittest.cc6
-rw-r--r--cc/trees/layer_tree_settings.cc1
-rw-r--r--cc/trees/layer_tree_settings.h1
7 files changed, 33 insertions, 18 deletions
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index 179d34c..4d72eb2 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -101,6 +101,7 @@ LayerTreeHost::LayerTreeHost(InitParams* params)
top_controls_shrink_blink_size_(false),
top_controls_height_(0.f),
top_controls_shown_ratio_(0.f),
+ hide_pinch_scrollbars_near_min_scale_(false),
device_scale_factor_(1.f),
visible_(true),
page_scale_factor_(1.f),
@@ -301,6 +302,10 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) {
// Setting property trees must happen before pushing the page scale.
sync_tree->SetPropertyTrees(property_trees_);
+
+ sync_tree->set_hide_pinch_scrollbars_near_min_scale(
+ hide_pinch_scrollbars_near_min_scale_);
+
sync_tree->PushPageScaleFromMainThread(
page_scale_factor_, min_page_scale_factor_, max_page_scale_factor_);
sync_tree->elastic_overscroll()->PushFromMainThread(elastic_overscroll_);
diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h
index 8015c34..c04e8e7 100644
--- a/cc/trees/layer_tree_host.h
+++ b/cc/trees/layer_tree_host.h
@@ -211,6 +211,10 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient {
void SetTopControlsHeight(float height, bool shrink);
void SetTopControlsShownRatio(float ratio);
+ void set_hide_pinch_scrollbars_near_min_scale(bool hide) {
+ hide_pinch_scrollbars_near_min_scale_ = hide;
+ }
+
gfx::Size device_viewport_size() const { return device_viewport_size_; }
void ApplyPageScaleDeltaFromImplSide(float page_scale_delta);
@@ -443,6 +447,7 @@ class CC_EXPORT LayerTreeHost : public MutatorHostClient {
bool top_controls_shrink_blink_size_;
float top_controls_height_;
float top_controls_shown_ratio_;
+ bool hide_pinch_scrollbars_near_min_scale_;
float device_scale_factor_;
bool visible_;
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index 1996302..aba949e 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -58,6 +58,7 @@ LayerTreeImpl::LayerTreeImpl(
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 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
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 @@ void LayerTreeImpl::DidUpdatePageScale() {
}
ForceScrollbarParameterUpdateAfterScaleChange(PageScaleLayer());
-
- HideInnerViewportScrollbarsIfNearMinimumScale();
+ HideInnerViewportScrollbarsIfNeeded();
}
-void LayerTreeImpl::HideInnerViewportScrollbarsIfNearMinimumScale() {
+void LayerTreeImpl::HideInnerViewportScrollbarsIfNeeded() {
if (!InnerViewportContainerLayer())
return;
@@ -479,15 +482,14 @@ void LayerTreeImpl::HideInnerViewportScrollbarsIfNearMinimumScale() {
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 @@ void LayerTreeImpl::SetViewportLayersFromIds(
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() {
diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h
index 476d8aa..afd4dfa 100644
--- a/cc/trees/layer_tree_impl.h
+++ b/cc/trees/layer_tree_impl.h
@@ -198,6 +198,10 @@ class CC_EXPORT LayerTreeImpl {
SyncedProperty<ScaleGroup>* page_scale_factor();
const SyncedProperty<ScaleGroup>* page_scale_factor() const;
+ void set_hide_pinch_scrollbars_near_min_scale(bool hide) {
+ hide_pinch_scrollbars_near_min_scale_ = hide;
+ }
+
SyncedElasticOverscroll* elastic_overscroll() {
return elastic_overscroll_.get();
}
@@ -392,7 +396,7 @@ class CC_EXPORT LayerTreeImpl {
bool SetPageScaleFactorLimits(float min_page_scale_factor,
float max_page_scale_factor);
void DidUpdatePageScale();
- void HideInnerViewportScrollbarsIfNearMinimumScale();
+ void HideInnerViewportScrollbarsIfNeeded();
void PushTopControls(const float* top_controls_shown_ratio);
LayerTreeHostImpl* layer_tree_host_impl_;
int source_frame_number_;
@@ -414,6 +418,7 @@ class CC_EXPORT LayerTreeImpl {
scoped_refptr<SyncedProperty<ScaleGroup>> page_scale_factor_;
float min_page_scale_factor_;
float max_page_scale_factor_;
+ bool hide_pinch_scrollbars_near_min_scale_;
scoped_refptr<SyncedElasticOverscroll> elastic_overscroll_;
diff --git a/cc/trees/layer_tree_impl_unittest.cc b/cc/trees/layer_tree_impl_unittest.cc
index 9e8fee5..5681418 100644
--- a/cc/trees/layer_tree_impl_unittest.cc
+++ b/cc/trees/layer_tree_impl_unittest.cc
@@ -25,7 +25,6 @@ class LayerTreeImplTest : public LayerTreeHostCommonTest {
LayerTreeImplTest() {
LayerTreeSettings settings;
settings.layer_transforms_should_scale_layer_contents = true;
- settings.scrollbar_show_scale_threshold = 1.1f;
host_impl_.reset(new FakeLayerTreeHostImpl(
settings, &proxy_, &shared_bitmap_manager_, &task_graph_runner_));
EXPECT_TRUE(host_impl_->InitializeRenderer(FakeOutputSurface::Create3d()));
@@ -1296,6 +1295,7 @@ TEST_F(LayerTreeImplTest, MakeScrollbarsInvisibleNearMinPageScale) {
const bool kIsOverlayScrollbar = true;
LayerTreeImpl* active_tree = host_impl().active_tree();
+ active_tree->set_hide_pinch_scrollbars_near_min_scale(true);
scoped_ptr<LayerImpl> scroll_layer = LayerImpl::Create(active_tree, 1);
scoped_ptr<SolidColorScrollbarLayerImpl> vertical_scrollbar_layer =
@@ -1343,11 +1343,11 @@ TEST_F(LayerTreeImplTest, MakeScrollbarsInvisibleNearMinPageScale) {
EXPECT_TRUE(vertical_scrollbar_layer->hide_layer_and_subtree());
EXPECT_TRUE(horizontal_scrollbar_layer->hide_layer_and_subtree());
- active_tree->PushPageScaleFromMainThread(1.05f, 1.0f, 4.0f);
+ active_tree->PushPageScaleFromMainThread(1.04f, 1.0f, 4.0f);
EXPECT_TRUE(vertical_scrollbar_layer->hide_layer_and_subtree());
EXPECT_TRUE(horizontal_scrollbar_layer->hide_layer_and_subtree());
- active_tree->PushPageScaleFromMainThread(1.1f, 1.0f, 4.0f);
+ active_tree->PushPageScaleFromMainThread(1.06f, 1.0f, 4.0f);
EXPECT_FALSE(vertical_scrollbar_layer->hide_layer_and_subtree());
EXPECT_FALSE(horizontal_scrollbar_layer->hide_layer_and_subtree());
diff --git a/cc/trees/layer_tree_settings.cc b/cc/trees/layer_tree_settings.cc
index 2a2d92b..0869e92 100644
--- a/cc/trees/layer_tree_settings.cc
+++ b/cc/trees/layer_tree_settings.cc
@@ -36,7 +36,6 @@ LayerTreeSettings::LayerTreeSettings()
scrollbar_fade_delay_ms(0),
scrollbar_fade_resize_delay_ms(0),
scrollbar_fade_duration_ms(0),
- scrollbar_show_scale_threshold(1.0f),
solid_color_scrollbar_color(SK_ColorWHITE),
timeout_and_draw_when_animation_checkerboards(true),
layer_transforms_should_scale_layer_contents(false),
diff --git a/cc/trees/layer_tree_settings.h b/cc/trees/layer_tree_settings.h
index 4820aca..27e80af 100644
--- a/cc/trees/layer_tree_settings.h
+++ b/cc/trees/layer_tree_settings.h
@@ -51,7 +51,6 @@ class CC_EXPORT LayerTreeSettings {
int scrollbar_fade_delay_ms;
int scrollbar_fade_resize_delay_ms;
int scrollbar_fade_duration_ms;
- float scrollbar_show_scale_threshold;
SkColor solid_color_scrollbar_color;
bool timeout_and_draw_when_animation_checkerboards;
bool layer_transforms_should_scale_layer_contents;