summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 01:11:35 +0000
committerdavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-09 01:11:35 +0000
commit41bee9f028ef02b0230b7680220a8b3b9d46771d (patch)
tree6902877cb6e6811afb24eca552fe9cc1791c97b5
parent7049bab85eb2d75b6def1eb982c7cc96fe975046 (diff)
downloadchromium_src-41bee9f028ef02b0230b7680220a8b3b9d46771d.zip
chromium_src-41bee9f028ef02b0230b7680220a8b3b9d46771d.tar.gz
chromium_src-41bee9f028ef02b0230b7680220a8b3b9d46771d.tar.bz2
Compute solid-color scrollbar properties on all platforms.
It's unnecessary to gate solid-color scrollbar properties on whether the root container masks to bounds, since the vertical adjust should resolve to zero in this case anyway. It's necessary to set VisibleToTotalLengthRatio for desktop overlay scrollbars to be sized correctly. BUG=331605 TEST=None R=aelias Review URL: https://codereview.chromium.org/106733005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243721 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--cc/layers/painted_scrollbar_layer_impl.cc4
-rw-r--r--cc/layers/painted_scrollbar_layer_impl.h1
-rw-r--r--cc/layers/scrollbar_layer_impl_base.cc3
-rw-r--r--cc/layers/scrollbar_layer_impl_base.h3
-rw-r--r--cc/layers/solid_color_scrollbar_layer_impl.cc4
-rw-r--r--cc/layers/solid_color_scrollbar_layer_impl.h1
-rw-r--r--cc/trees/layer_tree_impl.cc5
7 files changed, 17 insertions, 4 deletions
diff --git a/cc/layers/painted_scrollbar_layer_impl.cc b/cc/layers/painted_scrollbar_layer_impl.cc
index a7fdfa3..d67fbe4 100644
--- a/cc/layers/painted_scrollbar_layer_impl.cc
+++ b/cc/layers/painted_scrollbar_layer_impl.cc
@@ -169,6 +169,10 @@ float PaintedScrollbarLayerImpl::TrackLength() const {
return track_length_ + (orientation() == VERTICAL ? vertical_adjust() : 0);
}
+bool PaintedScrollbarLayerImpl::IsThumbResizable() const {
+ return false;
+}
+
const char* PaintedScrollbarLayerImpl::LayerTypeAsString() const {
return "cc::PaintedScrollbarLayerImpl";
}
diff --git a/cc/layers/painted_scrollbar_layer_impl.h b/cc/layers/painted_scrollbar_layer_impl.h
index a094416..16cfa55 100644
--- a/cc/layers/painted_scrollbar_layer_impl.h
+++ b/cc/layers/painted_scrollbar_layer_impl.h
@@ -55,6 +55,7 @@ class CC_EXPORT PaintedScrollbarLayerImpl : public ScrollbarLayerImplBase {
virtual int ThumbLength() const OVERRIDE;
virtual float TrackLength() const OVERRIDE;
virtual int TrackStart() const OVERRIDE;
+ virtual bool IsThumbResizable() const OVERRIDE;
private:
virtual const char* LayerTypeAsString() const OVERRIDE;
diff --git a/cc/layers/scrollbar_layer_impl_base.cc b/cc/layers/scrollbar_layer_impl_base.cc
index 362465b..e9b9569 100644
--- a/cc/layers/scrollbar_layer_impl_base.cc
+++ b/cc/layers/scrollbar_layer_impl_base.cc
@@ -66,6 +66,9 @@ void ScrollbarLayerImplBase::SetVerticalAdjust(float vertical_adjust) {
}
void ScrollbarLayerImplBase::SetVisibleToTotalLengthRatio(float ratio) {
+ if (!IsThumbResizable())
+ return;
+
if (visible_to_total_length_ratio_ == ratio)
return;
visible_to_total_length_ratio_ = ratio;
diff --git a/cc/layers/scrollbar_layer_impl_base.h b/cc/layers/scrollbar_layer_impl_base.h
index 360ef97..f75808e 100644
--- a/cc/layers/scrollbar_layer_impl_base.h
+++ b/cc/layers/scrollbar_layer_impl_base.h
@@ -64,6 +64,9 @@ class CC_EXPORT ScrollbarLayerImplBase : public LayerImpl {
virtual int ThumbLength() const = 0;
virtual float TrackLength() const = 0;
virtual int TrackStart() const = 0;
+ // Indicates whether the thumb length can be changed without going back to the
+ // main thread.
+ virtual bool IsThumbResizable() const = 0;
private:
int scroll_layer_id_;
diff --git a/cc/layers/solid_color_scrollbar_layer_impl.cc b/cc/layers/solid_color_scrollbar_layer_impl.cc
index 9f46a80..5c63203 100644
--- a/cc/layers/solid_color_scrollbar_layer_impl.cc
+++ b/cc/layers/solid_color_scrollbar_layer_impl.cc
@@ -72,6 +72,10 @@ int SolidColorScrollbarLayerImpl::TrackStart() const {
return 0;
}
+bool SolidColorScrollbarLayerImpl::IsThumbResizable() const {
+ return true;
+}
+
void SolidColorScrollbarLayerImpl::AppendQuads(QuadSink* quad_sink,
AppendQuadsData* append_quads_data) {
gfx::Rect thumb_quad_rect = ComputeThumbQuadRect();
diff --git a/cc/layers/solid_color_scrollbar_layer_impl.h b/cc/layers/solid_color_scrollbar_layer_impl.h
index 56cbacd..b725ed5 100644
--- a/cc/layers/solid_color_scrollbar_layer_impl.h
+++ b/cc/layers/solid_color_scrollbar_layer_impl.h
@@ -41,6 +41,7 @@ class CC_EXPORT SolidColorScrollbarLayerImpl : public ScrollbarLayerImplBase {
virtual int ThumbLength() const OVERRIDE;
virtual float TrackLength() const OVERRIDE;
virtual int TrackStart() const OVERRIDE;
+ virtual bool IsThumbResizable() const OVERRIDE;
private:
int thumb_thickness_;
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index 9f181cd..2d83af0 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -353,11 +353,8 @@ void LayerTreeImpl::UpdateDrawProperties() {
if (IsActiveTree() && RootScrollLayer() && RootContainerLayer())
UpdateRootScrollLayerSizeDelta();
- if (IsActiveTree() &&
- RootContainerLayer()
- && !RootContainerLayer()->masks_to_bounds()) {
+ if (IsActiveTree() && RootContainerLayer())
UpdateSolidColorScrollbars();
- }
needs_update_draw_properties_ = false;
render_surface_layer_list_.clear();