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

Side by Side Diff: cc/trees/layer_tree_host_common.h

Issue 22567004: Ignore should-scroll-on-main-thread if main frame is not scrollable (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | cc/trees/layer_tree_host_impl.cc » ('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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 #ifndef CC_TREES_LAYER_TREE_HOST_COMMON_H_ 5 #ifndef CC_TREES_LAYER_TREE_HOST_COMMON_H_
6 #define CC_TREES_LAYER_TREE_HOST_COMMON_H_ 6 #define CC_TREES_LAYER_TREE_HOST_COMMON_H_
7 7
8 #include <limits> 8 #include <limits>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 template <typename LayerType> 111 template <typename LayerType>
112 static void CallFunctionForSubtree( 112 static void CallFunctionForSubtree(
113 LayerType* root_layer, 113 LayerType* root_layer,
114 const base::Callback<void(LayerType* layer)>& function); 114 const base::Callback<void(LayerType* layer)>& function);
115 115
116 // Returns a layer with the given id if one exists in the subtree starting 116 // Returns a layer with the given id if one exists in the subtree starting
117 // from the given root layer (including mask and replica layers). 117 // from the given root layer (including mask and replica layers).
118 template <typename LayerType> 118 template <typename LayerType>
119 static LayerType* FindLayerInSubtree(LayerType* root_layer, int layer_id); 119 static LayerType* FindLayerInSubtree(LayerType* root_layer, int layer_id);
120 120
121 template <typename LayerType>
122 static LayerType* FindFirstScrollableLayer(LayerType* root_layer);
123
121 static Layer* get_child_as_raw_ptr( 124 static Layer* get_child_as_raw_ptr(
122 const LayerList& children, 125 const LayerList& children,
123 size_t index) { 126 size_t index) {
124 return children[index].get(); 127 return children[index].get();
125 } 128 }
126 129
127 static LayerImpl* get_child_as_raw_ptr( 130 static LayerImpl* get_child_as_raw_ptr(
128 const OwnedLayerImplList& children, 131 const OwnedLayerImplList& children,
129 size_t index) { 132 size_t index) {
130 return children[index]; 133 return children[index];
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 180
178 for (size_t i = 0; i < root_layer->children().size(); ++i) { 181 for (size_t i = 0; i < root_layer->children().size(); ++i) {
179 if (LayerType* found = FindLayerInSubtree( 182 if (LayerType* found = FindLayerInSubtree(
180 get_child_as_raw_ptr(root_layer->children(), i), layer_id)) 183 get_child_as_raw_ptr(root_layer->children(), i), layer_id))
181 return found; 184 return found;
182 } 185 }
183 return NULL; 186 return NULL;
184 } 187 }
185 188
186 template <typename LayerType> 189 template <typename LayerType>
190 LayerType* LayerTreeHostCommon::FindFirstScrollableLayer(LayerType* layer) {
191 if (!layer)
192 return NULL;
193
194 if (layer->scrollable())
195 return layer;
196
197 for (size_t i = 0; i < layer->children().size(); ++i) {
198 LayerType* current = get_child_as_raw_ptr(layer->children(), i);
199 LayerType* found = FindFirstScrollableLayer(current);
200 if (found)
201 return found;
202 }
203
204 return NULL;
205 }
206
207 template <typename LayerType>
187 void LayerTreeHostCommon::CallFunctionForSubtree( 208 void LayerTreeHostCommon::CallFunctionForSubtree(
188 LayerType* root_layer, 209 LayerType* root_layer,
189 const base::Callback<void(LayerType* layer)>& function) { 210 const base::Callback<void(LayerType* layer)>& function) {
190 function.Run(root_layer); 211 function.Run(root_layer);
191 212
192 if (LayerType* mask_layer = root_layer->mask_layer()) 213 if (LayerType* mask_layer = root_layer->mask_layer())
193 function.Run(mask_layer); 214 function.Run(mask_layer);
194 if (LayerType* replica_layer = root_layer->replica_layer()) { 215 if (LayerType* replica_layer = root_layer->replica_layer()) {
195 function.Run(replica_layer); 216 function.Run(replica_layer);
196 if (LayerType* mask_layer = replica_layer->mask_layer()) 217 if (LayerType* mask_layer = replica_layer->mask_layer())
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 false, 265 false,
245 false, 266 false,
246 render_surface_layer_list) { 267 render_surface_layer_list) {
247 DCHECK(root_layer); 268 DCHECK(root_layer);
248 DCHECK(render_surface_layer_list); 269 DCHECK(render_surface_layer_list);
249 } 270 }
250 271
251 } // namespace cc 272 } // namespace cc
252 273
253 #endif // CC_TREES_LAYER_TREE_HOST_COMMON_H_ 274 #endif // CC_TREES_LAYER_TREE_HOST_COMMON_H_
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.cc ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698