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 1139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1150 main_thread_scrolling_reasons != | 1150 main_thread_scrolling_reasons != |
1151 data_from_ancestor.main_thread_scrolling_reasons; | 1151 data_from_ancestor.main_thread_scrolling_reasons; |
1152 bool requires_node = | 1152 bool requires_node = |
1153 scroll_node_uninheritable_criteria || | 1153 scroll_node_uninheritable_criteria || |
1154 (main_thread_scrolling_reasons != | 1154 (main_thread_scrolling_reasons != |
1155 MainThreadScrollingReason::kNotScrollingOnMain && | 1155 MainThreadScrollingReason::kNotScrollingOnMain && |
1156 (has_different_main_thread_scrolling_reasons || | 1156 (has_different_main_thread_scrolling_reasons || |
1157 data_from_ancestor | 1157 data_from_ancestor |
1158 .scroll_tree_parent_created_by_uninheritable_criteria)); | 1158 .scroll_tree_parent_created_by_uninheritable_criteria)); |
1159 | 1159 |
| 1160 int node_id; |
1160 if (!requires_node) { | 1161 if (!requires_node) { |
1161 data_for_children->scroll_tree_parent = parent_id; | 1162 node_id = parent_id; |
| 1163 data_for_children->scroll_tree_parent = node_id; |
1162 } else { | 1164 } else { |
1163 ScrollNode node; | 1165 ScrollNode node; |
1164 node.owning_layer_id = layer->id(); | 1166 node.owning_layer_id = layer->id(); |
1165 node.scrollable = scrollable; | 1167 node.scrollable = scrollable; |
1166 node.main_thread_scrolling_reasons = main_thread_scrolling_reasons; | 1168 node.main_thread_scrolling_reasons = main_thread_scrolling_reasons; |
1167 node.contains_non_fast_scrollable_region = | 1169 node.contains_non_fast_scrollable_region = |
1168 contains_non_fast_scrollable_region; | 1170 contains_non_fast_scrollable_region; |
1169 gfx::Size clip_bounds; | 1171 gfx::Size clip_bounds; |
1170 if (layer->scroll_clip_layer()) { | 1172 if (layer->scroll_clip_layer()) { |
1171 clip_bounds = layer->scroll_clip_layer()->bounds(); | 1173 clip_bounds = layer->scroll_clip_layer()->bounds(); |
(...skipping 14 matching lines...) Expand all Loading... |
1186 | 1188 |
1187 node.bounds = layer->bounds(); | 1189 node.bounds = layer->bounds(); |
1188 node.offset_to_transform_parent = layer->offset_to_transform_parent(); | 1190 node.offset_to_transform_parent = layer->offset_to_transform_parent(); |
1189 node.should_flatten = layer->should_flatten_transform_from_property_tree(); | 1191 node.should_flatten = layer->should_flatten_transform_from_property_tree(); |
1190 node.user_scrollable_horizontal = layer->user_scrollable_horizontal(); | 1192 node.user_scrollable_horizontal = layer->user_scrollable_horizontal(); |
1191 node.user_scrollable_vertical = layer->user_scrollable_vertical(); | 1193 node.user_scrollable_vertical = layer->user_scrollable_vertical(); |
1192 node.element_id = layer->element_id(); | 1194 node.element_id = layer->element_id(); |
1193 node.transform_id = | 1195 node.transform_id = |
1194 data_for_children->transform_tree_parent->transform_tree_index(); | 1196 data_for_children->transform_tree_parent->transform_tree_index(); |
1195 | 1197 |
1196 data_for_children->scroll_tree_parent = | 1198 node_id = |
1197 data_for_children->property_trees->scroll_tree.Insert(node, parent_id); | 1199 data_for_children->property_trees->scroll_tree.Insert(node, parent_id); |
| 1200 data_for_children->scroll_tree_parent = node_id; |
1198 data_for_children->main_thread_scrolling_reasons = | 1201 data_for_children->main_thread_scrolling_reasons = |
1199 node.main_thread_scrolling_reasons; | 1202 node.main_thread_scrolling_reasons; |
1200 data_for_children->scroll_tree_parent_created_by_uninheritable_criteria = | 1203 data_for_children->scroll_tree_parent_created_by_uninheritable_criteria = |
1201 scroll_node_uninheritable_criteria; | 1204 scroll_node_uninheritable_criteria; |
1202 data_for_children->property_trees->scroll_id_to_index_map[layer->id()] = | 1205 data_for_children->property_trees->scroll_id_to_index_map[layer->id()] = |
1203 data_for_children->scroll_tree_parent; | 1206 node_id; |
| 1207 // For animation subsystem purposes, if this layer has a compositor element |
| 1208 // id, we build a map from that id to this scroll node. |
| 1209 if (layer->element_id()) { |
| 1210 data_for_children->property_trees |
| 1211 ->element_id_to_scroll_node_index[layer->element_id()] = node_id; |
| 1212 } |
1204 | 1213 |
1205 if (node.scrollable) { | 1214 if (node.scrollable) { |
1206 data_for_children->property_trees->scroll_tree.SetBaseScrollOffset( | 1215 data_for_children->property_trees->scroll_tree.SetBaseScrollOffset( |
1207 layer->id(), layer->CurrentScrollOffset()); | 1216 layer->id(), layer->CurrentScrollOffset()); |
1208 } | 1217 } |
1209 } | 1218 } |
1210 | 1219 |
1211 layer->SetScrollTreeIndex(data_for_children->scroll_tree_parent); | 1220 layer->SetScrollTreeIndex(node_id); |
1212 } | 1221 } |
1213 | 1222 |
1214 template <typename LayerType> | 1223 template <typename LayerType> |
1215 void SetBackfaceVisibilityTransform(LayerType* layer, | 1224 void SetBackfaceVisibilityTransform(LayerType* layer, |
1216 bool created_transform_node) { | 1225 bool created_transform_node) { |
1217 const bool is_at_boundary_of_3d_rendering_context = | 1226 const bool is_at_boundary_of_3d_rendering_context = |
1218 IsAtBoundaryOf3dRenderingContext(layer); | 1227 IsAtBoundaryOf3dRenderingContext(layer); |
1219 if (layer->use_parent_backface_visibility()) { | 1228 if (layer->use_parent_backface_visibility()) { |
1220 DCHECK(!is_at_boundary_of_3d_rendering_context); | 1229 DCHECK(!is_at_boundary_of_3d_rendering_context); |
1221 DCHECK(Parent(layer)); | 1230 DCHECK(Parent(layer)); |
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1537 color = SkColorSetA(color, 255); | 1546 color = SkColorSetA(color, 255); |
1538 BuildPropertyTreesTopLevelInternal( | 1547 BuildPropertyTreesTopLevelInternal( |
1539 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1548 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
1540 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1549 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
1541 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1550 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
1542 device_transform, property_trees, color); | 1551 device_transform, property_trees, color); |
1543 property_trees->ResetCachedData(); | 1552 property_trees->ResetCachedData(); |
1544 } | 1553 } |
1545 | 1554 |
1546 } // namespace cc | 1555 } // namespace cc |
OLD | NEW |