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

Side by Side Diff: cc/layers/scrollbar_layer_impl_base.cc

Issue 2827163005: Remove scroll layer ids from scrollbar layers (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « cc/layers/scrollbar_layer_impl_base.h ('k') | cc/layers/scrollbar_layer_interface.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/scrollbar_layer_impl_base.h" 5 #include "cc/layers/scrollbar_layer_impl_base.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include "cc/trees/effect_node.h" 8 #include "cc/trees/effect_node.h"
9 #include "cc/trees/layer_tree_impl.h" 9 #include "cc/trees/layer_tree_impl.h"
10 #include "ui/gfx/geometry/rect_conversions.h" 10 #include "ui/gfx/geometry/rect_conversions.h"
11 11
12 namespace cc { 12 namespace cc {
13 13
14 ScrollbarLayerImplBase::ScrollbarLayerImplBase( 14 ScrollbarLayerImplBase::ScrollbarLayerImplBase(
15 LayerTreeImpl* tree_impl, 15 LayerTreeImpl* tree_impl,
16 int id, 16 int id,
17 ScrollbarOrientation orientation, 17 ScrollbarOrientation orientation,
18 bool is_left_side_vertical_scrollbar, 18 bool is_left_side_vertical_scrollbar,
19 bool is_overlay) 19 bool is_overlay)
20 : LayerImpl(tree_impl, id), 20 : LayerImpl(tree_impl, id),
21 scroll_layer_id_(Layer::INVALID_ID),
22 is_overlay_scrollbar_(is_overlay), 21 is_overlay_scrollbar_(is_overlay),
23 thumb_thickness_scale_factor_(1.f), 22 thumb_thickness_scale_factor_(1.f),
24 current_pos_(0.f), 23 current_pos_(0.f),
25 clip_layer_length_(0.f), 24 clip_layer_length_(0.f),
26 scroll_layer_length_(0.f), 25 scroll_layer_length_(0.f),
27 orientation_(orientation), 26 orientation_(orientation),
28 is_left_side_vertical_scrollbar_(is_left_side_vertical_scrollbar), 27 is_left_side_vertical_scrollbar_(is_left_side_vertical_scrollbar),
29 vertical_adjust_(0.f) {} 28 vertical_adjust_(0.f) {}
30 29
31 ScrollbarLayerImplBase::~ScrollbarLayerImplBase() { 30 ScrollbarLayerImplBase::~ScrollbarLayerImplBase() {
32 layer_tree_impl()->UnregisterScrollbar(this); 31 layer_tree_impl()->UnregisterScrollbar(this);
33 } 32 }
34 33
35 void ScrollbarLayerImplBase::PushPropertiesTo(LayerImpl* layer) { 34 void ScrollbarLayerImplBase::PushPropertiesTo(LayerImpl* layer) {
36 LayerImpl::PushPropertiesTo(layer); 35 LayerImpl::PushPropertiesTo(layer);
37 DCHECK(layer->ToScrollbarLayer()); 36 DCHECK(layer->ToScrollbarLayer());
38 layer->ToScrollbarLayer()->set_is_overlay_scrollbar(is_overlay_scrollbar_); 37 layer->ToScrollbarLayer()->set_is_overlay_scrollbar(is_overlay_scrollbar_);
39 layer->ToScrollbarLayer()->SetScrollInfo(ScrollLayerId(), 38 layer->ToScrollbarLayer()->SetScrollElementId(scroll_element_id());
40 scroll_element_id());
41 } 39 }
42 40
43 ScrollbarLayerImplBase* ScrollbarLayerImplBase::ToScrollbarLayer() { 41 ScrollbarLayerImplBase* ScrollbarLayerImplBase::ToScrollbarLayer() {
44 return this; 42 return this;
45 } 43 }
46 44
47 void ScrollbarLayerImplBase::SetScrollInfo(int scroll_layer_id, 45 void ScrollbarLayerImplBase::SetScrollElementId(ElementId scroll_element_id) {
48 ElementId scroll_element_id) { 46 if (scroll_element_id_ == scroll_element_id)
wkorman 2017/04/20 17:53:47 Can we add a unit test that would have caught this
49 if (scroll_layer_id_ == scroll_layer_id &&
50 scroll_element_id == scroll_element_id)
51 return; 47 return;
52 48
53 layer_tree_impl()->UnregisterScrollbar(this); 49 layer_tree_impl()->UnregisterScrollbar(this);
54
55 scroll_layer_id_ = scroll_layer_id;
56 scroll_element_id_ = scroll_element_id; 50 scroll_element_id_ = scroll_element_id;
57
58 layer_tree_impl()->RegisterScrollbar(this); 51 layer_tree_impl()->RegisterScrollbar(this);
59 } 52 }
60 53
61 bool ScrollbarLayerImplBase::SetCurrentPos(float current_pos) { 54 bool ScrollbarLayerImplBase::SetCurrentPos(float current_pos) {
62 if (current_pos_ == current_pos) 55 if (current_pos_ == current_pos)
63 return false; 56 return false;
64 current_pos_ = current_pos; 57 current_pos_ = current_pos;
65 NoteLayerPropertyChanged(); 58 NoteLayerPropertyChanged();
66 return true; 59 return true;
67 } 60 }
68 61
69 bool ScrollbarLayerImplBase::CanScrollOrientation() const { 62 bool ScrollbarLayerImplBase::CanScrollOrientation() const {
70 LayerImpl* scroll_layer = layer_tree_impl()->LayerById(scroll_layer_id_); 63 // TODO(pdr): Refactor this to not depend on layers by using the associated
64 // scroll node's user_scrollable values.
65 LayerImpl* scroll_layer =
66 layer_tree_impl()->LayerByElementId(scroll_element_id_);
71 if (!scroll_layer) 67 if (!scroll_layer)
72 return false; 68 return false;
73 return scroll_layer->user_scrollable(orientation()) && 69 return scroll_layer->user_scrollable(orientation()) &&
74 clip_layer_length_ < scroll_layer_length_; 70 clip_layer_length_ < scroll_layer_length_;
75 } 71 }
76 72
77 bool ScrollbarLayerImplBase::SetVerticalAdjust(float vertical_adjust) { 73 bool ScrollbarLayerImplBase::SetVerticalAdjust(float vertical_adjust) {
78 if (vertical_adjust_ == vertical_adjust) 74 if (vertical_adjust_ == vertical_adjust)
79 return false; 75 return false;
80 vertical_adjust_ = vertical_adjust; 76 vertical_adjust_ = vertical_adjust;
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 layer_tree_impl()->AddToOpacityAnimationsMap(id(), opacity); 226 layer_tree_impl()->AddToOpacityAnimationsMap(id(), opacity);
231 227
232 node->opacity = opacity; 228 node->opacity = opacity;
233 node->effect_changed = true; 229 node->effect_changed = true;
234 property_trees->changed = true; 230 property_trees->changed = true;
235 property_trees->effect_tree.set_needs_update(true); 231 property_trees->effect_tree.set_needs_update(true);
236 layer_tree_impl()->set_needs_update_draw_properties(); 232 layer_tree_impl()->set_needs_update_draw_properties();
237 } 233 }
238 234
239 } // namespace cc 235 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/scrollbar_layer_impl_base.h ('k') | cc/layers/scrollbar_layer_interface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698