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 |