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 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 // viewport bounds change, but do not unconditionally move by that delta | 751 // viewport bounds change, but do not unconditionally move by that delta |
752 // like fixed position nodes. | 752 // like fixed position nodes. |
753 if (scroll_ancestor->scrolls_inner_viewport) { | 753 if (scroll_ancestor->scrolls_inner_viewport) { |
754 data_for_children->property_trees->transform_tree | 754 data_for_children->property_trees->transform_tree |
755 .AddNodeAffectedByInnerViewportBoundsDelta(node->id); | 755 .AddNodeAffectedByInnerViewportBoundsDelta(node->id); |
756 } else if (scroll_ancestor->scrolls_outer_viewport) { | 756 } else if (scroll_ancestor->scrolls_outer_viewport) { |
757 data_for_children->property_trees->transform_tree | 757 data_for_children->property_trees->transform_tree |
758 .AddNodeAffectedByOuterViewportBoundsDelta(node->id); | 758 .AddNodeAffectedByOuterViewportBoundsDelta(node->id); |
759 } | 759 } |
760 } | 760 } |
| 761 // TODO(smcgruer): Pass main thread sticky-shifting offsets of |
| 762 // non-promoted ancestors, or promote all ancestor sticky elements. |
| 763 // See http://crbug.com/702229 |
761 sticky_data->main_thread_offset = | 764 sticky_data->main_thread_offset = |
762 layer->position().OffsetFromOrigin() - | 765 layer->position().OffsetFromOrigin() - |
763 sticky_data->constraints.parent_relative_sticky_box_offset | 766 sticky_data->constraints.parent_relative_sticky_box_offset |
764 .OffsetFromOrigin(); | 767 .OffsetFromOrigin(); |
| 768 |
| 769 // Copy the ancestor nodes for later use. These layers are guaranteed to |
| 770 // have transform nodes at this point because they are our ancestors (so |
| 771 // have already been processed) and are sticky (so have transform nodes). |
| 772 int shifting_sticky_box_layer_id = |
| 773 sticky_data->constraints.nearest_layer_shifting_sticky_box; |
| 774 if (shifting_sticky_box_layer_id != Layer::INVALID_ID) { |
| 775 sticky_data->nearest_node_shifting_sticky_box = |
| 776 data_for_children->property_trees->transform_tree |
| 777 .FindNodeIndexFromOwningLayerId(shifting_sticky_box_layer_id); |
| 778 DCHECK(sticky_data->nearest_node_shifting_sticky_box != |
| 779 TransformTree::kInvalidNodeId); |
| 780 } |
| 781 int shifting_containing_block_layer_id = |
| 782 sticky_data->constraints.nearest_layer_shifting_containing_block; |
| 783 if (shifting_containing_block_layer_id != Layer::INVALID_ID) { |
| 784 sticky_data->nearest_node_shifting_containing_block = |
| 785 data_for_children->property_trees->transform_tree |
| 786 .FindNodeIndexFromOwningLayerId( |
| 787 shifting_containing_block_layer_id); |
| 788 DCHECK(sticky_data->nearest_node_shifting_containing_block != |
| 789 TransformTree::kInvalidNodeId); |
| 790 } |
765 } | 791 } |
766 | 792 |
767 node->needs_local_transform_update = true; | 793 node->needs_local_transform_update = true; |
768 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id); | 794 data_from_ancestor.property_trees->transform_tree.UpdateTransforms(node->id); |
769 | 795 |
770 layer->set_offset_to_transform_parent(gfx::Vector2dF()); | 796 layer->set_offset_to_transform_parent(gfx::Vector2dF()); |
771 | 797 |
772 // Flattening (if needed) will be handled by |node|. | 798 // Flattening (if needed) will be handled by |node|. |
773 layer->set_should_flatten_transform_from_property_tree(false); | 799 layer->set_should_flatten_transform_from_property_tree(false); |
774 | 800 |
(...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1546 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1572 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
1547 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1573 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
1548 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1574 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
1549 device_transform, property_trees, color); | 1575 device_transform, property_trees, color); |
1550 property_trees->effect_tree.CreateOrReuseRenderSurfaces( | 1576 property_trees->effect_tree.CreateOrReuseRenderSurfaces( |
1551 &render_surfaces, root_layer->layer_tree_impl()); | 1577 &render_surfaces, root_layer->layer_tree_impl()); |
1552 property_trees->ResetCachedData(); | 1578 property_trees->ResetCachedData(); |
1553 } | 1579 } |
1554 | 1580 |
1555 } // namespace cc | 1581 } // namespace cc |
OLD | NEW |