OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/layer_tree_host_common.h" | 5 #include "cc/trees/layer_tree_host_common.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 6313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6324 root->AddChild(container); | 6324 root->AddChild(container); |
6325 container->AddChild(scroller); | 6325 container->AddChild(scroller); |
6326 scroller->AddChild(sticky_pos); | 6326 scroller->AddChild(sticky_pos); |
6327 host()->SetRootLayer(root); | 6327 host()->SetRootLayer(root); |
6328 scroller->SetScrollClipLayerId(container->id()); | 6328 scroller->SetScrollClipLayerId(container->id()); |
6329 | 6329 |
6330 LayerStickyPositionConstraint sticky_position; | 6330 LayerStickyPositionConstraint sticky_position; |
6331 sticky_position.is_sticky = true; | 6331 sticky_position.is_sticky = true; |
6332 sticky_position.is_anchored_top = true; | 6332 sticky_position.is_anchored_top = true; |
6333 sticky_position.top_offset = 10.0f; | 6333 sticky_position.top_offset = 10.0f; |
6334 sticky_position.parent_relative_sticky_box_offset = gfx::Point(10, 20); | |
6335 sticky_position.scroll_container_relative_sticky_box_rect = | 6334 sticky_position.scroll_container_relative_sticky_box_rect = |
6336 gfx::Rect(10, 20, 10, 10); | 6335 gfx::Rect(10, 20, 10, 10); |
6337 sticky_position.scroll_container_relative_containing_block_rect = | 6336 sticky_position.scroll_container_relative_containing_block_rect = |
6338 gfx::Rect(0, 0, 50, 50); | 6337 gfx::Rect(0, 0, 50, 50); |
6339 sticky_pos->SetStickyPositionConstraint(sticky_position); | 6338 sticky_pos->SetStickyPositionConstraint(sticky_position); |
6340 | 6339 |
6341 root->SetBounds(gfx::Size(100, 100)); | 6340 root->SetBounds(gfx::Size(100, 100)); |
6342 container->SetBounds(gfx::Size(100, 100)); | 6341 container->SetBounds(gfx::Size(100, 100)); |
6343 scroller->SetBounds(gfx::Size(1000, 1000)); | 6342 scroller->SetBounds(gfx::Size(1000, 1000)); |
6344 sticky_pos->SetBounds(gfx::Size(10, 10)); | 6343 sticky_pos->SetBounds(gfx::Size(10, 10)); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6400 host()->SetRootLayer(root); | 6399 host()->SetRootLayer(root); |
6401 scroller->SetScrollClipLayerId(container->id()); | 6400 scroller->SetScrollClipLayerId(container->id()); |
6402 | 6401 |
6403 // The sticky layer has already been scrolled on the main thread side, and has | 6402 // The sticky layer has already been scrolled on the main thread side, and has |
6404 // stuck. This test then checks that further changes from cc-only scrolling | 6403 // stuck. This test then checks that further changes from cc-only scrolling |
6405 // are handled correctly. | 6404 // are handled correctly. |
6406 LayerStickyPositionConstraint sticky_position; | 6405 LayerStickyPositionConstraint sticky_position; |
6407 sticky_position.is_sticky = true; | 6406 sticky_position.is_sticky = true; |
6408 sticky_position.is_anchored_top = true; | 6407 sticky_position.is_anchored_top = true; |
6409 sticky_position.top_offset = 10.0f; | 6408 sticky_position.top_offset = 10.0f; |
6410 sticky_position.parent_relative_sticky_box_offset = gfx::Point(10, 20); | |
6411 sticky_position.scroll_container_relative_sticky_box_rect = | 6409 sticky_position.scroll_container_relative_sticky_box_rect = |
6412 gfx::Rect(10, 20, 10, 10); | 6410 gfx::Rect(10, 20, 10, 10); |
6413 sticky_position.scroll_container_relative_containing_block_rect = | 6411 sticky_position.scroll_container_relative_containing_block_rect = |
6414 gfx::Rect(0, 0, 50, 50); | 6412 gfx::Rect(0, 0, 50, 50); |
6415 sticky_pos->SetStickyPositionConstraint(sticky_position); | 6413 sticky_pos->SetStickyPositionConstraint(sticky_position); |
6416 | 6414 |
6417 root->SetBounds(gfx::Size(200, 200)); | 6415 root->SetBounds(gfx::Size(200, 200)); |
6418 container->SetBounds(gfx::Size(100, 100)); | 6416 container->SetBounds(gfx::Size(100, 100)); |
6419 container->SetPosition(gfx::PointF(50, 50)); | 6417 container->SetPosition(gfx::PointF(50, 50)); |
6420 scroller->SetBounds(gfx::Size(1000, 1000)); | 6418 scroller->SetBounds(gfx::Size(1000, 1000)); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6473 root->AddChild(container); | 6471 root->AddChild(container); |
6474 container->AddChild(scroller); | 6472 container->AddChild(scroller); |
6475 scroller->AddChild(sticky_pos); | 6473 scroller->AddChild(sticky_pos); |
6476 host()->SetRootLayer(root); | 6474 host()->SetRootLayer(root); |
6477 scroller->SetScrollClipLayerId(container->id()); | 6475 scroller->SetScrollClipLayerId(container->id()); |
6478 | 6476 |
6479 LayerStickyPositionConstraint sticky_position; | 6477 LayerStickyPositionConstraint sticky_position; |
6480 sticky_position.is_sticky = true; | 6478 sticky_position.is_sticky = true; |
6481 sticky_position.is_anchored_bottom = true; | 6479 sticky_position.is_anchored_bottom = true; |
6482 sticky_position.bottom_offset = 10.0f; | 6480 sticky_position.bottom_offset = 10.0f; |
6483 sticky_position.parent_relative_sticky_box_offset = gfx::Point(0, 200); | |
6484 sticky_position.scroll_container_relative_sticky_box_rect = | 6481 sticky_position.scroll_container_relative_sticky_box_rect = |
6485 gfx::Rect(0, 200, 10, 10); | 6482 gfx::Rect(0, 200, 10, 10); |
6486 sticky_position.scroll_container_relative_containing_block_rect = | 6483 sticky_position.scroll_container_relative_containing_block_rect = |
6487 gfx::Rect(0, 0, 100, 500); | 6484 gfx::Rect(0, 0, 100, 500); |
6488 sticky_pos->SetStickyPositionConstraint(sticky_position); | 6485 sticky_pos->SetStickyPositionConstraint(sticky_position); |
6489 | 6486 |
6490 root->SetBounds(gfx::Size(100, 100)); | 6487 root->SetBounds(gfx::Size(100, 100)); |
6491 container->SetBounds(gfx::Size(100, 100)); | 6488 container->SetBounds(gfx::Size(100, 100)); |
6492 scroller->SetBounds(gfx::Size(100, 1000)); | 6489 scroller->SetBounds(gfx::Size(100, 1000)); |
6493 sticky_pos->SetBounds(gfx::Size(10, 10)); | 6490 sticky_pos->SetBounds(gfx::Size(10, 10)); |
(...skipping 25 matching lines...) Expand all Loading... |
6519 root->AddChild(container); | 6516 root->AddChild(container); |
6520 container->AddChild(scroller); | 6517 container->AddChild(scroller); |
6521 scroller->AddChild(sticky_pos); | 6518 scroller->AddChild(sticky_pos); |
6522 host()->SetRootLayer(root); | 6519 host()->SetRootLayer(root); |
6523 scroller->SetScrollClipLayerId(container->id()); | 6520 scroller->SetScrollClipLayerId(container->id()); |
6524 | 6521 |
6525 LayerStickyPositionConstraint sticky_position; | 6522 LayerStickyPositionConstraint sticky_position; |
6526 sticky_position.is_sticky = true; | 6523 sticky_position.is_sticky = true; |
6527 sticky_position.is_anchored_bottom = true; | 6524 sticky_position.is_anchored_bottom = true; |
6528 sticky_position.bottom_offset = 10.0f; | 6525 sticky_position.bottom_offset = 10.0f; |
6529 sticky_position.parent_relative_sticky_box_offset = gfx::Point(0, 150); | |
6530 sticky_position.scroll_container_relative_sticky_box_rect = | 6526 sticky_position.scroll_container_relative_sticky_box_rect = |
6531 gfx::Rect(0, 150, 10, 10); | 6527 gfx::Rect(0, 150, 10, 10); |
6532 sticky_position.scroll_container_relative_containing_block_rect = | 6528 sticky_position.scroll_container_relative_containing_block_rect = |
6533 gfx::Rect(0, 100, 50, 50); | 6529 gfx::Rect(0, 100, 50, 50); |
6534 sticky_pos->SetStickyPositionConstraint(sticky_position); | 6530 sticky_pos->SetStickyPositionConstraint(sticky_position); |
6535 | 6531 |
6536 root->SetBounds(gfx::Size(100, 100)); | 6532 root->SetBounds(gfx::Size(100, 100)); |
6537 container->SetBounds(gfx::Size(100, 100)); | 6533 container->SetBounds(gfx::Size(100, 100)); |
6538 scroller->SetBounds(gfx::Size(1000, 1000)); | 6534 scroller->SetBounds(gfx::Size(1000, 1000)); |
6539 sticky_pos->SetBounds(gfx::Size(10, 10)); | 6535 sticky_pos->SetBounds(gfx::Size(10, 10)); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6592 LayerTreeHost::ViewportLayers viewport_layers; | 6588 LayerTreeHost::ViewportLayers viewport_layers; |
6593 viewport_layers.page_scale = root; | 6589 viewport_layers.page_scale = root; |
6594 viewport_layers.inner_viewport_container = root; | 6590 viewport_layers.inner_viewport_container = root; |
6595 viewport_layers.inner_viewport_scroll = scroller; | 6591 viewport_layers.inner_viewport_scroll = scroller; |
6596 host()->RegisterViewportLayers(viewport_layers); | 6592 host()->RegisterViewportLayers(viewport_layers); |
6597 | 6593 |
6598 LayerStickyPositionConstraint sticky_position; | 6594 LayerStickyPositionConstraint sticky_position; |
6599 sticky_position.is_sticky = true; | 6595 sticky_position.is_sticky = true; |
6600 sticky_position.is_anchored_bottom = true; | 6596 sticky_position.is_anchored_bottom = true; |
6601 sticky_position.bottom_offset = 10.0f; | 6597 sticky_position.bottom_offset = 10.0f; |
6602 sticky_position.parent_relative_sticky_box_offset = gfx::Point(0, 70); | |
6603 sticky_position.scroll_container_relative_sticky_box_rect = | 6598 sticky_position.scroll_container_relative_sticky_box_rect = |
6604 gfx::Rect(0, 70, 10, 10); | 6599 gfx::Rect(0, 70, 10, 10); |
6605 sticky_position.scroll_container_relative_containing_block_rect = | 6600 sticky_position.scroll_container_relative_containing_block_rect = |
6606 gfx::Rect(0, 60, 100, 100); | 6601 gfx::Rect(0, 60, 100, 100); |
6607 sticky_pos->SetStickyPositionConstraint(sticky_position); | 6602 sticky_pos->SetStickyPositionConstraint(sticky_position); |
6608 | 6603 |
6609 root->SetBounds(gfx::Size(100, 100)); | 6604 root->SetBounds(gfx::Size(100, 100)); |
6610 scroller->SetBounds(gfx::Size(100, 1000)); | 6605 scroller->SetBounds(gfx::Size(100, 1000)); |
6611 sticky_pos->SetBounds(gfx::Size(10, 10)); | 6606 sticky_pos->SetBounds(gfx::Size(10, 10)); |
6612 sticky_pos->SetPosition(gfx::PointF(0, 70)); | 6607 sticky_pos->SetPosition(gfx::PointF(0, 70)); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6671 viewport_layers.inner_viewport_container = root; | 6666 viewport_layers.inner_viewport_container = root; |
6672 viewport_layers.outer_viewport_container = outer_clip; | 6667 viewport_layers.outer_viewport_container = outer_clip; |
6673 viewport_layers.inner_viewport_scroll = scroller; | 6668 viewport_layers.inner_viewport_scroll = scroller; |
6674 viewport_layers.outer_viewport_scroll = outer_viewport; | 6669 viewport_layers.outer_viewport_scroll = outer_viewport; |
6675 host()->RegisterViewportLayers(viewport_layers); | 6670 host()->RegisterViewportLayers(viewport_layers); |
6676 | 6671 |
6677 LayerStickyPositionConstraint sticky_position; | 6672 LayerStickyPositionConstraint sticky_position; |
6678 sticky_position.is_sticky = true; | 6673 sticky_position.is_sticky = true; |
6679 sticky_position.is_anchored_bottom = true; | 6674 sticky_position.is_anchored_bottom = true; |
6680 sticky_position.bottom_offset = 10.0f; | 6675 sticky_position.bottom_offset = 10.0f; |
6681 sticky_position.parent_relative_sticky_box_offset = gfx::Point(0, 70); | |
6682 sticky_position.scroll_container_relative_sticky_box_rect = | 6676 sticky_position.scroll_container_relative_sticky_box_rect = |
6683 gfx::Rect(0, 70, 10, 10); | 6677 gfx::Rect(0, 70, 10, 10); |
6684 sticky_position.scroll_container_relative_containing_block_rect = | 6678 sticky_position.scroll_container_relative_containing_block_rect = |
6685 gfx::Rect(0, 60, 100, 100); | 6679 gfx::Rect(0, 60, 100, 100); |
6686 sticky_pos->SetStickyPositionConstraint(sticky_position); | 6680 sticky_pos->SetStickyPositionConstraint(sticky_position); |
6687 | 6681 |
6688 root->SetBounds(gfx::Size(100, 100)); | 6682 root->SetBounds(gfx::Size(100, 100)); |
6689 scroller->SetBounds(gfx::Size(100, 1000)); | 6683 scroller->SetBounds(gfx::Size(100, 1000)); |
6690 outer_clip->SetBounds(gfx::Size(100, 100)); | 6684 outer_clip->SetBounds(gfx::Size(100, 100)); |
6691 sticky_pos->SetBounds(gfx::Size(10, 10)); | 6685 sticky_pos->SetBounds(gfx::Size(10, 10)); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6748 scroller->AddChild(sticky_pos); | 6742 scroller->AddChild(sticky_pos); |
6749 host()->SetRootLayer(root); | 6743 host()->SetRootLayer(root); |
6750 scroller->SetScrollClipLayerId(container->id()); | 6744 scroller->SetScrollClipLayerId(container->id()); |
6751 | 6745 |
6752 LayerStickyPositionConstraint sticky_position; | 6746 LayerStickyPositionConstraint sticky_position; |
6753 sticky_position.is_sticky = true; | 6747 sticky_position.is_sticky = true; |
6754 sticky_position.is_anchored_left = true; | 6748 sticky_position.is_anchored_left = true; |
6755 sticky_position.is_anchored_right = true; | 6749 sticky_position.is_anchored_right = true; |
6756 sticky_position.left_offset = 10.f; | 6750 sticky_position.left_offset = 10.f; |
6757 sticky_position.right_offset = 10.f; | 6751 sticky_position.right_offset = 10.f; |
6758 sticky_position.parent_relative_sticky_box_offset = gfx::Point(145, 0); | |
6759 sticky_position.scroll_container_relative_sticky_box_rect = | 6752 sticky_position.scroll_container_relative_sticky_box_rect = |
6760 gfx::Rect(145, 0, 10, 10); | 6753 gfx::Rect(145, 0, 10, 10); |
6761 sticky_position.scroll_container_relative_containing_block_rect = | 6754 sticky_position.scroll_container_relative_containing_block_rect = |
6762 gfx::Rect(100, 0, 100, 100); | 6755 gfx::Rect(100, 0, 100, 100); |
6763 sticky_pos->SetStickyPositionConstraint(sticky_position); | 6756 sticky_pos->SetStickyPositionConstraint(sticky_position); |
6764 | 6757 |
6765 root->SetBounds(gfx::Size(100, 100)); | 6758 root->SetBounds(gfx::Size(100, 100)); |
6766 container->SetBounds(gfx::Size(100, 100)); | 6759 container->SetBounds(gfx::Size(100, 100)); |
6767 scroller->SetBounds(gfx::Size(1000, 1000)); | 6760 scroller->SetBounds(gfx::Size(1000, 1000)); |
6768 sticky_pos->SetBounds(gfx::Size(10, 10)); | 6761 sticky_pos->SetBounds(gfx::Size(10, 10)); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6851 root->AddChild(container); | 6844 root->AddChild(container); |
6852 container->AddChild(scroller); | 6845 container->AddChild(scroller); |
6853 scroller->AddChild(sticky_pos); | 6846 scroller->AddChild(sticky_pos); |
6854 host()->SetRootLayer(root); | 6847 host()->SetRootLayer(root); |
6855 scroller->SetScrollClipLayerId(container->id()); | 6848 scroller->SetScrollClipLayerId(container->id()); |
6856 | 6849 |
6857 LayerStickyPositionConstraint sticky_position; | 6850 LayerStickyPositionConstraint sticky_position; |
6858 sticky_position.is_sticky = true; | 6851 sticky_position.is_sticky = true; |
6859 sticky_position.is_anchored_top = true; | 6852 sticky_position.is_anchored_top = true; |
6860 sticky_position.top_offset = 10.0f; | 6853 sticky_position.top_offset = 10.0f; |
6861 sticky_position.parent_relative_sticky_box_offset = gfx::Point(10, 20); | |
6862 sticky_position.scroll_container_relative_sticky_box_rect = | 6854 sticky_position.scroll_container_relative_sticky_box_rect = |
6863 gfx::Rect(10, 20, 10, 10); | 6855 gfx::Rect(10, 20, 10, 10); |
6864 sticky_position.scroll_container_relative_containing_block_rect = | 6856 sticky_position.scroll_container_relative_containing_block_rect = |
6865 gfx::Rect(0, 0, 50, 50); | 6857 gfx::Rect(0, 0, 50, 50); |
6866 sticky_pos->SetStickyPositionConstraint(sticky_position); | 6858 sticky_pos->SetStickyPositionConstraint(sticky_position); |
6867 | 6859 |
6868 root->SetBounds(gfx::Size(100, 100)); | 6860 root->SetBounds(gfx::Size(100, 100)); |
6869 container->SetBounds(gfx::Size(100, 100)); | 6861 container->SetBounds(gfx::Size(100, 100)); |
6870 scroller->SetBounds(gfx::Size(1000, 1000)); | 6862 scroller->SetBounds(gfx::Size(1000, 1000)); |
6871 sticky_pos->SetBounds(gfx::Size(10, 10)); | 6863 sticky_pos->SetBounds(gfx::Size(10, 10)); |
(...skipping 25 matching lines...) Expand all Loading... |
6897 // Scroll past the sticking point, the Y coordinate should now be clamped. | 6889 // Scroll past the sticking point, the Y coordinate should now be clamped. |
6898 SetScrollOffsetDelta(scroller_impl, gfx::Vector2dF(15.f, 15.f)); | 6890 SetScrollOffsetDelta(scroller_impl, gfx::Vector2dF(15.f, 15.f)); |
6899 ExecuteCalculateDrawProperties(root_impl); | 6891 ExecuteCalculateDrawProperties(root_impl); |
6900 EXPECT_VECTOR2DF_EQ( | 6892 EXPECT_VECTOR2DF_EQ( |
6901 gfx::Vector2dF(-5.f, 10.f), | 6893 gfx::Vector2dF(-5.f, 10.f), |
6902 sticky_pos_impl->ScreenSpaceTransform().To2dTranslation()); | 6894 sticky_pos_impl->ScreenSpaceTransform().To2dTranslation()); |
6903 | 6895 |
6904 // Now the main thread commits the new position of the sticky element. | 6896 // Now the main thread commits the new position of the sticky element. |
6905 scroller->SetScrollOffset(gfx::ScrollOffset(15, 15)); | 6897 scroller->SetScrollOffset(gfx::ScrollOffset(15, 15)); |
6906 sticky_pos->SetPosition(gfx::PointF(10, 25)); | 6898 sticky_pos->SetPosition(gfx::PointF(10, 25)); |
| 6899 sticky_pos->SetStickyMainThreadOffset(gfx::Size(0, 5)); |
6907 ExecuteCalculateDrawProperties(root.get()); | 6900 ExecuteCalculateDrawProperties(root.get()); |
6908 host()->host_impl()->CreatePendingTree(); | 6901 host()->host_impl()->CreatePendingTree(); |
6909 host()->CommitAndCreatePendingTree(); | 6902 host()->CommitAndCreatePendingTree(); |
6910 host()->host_impl()->ActivateSyncTree(); | 6903 host()->host_impl()->ActivateSyncTree(); |
6911 layer_tree_impl = host()->host_impl()->active_tree(); | 6904 layer_tree_impl = host()->host_impl()->active_tree(); |
6912 root_impl = layer_tree_impl->LayerById(root->id()); | 6905 root_impl = layer_tree_impl->LayerById(root->id()); |
6913 scroller_impl = layer_tree_impl->LayerById(scroller->id()); | 6906 scroller_impl = layer_tree_impl->LayerById(scroller->id()); |
6914 sticky_pos_impl = layer_tree_impl->LayerById(sticky_pos->id()); | 6907 sticky_pos_impl = layer_tree_impl->LayerById(sticky_pos->id()); |
6915 | 6908 |
6916 // The element should still be where it was before. We reset the delta to | 6909 // The element should still be where it was before. We reset the delta to |
(...skipping 26 matching lines...) Expand all Loading... |
6943 container->AddChild(scroller); | 6936 container->AddChild(scroller); |
6944 scroller->AddChild(sticky_container); | 6937 scroller->AddChild(sticky_container); |
6945 sticky_container->AddChild(sticky_pos); | 6938 sticky_container->AddChild(sticky_pos); |
6946 host()->SetRootLayer(root); | 6939 host()->SetRootLayer(root); |
6947 scroller->SetScrollClipLayerId(container->id()); | 6940 scroller->SetScrollClipLayerId(container->id()); |
6948 | 6941 |
6949 LayerStickyPositionConstraint sticky_position; | 6942 LayerStickyPositionConstraint sticky_position; |
6950 sticky_position.is_sticky = true; | 6943 sticky_position.is_sticky = true; |
6951 sticky_position.is_anchored_top = true; | 6944 sticky_position.is_anchored_top = true; |
6952 sticky_position.top_offset = 10.0f; | 6945 sticky_position.top_offset = 10.0f; |
6953 // The sticky position layer is only offset by (0, 10) from its parent | |
6954 // layer, this position is used to determine the offset applied by the main | |
6955 // thread. | |
6956 sticky_position.parent_relative_sticky_box_offset = gfx::Point(0, 10); | |
6957 sticky_position.scroll_container_relative_sticky_box_rect = | 6946 sticky_position.scroll_container_relative_sticky_box_rect = |
6958 gfx::Rect(20, 30, 10, 10); | 6947 gfx::Rect(20, 30, 10, 10); |
6959 sticky_position.scroll_container_relative_containing_block_rect = | 6948 sticky_position.scroll_container_relative_containing_block_rect = |
6960 gfx::Rect(20, 20, 30, 30); | 6949 gfx::Rect(20, 20, 30, 30); |
6961 sticky_pos->SetStickyPositionConstraint(sticky_position); | 6950 sticky_pos->SetStickyPositionConstraint(sticky_position); |
6962 | 6951 |
6963 root->SetBounds(gfx::Size(100, 100)); | 6952 root->SetBounds(gfx::Size(100, 100)); |
6964 container->SetBounds(gfx::Size(100, 100)); | 6953 container->SetBounds(gfx::Size(100, 100)); |
6965 scroller->SetBounds(gfx::Size(1000, 1000)); | 6954 scroller->SetBounds(gfx::Size(1000, 1000)); |
6966 sticky_container->SetPosition(gfx::PointF(20, 20)); | 6955 sticky_container->SetPosition(gfx::PointF(20, 20)); |
(...skipping 27 matching lines...) Expand all Loading... |
6994 // Scroll past the sticking point, the Y coordinate should now be clamped. | 6983 // Scroll past the sticking point, the Y coordinate should now be clamped. |
6995 SetScrollOffsetDelta(scroller_impl, gfx::Vector2dF(0.f, 25.f)); | 6984 SetScrollOffsetDelta(scroller_impl, gfx::Vector2dF(0.f, 25.f)); |
6996 ExecuteCalculateDrawProperties(root_impl); | 6985 ExecuteCalculateDrawProperties(root_impl); |
6997 EXPECT_VECTOR2DF_EQ( | 6986 EXPECT_VECTOR2DF_EQ( |
6998 gfx::Vector2dF(20.f, 10.f), | 6987 gfx::Vector2dF(20.f, 10.f), |
6999 sticky_pos_impl->ScreenSpaceTransform().To2dTranslation()); | 6988 sticky_pos_impl->ScreenSpaceTransform().To2dTranslation()); |
7000 | 6989 |
7001 // Now the main thread commits the new position of the sticky element. | 6990 // Now the main thread commits the new position of the sticky element. |
7002 scroller->SetScrollOffset(gfx::ScrollOffset(0, 25)); | 6991 scroller->SetScrollOffset(gfx::ScrollOffset(0, 25)); |
7003 sticky_pos->SetPosition(gfx::PointF(0, 15)); | 6992 sticky_pos->SetPosition(gfx::PointF(0, 15)); |
| 6993 sticky_pos->SetStickyMainThreadOffset(gfx::Size(0, 5)); |
7004 ExecuteCalculateDrawProperties(root.get()); | 6994 ExecuteCalculateDrawProperties(root.get()); |
7005 host()->host_impl()->CreatePendingTree(); | 6995 host()->host_impl()->CreatePendingTree(); |
7006 host()->CommitAndCreatePendingTree(); | 6996 host()->CommitAndCreatePendingTree(); |
7007 host()->host_impl()->ActivateSyncTree(); | 6997 host()->host_impl()->ActivateSyncTree(); |
7008 layer_tree_impl = host()->host_impl()->active_tree(); | 6998 layer_tree_impl = host()->host_impl()->active_tree(); |
7009 root_impl = layer_tree_impl->LayerById(root->id()); | 6999 root_impl = layer_tree_impl->LayerById(root->id()); |
7010 scroller_impl = layer_tree_impl->LayerById(scroller->id()); | 7000 scroller_impl = layer_tree_impl->LayerById(scroller->id()); |
7011 sticky_pos_impl = layer_tree_impl->LayerById(sticky_pos->id()); | 7001 sticky_pos_impl = layer_tree_impl->LayerById(sticky_pos->id()); |
7012 | 7002 |
7013 // The element should still be where it was before. We reset the delta to | 7003 // The element should still be where it was before. We reset the delta to |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7046 host()->SetRootLayer(root); | 7036 host()->SetRootLayer(root); |
7047 scroller->SetScrollClipLayerId(container->id()); | 7037 scroller->SetScrollClipLayerId(container->id()); |
7048 gfx::Transform t; | 7038 gfx::Transform t; |
7049 t.Scale(2, 2); | 7039 t.Scale(2, 2); |
7050 sticky_pos->SetTransform(t); | 7040 sticky_pos->SetTransform(t); |
7051 | 7041 |
7052 LayerStickyPositionConstraint sticky_position; | 7042 LayerStickyPositionConstraint sticky_position; |
7053 sticky_position.is_sticky = true; | 7043 sticky_position.is_sticky = true; |
7054 sticky_position.is_anchored_top = true; | 7044 sticky_position.is_anchored_top = true; |
7055 sticky_position.top_offset = 0.0f; | 7045 sticky_position.top_offset = 0.0f; |
7056 sticky_position.parent_relative_sticky_box_offset = gfx::Point(0, 20); | |
7057 sticky_position.scroll_container_relative_sticky_box_rect = | 7046 sticky_position.scroll_container_relative_sticky_box_rect = |
7058 gfx::Rect(0, 20, 10, 10); | 7047 gfx::Rect(0, 20, 10, 10); |
7059 sticky_position.scroll_container_relative_containing_block_rect = | 7048 sticky_position.scroll_container_relative_containing_block_rect = |
7060 gfx::Rect(0, 0, 50, 50); | 7049 gfx::Rect(0, 0, 50, 50); |
7061 sticky_pos->SetStickyPositionConstraint(sticky_position); | 7050 sticky_pos->SetStickyPositionConstraint(sticky_position); |
7062 | 7051 |
7063 root->SetBounds(gfx::Size(100, 100)); | 7052 root->SetBounds(gfx::Size(100, 100)); |
7064 container->SetBounds(gfx::Size(100, 100)); | 7053 container->SetBounds(gfx::Size(100, 100)); |
7065 scroller->SetBounds(gfx::Size(1000, 1000)); | 7054 scroller->SetBounds(gfx::Size(1000, 1000)); |
7066 sticky_pos->SetBounds(gfx::Size(10, 10)); | 7055 sticky_pos->SetBounds(gfx::Size(10, 10)); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7125 host()->SetRootLayer(root); | 7114 host()->SetRootLayer(root); |
7126 scroller->SetScrollClipLayerId(container->id()); | 7115 scroller->SetScrollClipLayerId(container->id()); |
7127 gfx::Transform t; | 7116 gfx::Transform t; |
7128 t.Scale(2, 2); | 7117 t.Scale(2, 2); |
7129 sticky_container->SetTransform(t); | 7118 sticky_container->SetTransform(t); |
7130 | 7119 |
7131 LayerStickyPositionConstraint sticky_position; | 7120 LayerStickyPositionConstraint sticky_position; |
7132 sticky_position.is_sticky = true; | 7121 sticky_position.is_sticky = true; |
7133 sticky_position.is_anchored_top = true; | 7122 sticky_position.is_anchored_top = true; |
7134 sticky_position.top_offset = 0.0f; | 7123 sticky_position.top_offset = 0.0f; |
7135 sticky_position.parent_relative_sticky_box_offset = gfx::Point(0, 20); | |
7136 sticky_position.scroll_container_relative_sticky_box_rect = | 7124 sticky_position.scroll_container_relative_sticky_box_rect = |
7137 gfx::Rect(0, 20, 10, 10); | 7125 gfx::Rect(0, 20, 10, 10); |
7138 sticky_position.scroll_container_relative_containing_block_rect = | 7126 sticky_position.scroll_container_relative_containing_block_rect = |
7139 gfx::Rect(0, 0, 50, 50); | 7127 gfx::Rect(0, 0, 50, 50); |
7140 sticky_pos->SetStickyPositionConstraint(sticky_position); | 7128 sticky_pos->SetStickyPositionConstraint(sticky_position); |
7141 | 7129 |
7142 root->SetBounds(gfx::Size(100, 100)); | 7130 root->SetBounds(gfx::Size(100, 100)); |
7143 container->SetBounds(gfx::Size(100, 100)); | 7131 container->SetBounds(gfx::Size(100, 100)); |
7144 scroller->SetBounds(gfx::Size(1000, 1000)); | 7132 scroller->SetBounds(gfx::Size(1000, 1000)); |
7145 sticky_container->SetBounds(gfx::Size(50, 50)); | 7133 sticky_container->SetBounds(gfx::Size(50, 50)); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7209 scroller->SetBounds(gfx::Size(100, 1000)); | 7197 scroller->SetBounds(gfx::Size(100, 1000)); |
7210 outer_sticky->SetBounds(gfx::Size(10, 50)); | 7198 outer_sticky->SetBounds(gfx::Size(10, 50)); |
7211 outer_sticky->SetPosition(gfx::PointF(0, 50)); | 7199 outer_sticky->SetPosition(gfx::PointF(0, 50)); |
7212 inner_sticky->SetBounds(gfx::Size(10, 10)); | 7200 inner_sticky->SetBounds(gfx::Size(10, 10)); |
7213 inner_sticky->SetPosition(gfx::PointF(0, 0)); | 7201 inner_sticky->SetPosition(gfx::PointF(0, 0)); |
7214 | 7202 |
7215 LayerStickyPositionConstraint outer_sticky_pos; | 7203 LayerStickyPositionConstraint outer_sticky_pos; |
7216 outer_sticky_pos.is_sticky = true; | 7204 outer_sticky_pos.is_sticky = true; |
7217 outer_sticky_pos.is_anchored_top = true; | 7205 outer_sticky_pos.is_anchored_top = true; |
7218 outer_sticky_pos.top_offset = 10.0f; | 7206 outer_sticky_pos.top_offset = 10.0f; |
7219 outer_sticky_pos.parent_relative_sticky_box_offset = gfx::Point(0, 50); | |
7220 outer_sticky_pos.scroll_container_relative_sticky_box_rect = | 7207 outer_sticky_pos.scroll_container_relative_sticky_box_rect = |
7221 gfx::Rect(0, 50, 10, 50); | 7208 gfx::Rect(0, 50, 10, 50); |
7222 outer_sticky_pos.scroll_container_relative_containing_block_rect = | 7209 outer_sticky_pos.scroll_container_relative_containing_block_rect = |
7223 gfx::Rect(0, 0, 50, 400); | 7210 gfx::Rect(0, 0, 50, 400); |
7224 outer_sticky->SetStickyPositionConstraint(outer_sticky_pos); | 7211 outer_sticky->SetStickyPositionConstraint(outer_sticky_pos); |
7225 | 7212 |
7226 LayerStickyPositionConstraint inner_sticky_pos; | 7213 LayerStickyPositionConstraint inner_sticky_pos; |
7227 inner_sticky_pos.is_sticky = true; | 7214 inner_sticky_pos.is_sticky = true; |
7228 inner_sticky_pos.is_anchored_top = true; | 7215 inner_sticky_pos.is_anchored_top = true; |
7229 inner_sticky_pos.top_offset = 25.0f; | 7216 inner_sticky_pos.top_offset = 25.0f; |
7230 inner_sticky_pos.parent_relative_sticky_box_offset = gfx::Point(0, 0); | |
7231 inner_sticky_pos.scroll_container_relative_sticky_box_rect = | 7217 inner_sticky_pos.scroll_container_relative_sticky_box_rect = |
7232 gfx::Rect(0, 50, 10, 10); | 7218 gfx::Rect(0, 50, 10, 10); |
7233 inner_sticky_pos.scroll_container_relative_containing_block_rect = | 7219 inner_sticky_pos.scroll_container_relative_containing_block_rect = |
7234 gfx::Rect(0, 50, 10, 50); | 7220 gfx::Rect(0, 50, 10, 50); |
7235 inner_sticky_pos.nearest_layer_shifting_containing_block = outer_sticky->id(); | 7221 inner_sticky_pos.nearest_layer_shifting_containing_block = outer_sticky->id(); |
7236 inner_sticky->SetStickyPositionConstraint(inner_sticky_pos); | 7222 inner_sticky->SetStickyPositionConstraint(inner_sticky_pos); |
7237 | 7223 |
7238 ExecuteCalculateDrawProperties(root.get()); | 7224 ExecuteCalculateDrawProperties(root.get()); |
7239 host()->host_impl()->CreatePendingTree(); | 7225 host()->host_impl()->CreatePendingTree(); |
7240 host()->CommitAndCreatePendingTree(); | 7226 host()->CommitAndCreatePendingTree(); |
(...skipping 2968 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10209 | 10195 |
10210 // Check child layer draw properties. | 10196 // Check child layer draw properties. |
10211 EXPECT_EQ(gfx::Rect(10, 10), child->visible_layer_rect()); | 10197 EXPECT_EQ(gfx::Rect(10, 10), child->visible_layer_rect()); |
10212 EXPECT_EQ(gfx::Transform(), child->DrawTransform()); | 10198 EXPECT_EQ(gfx::Transform(), child->DrawTransform()); |
10213 EXPECT_EQ(gfx::Rect(10, 10), child->clip_rect()); | 10199 EXPECT_EQ(gfx::Rect(10, 10), child->clip_rect()); |
10214 EXPECT_EQ(gfx::Rect(10, 10), child->drawable_content_rect()); | 10200 EXPECT_EQ(gfx::Rect(10, 10), child->drawable_content_rect()); |
10215 } | 10201 } |
10216 | 10202 |
10217 } // namespace | 10203 } // namespace |
10218 } // namespace cc | 10204 } // namespace cc |
OLD | NEW |