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; |