Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(599)

Unified Diff: cc/layers/scrollbar_layer.cc

Issue 18341009: Refactor cc scrollbar layers to separate solid-color vs desktop. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased patch as it's sat for a while. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/layers/scrollbar_layer.cc
diff --git a/cc/layers/scrollbar_layer.cc b/cc/layers/scrollbar_layer.cc
index 4a6383504fc5750bb706b694764e664fff59309a..14eacc1511d6dba0fcf352dcb0f47ef5fa229d76 100644
--- a/cc/layers/scrollbar_layer.cc
+++ b/cc/layers/scrollbar_layer.cc
@@ -34,8 +34,8 @@ scoped_refptr<ScrollbarLayer> ScrollbarLayer::Create(
ScrollbarLayer::ScrollbarLayer(
scoped_ptr<Scrollbar> scrollbar,
int scroll_layer_id)
- : scrollbar_(scrollbar.Pass()),
- scroll_layer_id_(scroll_layer_id),
+ : ScrollbarLayerBase(scroll_layer_id, scrollbar->Orientation()),
+ scrollbar_(scrollbar.Pass()),
texture_format_(GL_INVALID_ENUM) {
if (!scrollbar_->IsOverlay())
SetShouldScrollOnMainThread(true);
@@ -43,31 +43,26 @@ ScrollbarLayer::ScrollbarLayer(
ScrollbarLayer::~ScrollbarLayer() {}
-void ScrollbarLayer::SetScrollLayerId(int id) {
- if (id == scroll_layer_id_)
- return;
-
- scroll_layer_id_ = id;
- SetNeedsFullTreeSync();
-}
-
bool ScrollbarLayer::OpacityCanAnimateOnImplThread() const {
return scrollbar_->IsOverlay();
}
-ScrollbarOrientation ScrollbarLayer::Orientation() const {
- return scrollbar_->Orientation();
-}
+ScrollbarLayerBase* ScrollbarLayer::ToScrollbarLayerBase() { return this; }
int ScrollbarLayer::MaxTextureSize() {
DCHECK(layer_tree_host());
return layer_tree_host()->GetRendererCapabilities().max_texture_size;
}
-float ScrollbarLayer::ClampScaleToMaxTextureSize(float scale) {
- if (layer_tree_host()->settings().solid_color_scrollbars)
- return scale;
+void ScrollbarLayer::SetScrollLayerId(int id) {
+ if (id == scroll_layer_id_)
+ return;
+ scroll_layer_id_ = id;
+ SetNeedsFullTreeSync();
+}
+
+float ScrollbarLayer::ClampScaleToMaxTextureSize(float scale) {
// If the scaled content_bounds() is bigger than the max texture size of the
// device, we need to clamp it by rescaling, since content_bounds() is used
// below to set the texture size.
@@ -104,23 +99,9 @@ void ScrollbarLayer::PushPropertiesTo(LayerImpl* layer) {
ScrollbarLayerImpl* scrollbar_layer = static_cast<ScrollbarLayerImpl*>(layer);
- if (layer_tree_host() &&
- layer_tree_host()->settings().solid_color_scrollbars) {
- int thickness_override =
- layer_tree_host()->settings().solid_color_scrollbar_thickness_dip;
- if (thickness_override != -1) {
- scrollbar_layer->set_thumb_thickness(thickness_override);
- } else {
- if (Orientation() == HORIZONTAL)
- scrollbar_layer->set_thumb_thickness(bounds().height());
- else
- scrollbar_layer->set_thumb_thickness(bounds().width());
- }
- } else {
- scrollbar_layer->set_thumb_thickness(thumb_thickness_);
- }
+ scrollbar_layer->set_thumb_thickness(thumb_thickness_);
scrollbar_layer->set_thumb_length(thumb_length_);
- if (Orientation() == HORIZONTAL) {
+ if (orientation() == HORIZONTAL) {
scrollbar_layer->set_track_start(track_rect_.x());
scrollbar_layer->set_track_length(track_rect_.width());
} else {
@@ -138,16 +119,13 @@ void ScrollbarLayer::PushPropertiesTo(LayerImpl* layer) {
else
scrollbar_layer->set_thumb_resource_id(0);
- scrollbar_layer->set_is_overlay_scrollbar(scrollbar_->IsOverlay());
+ // wjm: remove this?
enne (OOO) 2013/08/12 23:15:01 No. Mac can have overlay scrollbars that are not
wjmaclean 2013/08/14 18:19:44 Done.
+// scrollbar_layer->set_is_overlay_scrollbar(scrollbar_->IsOverlay());
// ScrollbarLayer must push properties every frame. crbug.com/259095
needs_push_properties_ = true;
}
-ScrollbarLayer* ScrollbarLayer::ToScrollbarLayer() {
- return this;
-}
-
void ScrollbarLayer::SetLayerTreeHost(LayerTreeHost* host) {
if (!host || host != layer_tree_host()) {
track_updater_ = NULL;
@@ -179,9 +157,6 @@ class ScrollbarPartPainter : public LayerPainter {
};
void ScrollbarLayer::CreateUpdaterIfNeeded() {
- if (layer_tree_host()->settings().solid_color_scrollbars)
- return;
-
texture_format_ =
layer_tree_host()->GetRendererCapabilities().best_texture_format;
@@ -216,9 +191,6 @@ bool ScrollbarLayer::UpdatePart(CachingBitmapContentLayerUpdater* painter,
LayerUpdater::Resource* resource,
gfx::Rect rect,
ResourceUpdateQueue* queue) {
- if (layer_tree_host()->settings().solid_color_scrollbars)
- return false;
-
// Skip painting and uploading if there are no invalidations and
// we already have valid texture data.
if (resource->texture()->have_backing_texture() &&
@@ -271,9 +243,6 @@ gfx::Rect ScrollbarLayer::ScrollbarLayerRectToContentRect(
void ScrollbarLayer::SetTexturePriorities(
const PriorityCalculator& priority_calc) {
- if (layer_tree_host()->settings().solid_color_scrollbars)
- return;
-
if (content_bounds().IsEmpty())
return;
DCHECK_LE(content_bounds().width(), MaxTextureSize());
@@ -299,9 +268,7 @@ bool ScrollbarLayer::Update(ResourceUpdateQueue* queue,
const OcclusionTracker* occlusion) {
track_rect_ = scrollbar_->TrackRect();
- if (layer_tree_host()->settings().solid_color_scrollbars)
- return false;
-
+ // WJM: is this specific to solid color scrollbars? probably!!
bool updated = false;
{
@@ -339,7 +306,7 @@ bool ScrollbarLayer::Update(ResourceUpdateQueue* queue,
gfx::Rect ScrollbarLayer::OriginThumbRect() const {
gfx::Size thumb_size;
- if (Orientation() == HORIZONTAL) {
+ if (orientation() == HORIZONTAL) {
thumb_size = gfx::Size(scrollbar_->ThumbLength(),
scrollbar_->ThumbThickness());
} else {

Powered by Google App Engine
This is Rietveld 408576698