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

Side by Side Diff: cc/trees/property_tree_builder.cc

Issue 2623313003: Add map from element id to scroll node index. (Closed)
Patch Set: Sync to head. Created 3 years, 11 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/trees/property_tree.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/trees/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 1140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1151 main_thread_scrolling_reasons != 1151 main_thread_scrolling_reasons !=
1152 data_from_ancestor.main_thread_scrolling_reasons; 1152 data_from_ancestor.main_thread_scrolling_reasons;
1153 bool requires_node = 1153 bool requires_node =
1154 scroll_node_uninheritable_criteria || 1154 scroll_node_uninheritable_criteria ||
1155 (main_thread_scrolling_reasons != 1155 (main_thread_scrolling_reasons !=
1156 MainThreadScrollingReason::kNotScrollingOnMain && 1156 MainThreadScrollingReason::kNotScrollingOnMain &&
1157 (has_different_main_thread_scrolling_reasons || 1157 (has_different_main_thread_scrolling_reasons ||
1158 data_from_ancestor 1158 data_from_ancestor
1159 .scroll_tree_parent_created_by_uninheritable_criteria)); 1159 .scroll_tree_parent_created_by_uninheritable_criteria));
1160 1160
1161 int node_id;
1161 if (!requires_node) { 1162 if (!requires_node) {
1162 data_for_children->scroll_tree_parent = parent_id; 1163 node_id = parent_id;
1164 data_for_children->scroll_tree_parent = node_id;
1163 } else { 1165 } else {
1164 ScrollNode node; 1166 ScrollNode node;
1165 node.owning_layer_id = layer->id(); 1167 node.owning_layer_id = layer->id();
1166 node.scrollable = scrollable; 1168 node.scrollable = scrollable;
1167 node.main_thread_scrolling_reasons = main_thread_scrolling_reasons; 1169 node.main_thread_scrolling_reasons = main_thread_scrolling_reasons;
1168 node.contains_non_fast_scrollable_region = 1170 node.contains_non_fast_scrollable_region =
1169 contains_non_fast_scrollable_region; 1171 contains_non_fast_scrollable_region;
1170 gfx::Size clip_bounds; 1172 gfx::Size clip_bounds;
1171 if (layer->scroll_clip_layer()) { 1173 if (layer->scroll_clip_layer()) {
1172 clip_bounds = layer->scroll_clip_layer()->bounds(); 1174 clip_bounds = layer->scroll_clip_layer()->bounds();
(...skipping 14 matching lines...) Expand all
1187 1189
1188 node.bounds = layer->bounds(); 1190 node.bounds = layer->bounds();
1189 node.offset_to_transform_parent = layer->offset_to_transform_parent(); 1191 node.offset_to_transform_parent = layer->offset_to_transform_parent();
1190 node.should_flatten = layer->should_flatten_transform_from_property_tree(); 1192 node.should_flatten = layer->should_flatten_transform_from_property_tree();
1191 node.user_scrollable_horizontal = layer->user_scrollable_horizontal(); 1193 node.user_scrollable_horizontal = layer->user_scrollable_horizontal();
1192 node.user_scrollable_vertical = layer->user_scrollable_vertical(); 1194 node.user_scrollable_vertical = layer->user_scrollable_vertical();
1193 node.element_id = layer->element_id(); 1195 node.element_id = layer->element_id();
1194 node.transform_id = 1196 node.transform_id =
1195 data_for_children->transform_tree_parent->transform_tree_index(); 1197 data_for_children->transform_tree_parent->transform_tree_index();
1196 1198
1197 data_for_children->scroll_tree_parent = 1199 node_id =
1198 data_for_children->property_trees->scroll_tree.Insert(node, parent_id); 1200 data_for_children->property_trees->scroll_tree.Insert(node, parent_id);
1201 data_for_children->scroll_tree_parent = node_id;
1199 data_for_children->main_thread_scrolling_reasons = 1202 data_for_children->main_thread_scrolling_reasons =
1200 node.main_thread_scrolling_reasons; 1203 node.main_thread_scrolling_reasons;
1201 data_for_children->scroll_tree_parent_created_by_uninheritable_criteria = 1204 data_for_children->scroll_tree_parent_created_by_uninheritable_criteria =
1202 scroll_node_uninheritable_criteria; 1205 scroll_node_uninheritable_criteria;
1203 data_for_children->property_trees 1206 data_for_children->property_trees
1204 ->layer_id_to_scroll_node_index[layer->id()] = 1207 ->layer_id_to_scroll_node_index[layer->id()] = node_id;
1205 data_for_children->scroll_tree_parent; 1208 // For animation subsystem purposes, if this layer has a compositor element
1209 // id, we build a map from that id to this scroll node.
1210 if (layer->element_id()) {
1211 data_for_children->property_trees
1212 ->element_id_to_scroll_node_index[layer->element_id()] = node_id;
1213 }
1206 1214
1207 if (node.scrollable) { 1215 if (node.scrollable) {
1208 data_for_children->property_trees->scroll_tree.SetBaseScrollOffset( 1216 data_for_children->property_trees->scroll_tree.SetBaseScrollOffset(
1209 layer->id(), layer->CurrentScrollOffset()); 1217 layer->id(), layer->CurrentScrollOffset());
1210 } 1218 }
1211 } 1219 }
1212 1220
1213 layer->SetScrollTreeIndex(data_for_children->scroll_tree_parent); 1221 layer->SetScrollTreeIndex(node_id);
1214 } 1222 }
1215 1223
1216 template <typename LayerType> 1224 template <typename LayerType>
1217 void SetBackfaceVisibilityTransform(LayerType* layer, 1225 void SetBackfaceVisibilityTransform(LayerType* layer,
1218 bool created_transform_node) { 1226 bool created_transform_node) {
1219 const bool is_at_boundary_of_3d_rendering_context = 1227 const bool is_at_boundary_of_3d_rendering_context =
1220 IsAtBoundaryOf3dRenderingContext(layer); 1228 IsAtBoundaryOf3dRenderingContext(layer);
1221 if (layer->use_parent_backface_visibility()) { 1229 if (layer->use_parent_backface_visibility()) {
1222 DCHECK(!is_at_boundary_of_3d_rendering_context); 1230 DCHECK(!is_at_boundary_of_3d_rendering_context);
1223 DCHECK(Parent(layer)); 1231 DCHECK(Parent(layer));
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
1539 color = SkColorSetA(color, 255); 1547 color = SkColorSetA(color, 255);
1540 BuildPropertyTreesTopLevelInternal( 1548 BuildPropertyTreesTopLevelInternal(
1541 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1549 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1542 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1550 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1543 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1551 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1544 device_transform, property_trees, color); 1552 device_transform, property_trees, color);
1545 property_trees->ResetCachedData(); 1553 property_trees->ResetCachedData();
1546 } 1554 }
1547 1555
1548 } // namespace cc 1556 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698