| 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());
|
| +
|
| 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;
|
|
|