OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |