Index: cc/trees/property_tree_builder.cc |
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc |
index 763d50016bbe63119fb5fe2117a6b327cdf3b23f..1e6cb28607bfe429b8dcd044ed9608abe7bd11b3 100644 |
--- a/cc/trees/property_tree_builder.cc |
+++ b/cc/trees/property_tree_builder.cc |
@@ -1158,8 +1158,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(); |
@@ -1194,15 +1196,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 |
- ->layer_id_to_scroll_node_index[layer->id()] = |
- data_for_children->scroll_tree_parent; |
+ ->layer_id_to_scroll_node_index[layer->id()] = 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( |
@@ -1210,7 +1218,7 @@ void AddScrollNodeIfNeeded( |
} |
} |
- layer->SetScrollTreeIndex(data_for_children->scroll_tree_parent); |
+ layer->SetScrollTreeIndex(node_id); |
} |
template <typename LayerType> |