Chromium Code Reviews| Index: cc/trees/property_tree_builder.cc |
| diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc |
| index 1d637229d0a00b57383950d6938e6478d8561a1e..5b215d71a458a6da466b21344fab03426f2c1396 100644 |
| --- a/cc/trees/property_tree_builder.cc |
| +++ b/cc/trees/property_tree_builder.cc |
| @@ -41,6 +41,8 @@ struct DataForRecursion { |
| const LayerType* page_scale_layer; |
| const LayerType* inner_viewport_scroll_layer; |
| const LayerType* outer_viewport_scroll_layer; |
| + const LayerType* inner_viewport_container_layer; |
| + const LayerType* outer_viewport_container_layer; |
| const LayerType* overscroll_elasticity_layer; |
| gfx::Vector2dF elastic_overscroll; |
| float page_scale_factor; |
| @@ -680,8 +682,35 @@ void AddScrollNodeIfNeeded( |
| node.data.main_thread_scrolling_reasons = main_thread_scrolling_reasons; |
| node.data.contains_non_fast_scrollable_region = |
| contains_non_fast_scrollable_region; |
| - node.data.transform_id = |
| - data_for_children->transform_tree_parent->transform_tree_index(); |
| + gfx::Size clip_bounds; |
| + if (layer->scroll_clip_layer()) { |
| + clip_bounds = layer->scroll_clip_layer()->bounds(); |
| + clip_bounds.Enlarge(-layer->scroll_clip_layer()->bounds_delta().x(), |
| + -layer->scroll_clip_layer()->bounds_delta().y()); |
| + if (layer->scroll_clip_layer()->transform_tree_index() != |
| + kInvalidPropertyTreeNodeId) { |
| + node.data.envelope_page_scale_layer_with_clip_layer = |
| + !data_from_ancestor.transform_tree |
| + ->Node(layer->scroll_clip_layer()->transform_tree_index()) |
| + ->data.in_subtree_of_page_scale_layer && |
| + data_from_ancestor.in_subtree_of_page_scale_layer; |
| + } |
| + } |
| + node.data.scroll_clip_layer_bounds = clip_bounds; |
| + |
| + node.data.is_inner_viewport_scroll_layer = |
| + layer == data_from_ancestor.inner_viewport_scroll_layer; |
| + node.data.is_outer_viewport_scroll_layer = |
| + layer == data_from_ancestor.outer_viewport_scroll_layer; |
| + node.data.is_inner_viewport_container_layer = |
| + layer == data_from_ancestor.inner_viewport_container_layer; |
| + node.data.is_outer_viewport_container_layer = |
| + layer == data_from_ancestor.outer_viewport_container_layer; |
| + |
| + node.data.bounds = layer->bounds(); |
| + node.data.bounds.Enlarge(-layer->bounds_delta().x(), |
| + -layer->bounds_delta().y()); |
|
ajuma
2016/02/09 16:27:13
Since bounds_delta is always 0 on Layer, the only
|
| + |
| data_for_children->scroll_tree_parent = |
| data_for_children->scroll_tree->Insert(node, parent_id); |
| data_for_children->main_thread_scrolling_reasons = |
| @@ -848,6 +877,14 @@ void BuildPropertyTreesTopLevelInternal( |
| data_for_recursion.page_scale_layer = page_scale_layer; |
| data_for_recursion.inner_viewport_scroll_layer = inner_viewport_scroll_layer; |
| data_for_recursion.outer_viewport_scroll_layer = outer_viewport_scroll_layer; |
| + data_for_recursion.inner_viewport_container_layer = |
| + inner_viewport_scroll_layer |
| + ? inner_viewport_scroll_layer->scroll_clip_layer() |
| + : nullptr; |
| + data_for_recursion.outer_viewport_container_layer = |
| + outer_viewport_scroll_layer |
| + ? outer_viewport_scroll_layer->scroll_clip_layer() |
| + : nullptr; |
| data_for_recursion.overscroll_elasticity_layer = overscroll_elasticity_layer; |
| data_for_recursion.elastic_overscroll = elastic_overscroll; |
| data_for_recursion.page_scale_factor = page_scale_factor; |