Index: cc/trees/property_tree_builder.cc |
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc |
index 8cac600ba14507e71f3a39f3101c7525bd0d25c9..8a966a69272ef9fac5a40605d6e8cc9a0bcb54cd 100644 |
--- a/cc/trees/property_tree_builder.cc |
+++ b/cc/trees/property_tree_builder.cc |
@@ -1157,8 +1157,10 @@ void AddScrollNodeIfNeeded( |
data_from_ancestor |
.scroll_tree_parent_created_by_uninheritable_criteria)); |
+ int node_id; |
if (!requires_node) { |
- data_for_children->scroll_tree_parent = parent_id; |
+ node_id = parent_id; |
+ data_for_children->scroll_tree_parent = node_id; |
} else { |
ScrollNode node; |
node.owning_layer_id = layer->id(); |
@@ -1193,14 +1195,21 @@ void AddScrollNodeIfNeeded( |
node.transform_id = |
data_for_children->transform_tree_parent->transform_tree_index(); |
- data_for_children->scroll_tree_parent = |
+ node_id = |
data_for_children->property_trees->scroll_tree.Insert(node, parent_id); |
+ data_for_children->scroll_tree_parent = node_id; |
data_for_children->main_thread_scrolling_reasons = |
node.main_thread_scrolling_reasons; |
data_for_children->scroll_tree_parent_created_by_uninheritable_criteria = |
scroll_node_uninheritable_criteria; |
data_for_children->property_trees->scroll_id_to_index_map[layer->id()] = |
- data_for_children->scroll_tree_parent; |
+ node_id; |
+ // For animation subsystem purposes, if this layer has a compositor element |
+ // id, we build a map from that id to this scroll node. |
+ if (layer->element_id()) { |
+ data_for_children->property_trees |
+ ->element_id_to_scroll_node_index[layer->element_id()] = node_id; |
+ } |
if (node.scrollable) { |
data_for_children->property_trees->scroll_tree.SetBaseScrollOffset( |
@@ -1208,7 +1217,7 @@ void AddScrollNodeIfNeeded( |
} |
} |
- layer->SetScrollTreeIndex(data_for_children->scroll_tree_parent); |
+ layer->SetScrollTreeIndex(node_id); |
} |
template <typename LayerType> |