Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/property_tree_builder.h" | 5 #include "cc/trees/property_tree_builder.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 752 // viewport bounds change, but do not unconditionally move by that delta | 752 // viewport bounds change, but do not unconditionally move by that delta |
| 753 // like fixed position nodes. | 753 // like fixed position nodes. |
| 754 if (scroll_ancestor->scrolls_inner_viewport) { | 754 if (scroll_ancestor->scrolls_inner_viewport) { |
| 755 data_for_children->property_trees->transform_tree | 755 data_for_children->property_trees->transform_tree |
| 756 .AddNodeAffectedByInnerViewportBoundsDelta(node->id); | 756 .AddNodeAffectedByInnerViewportBoundsDelta(node->id); |
| 757 } else if (scroll_ancestor->scrolls_outer_viewport) { | 757 } else if (scroll_ancestor->scrolls_outer_viewport) { |
| 758 data_for_children->property_trees->transform_tree | 758 data_for_children->property_trees->transform_tree |
| 759 .AddNodeAffectedByOuterViewportBoundsDelta(node->id); | 759 .AddNodeAffectedByOuterViewportBoundsDelta(node->id); |
| 760 } | 760 } |
| 761 } | 761 } |
| 762 // TODO(smcgruer): Pass main thread sticky-shifting offsets of | |
| 763 // non-promoted ancestors, or promote all ancestor sticky elements. | |
| 764 // See http://crbug.com/702229 | |
| 762 sticky_data->main_thread_offset = | 765 sticky_data->main_thread_offset = |
| 763 layer->position().OffsetFromOrigin() - | 766 layer->position().OffsetFromOrigin() - |
| 764 sticky_data->constraints.parent_relative_sticky_box_offset | 767 sticky_data->constraints.parent_relative_sticky_box_offset |
| 765 .OffsetFromOrigin(); | 768 .OffsetFromOrigin(); |
| 769 | |
| 770 // Copy the ancestor nodes for later use. These layers are guaranteed to | |
| 771 // have transform nodes at this point because they are our ancestors (so | |
| 772 // have already been processed) and are sticky (so have transform nodes). | |
| 773 int shifting_sticky_box_layer_id = | |
| 774 sticky_data->constraints.nearest_layer_shifting_sticky_box; | |
| 775 if (shifting_sticky_box_layer_id != Layer::INVALID_ID) { | |
| 776 DCHECK(data_for_children->property_trees->IsInIdToIndexMap( | |
| 777 PropertyTrees::TreeType::TRANSFORM, shifting_sticky_box_layer_id)); | |
| 778 sticky_data->nearest_node_shifting_sticky_box = | |
| 779 data_for_children->property_trees | |
| 780 ->layer_id_to_transform_node_index[shifting_sticky_box_layer_id]; | |
|
ajuma
2017/03/17 23:59:52
This needs to use TransformTree::FindNodeIndexFrom
smcgruer
2017/03/20 13:36:30
Done.
| |
| 781 } | |
| 782 int shifting_containing_block_layer_id = | |
| 783 sticky_data->constraints.nearest_layer_shifting_containing_block; | |
| 784 if (shifting_containing_block_layer_id != Layer::INVALID_ID) { | |
| 785 DCHECK(data_for_children->property_trees->IsInIdToIndexMap( | |
| 786 PropertyTrees::TreeType::TRANSFORM, | |
| 787 shifting_containing_block_layer_id)); | |
| 788 sticky_data->nearest_node_shifting_containing_block = | |
| 789 data_for_children->property_trees->layer_id_to_transform_node_index | |
| 790 [shifting_containing_block_layer_id]; | |
| 791 } | |
| 766 } | 792 } |
| 767 | 793 |
| 768 node->needs_local_transform_update = true; | 794 node->needs_local_transform_update = true; |
| 769 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id); | 795 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id); |
| 770 | 796 |
| 771 layer->set_offset_to_transform_parent(gfx::Vector2dF()); | 797 layer->set_offset_to_transform_parent(gfx::Vector2dF()); |
| 772 | 798 |
| 773 // Flattening (if needed) will be handled by |node|. | 799 // Flattening (if needed) will be handled by |node|. |
| 774 layer->set_should_flatten_transform_from_property_tree(false); | 800 layer->set_should_flatten_transform_from_property_tree(false); |
| 775 | 801 |
| (...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1547 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1573 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
| 1548 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1574 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
| 1549 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1575 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
| 1550 device_transform, property_trees, color); | 1576 device_transform, property_trees, color); |
| 1551 property_trees->effect_tree.CreateOrReuseRenderSurfaces( | 1577 property_trees->effect_tree.CreateOrReuseRenderSurfaces( |
| 1552 &render_surfaces, root_layer->layer_tree_impl()); | 1578 &render_surfaces, root_layer->layer_tree_impl()); |
| 1553 property_trees->ResetCachedData(); | 1579 property_trees->ResetCachedData(); |
| 1554 } | 1580 } |
| 1555 | 1581 |
| 1556 } // namespace cc | 1582 } // namespace cc |
| OLD | NEW |