| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/layers/layer_position_constraint.h" | 5 #include "cc/layers/layer_position_constraint.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "cc/animation/animation_host.h" | 9 #include "cc/animation/animation_host.h" |
| 10 #include "cc/layers/layer.h" | 10 #include "cc/layers/layer.h" |
| 11 #include "cc/layers/layer_impl.h" | 11 #include "cc/layers/layer_impl.h" |
| 12 #include "cc/test/fake_layer_tree_host.h" | 12 #include "cc/test/fake_layer_tree_host.h" |
| 13 #include "cc/test/fake_proxy.h" | 13 #include "cc/test/fake_proxy.h" |
| 14 #include "cc/test/geometry_test_utils.h" | 14 #include "cc/test/geometry_test_utils.h" |
| 15 #include "cc/test/layer_test_common.h" |
| 15 #include "cc/test/test_task_graph_runner.h" | 16 #include "cc/test/test_task_graph_runner.h" |
| 16 #include "cc/trees/layer_tree_host_common.h" | 17 #include "cc/trees/layer_tree_host_common.h" |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 18 | 19 |
| 19 namespace cc { | 20 namespace cc { |
| 20 namespace { | 21 namespace { |
| 21 | 22 |
| 22 class LayerWithForcedDrawsContent : public Layer { | 23 class LayerWithForcedDrawsContent : public Layer { |
| 23 public: | 24 public: |
| 24 LayerWithForcedDrawsContent() {} | 25 LayerWithForcedDrawsContent() {} |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 // Case 1: scroll delta of 0, 0 | 445 // Case 1: scroll delta of 0, 0 |
| 445 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(0, 0)); | 446 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(0, 0)); |
| 446 ExecuteCalculateDrawProperties(root_impl_); | 447 ExecuteCalculateDrawProperties(root_impl_); |
| 447 | 448 |
| 448 gfx::Transform expected_child_transform; | 449 gfx::Transform expected_child_transform; |
| 449 gfx::Transform expected_surface_draw_transform; | 450 gfx::Transform expected_surface_draw_transform; |
| 450 expected_surface_draw_transform.Translate(8.0, 6.0); | 451 expected_surface_draw_transform.Translate(8.0, 6.0); |
| 451 gfx::Transform expected_grand_child_transform; | 452 gfx::Transform expected_grand_child_transform; |
| 452 gfx::Transform expected_great_grand_child_transform; | 453 gfx::Transform expected_great_grand_child_transform; |
| 453 expected_great_grand_child_transform.PreconcatTransform(rotation_about_z); | 454 expected_great_grand_child_transform.PreconcatTransform(rotation_about_z); |
| 454 EXPECT_TRUE(grand_child_impl_->GetRenderSurface()); | 455 EXPECT_TRUE(GetRenderSurface(grand_child_impl_)); |
| 455 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 456 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
| 456 child_impl_->DrawTransform()); | 457 child_impl_->DrawTransform()); |
| 457 EXPECT_TRANSFORMATION_MATRIX_EQ( | 458 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 458 expected_surface_draw_transform, | 459 expected_surface_draw_transform, |
| 459 grand_child_impl_->GetRenderSurface()->draw_transform()); | 460 GetRenderSurface(grand_child_impl_)->draw_transform()); |
| 460 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, | 461 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, |
| 461 grand_child_impl_->DrawTransform()); | 462 grand_child_impl_->DrawTransform()); |
| 462 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, | 463 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, |
| 463 great_grand_child_impl_->DrawTransform()); | 464 great_grand_child_impl_->DrawTransform()); |
| 464 | 465 |
| 465 // Case 2: scroll delta of 10, 30 | 466 // Case 2: scroll delta of 10, 30 |
| 466 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(10, 30)); | 467 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(10, 30)); |
| 467 child_impl_->SetDrawsContent(true); | 468 child_impl_->SetDrawsContent(true); |
| 468 ExecuteCalculateDrawProperties(root_impl_); | 469 ExecuteCalculateDrawProperties(root_impl_); |
| 469 | 470 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 481 expected_surface_draw_transform.MakeIdentity(); | 482 expected_surface_draw_transform.MakeIdentity(); |
| 482 expected_surface_draw_transform.Translate(-10.0, -30.0); // scroll delta | 483 expected_surface_draw_transform.Translate(-10.0, -30.0); // scroll delta |
| 483 expected_surface_draw_transform.Translate(8.0, 6.0); | 484 expected_surface_draw_transform.Translate(8.0, 6.0); |
| 484 | 485 |
| 485 expected_great_grand_child_transform.MakeIdentity(); | 486 expected_great_grand_child_transform.MakeIdentity(); |
| 486 // explicit canceling out the scroll delta that gets embedded in the fixed | 487 // explicit canceling out the scroll delta that gets embedded in the fixed |
| 487 // position layer's surface. | 488 // position layer's surface. |
| 488 expected_great_grand_child_transform.Translate(10.0, 30.0); | 489 expected_great_grand_child_transform.Translate(10.0, 30.0); |
| 489 expected_great_grand_child_transform.PreconcatTransform(rotation_about_z); | 490 expected_great_grand_child_transform.PreconcatTransform(rotation_about_z); |
| 490 | 491 |
| 491 EXPECT_TRUE(grand_child_impl_->GetRenderSurface()); | 492 EXPECT_TRUE(GetRenderSurface(grand_child_impl_)); |
| 492 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 493 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
| 493 child_impl_->DrawTransform()); | 494 child_impl_->DrawTransform()); |
| 494 EXPECT_TRANSFORMATION_MATRIX_EQ( | 495 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 495 expected_surface_draw_transform, | 496 expected_surface_draw_transform, |
| 496 grand_child_impl_->GetRenderSurface()->draw_transform()); | 497 GetRenderSurface(grand_child_impl_)->draw_transform()); |
| 497 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, | 498 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, |
| 498 grand_child_impl_->DrawTransform()); | 499 grand_child_impl_->DrawTransform()); |
| 499 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, | 500 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, |
| 500 great_grand_child_impl_->DrawTransform()); | 501 great_grand_child_impl_->DrawTransform()); |
| 501 | 502 |
| 502 // Case 3: fixed-container size delta of 20, 20 | 503 // Case 3: fixed-container size delta of 20, 20 |
| 503 outer_viewport_container_layer_impl_->SetViewportBoundsDelta( | 504 outer_viewport_container_layer_impl_->SetViewportBoundsDelta( |
| 504 gfx::Vector2d(20, 20)); | 505 gfx::Vector2d(20, 20)); |
| 505 ExecuteCalculateDrawProperties(root_impl_); | 506 ExecuteCalculateDrawProperties(root_impl_); |
| 506 | 507 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 590 gfx::Transform expected_grand_child_transform; | 591 gfx::Transform expected_grand_child_transform; |
| 591 | 592 |
| 592 gfx::Transform expected_great_grand_child_surface_draw_transform; | 593 gfx::Transform expected_great_grand_child_surface_draw_transform; |
| 593 expected_great_grand_child_surface_draw_transform.Translate(40.0, 60.0); | 594 expected_great_grand_child_surface_draw_transform.Translate(40.0, 60.0); |
| 594 | 595 |
| 595 gfx::Transform expected_great_grand_child_transform; | 596 gfx::Transform expected_great_grand_child_transform; |
| 596 | 597 |
| 597 gfx::Transform expected_fixed_position_child_transform; | 598 gfx::Transform expected_fixed_position_child_transform; |
| 598 expected_fixed_position_child_transform.PreconcatTransform(rotation_about_z); | 599 expected_fixed_position_child_transform.PreconcatTransform(rotation_about_z); |
| 599 | 600 |
| 600 EXPECT_TRUE(grand_child_impl_->GetRenderSurface()); | 601 EXPECT_TRUE(GetRenderSurface(grand_child_impl_)); |
| 601 EXPECT_TRUE(great_grand_child_impl_->GetRenderSurface()); | 602 EXPECT_TRUE(GetRenderSurface(great_grand_child_impl_)); |
| 602 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 603 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
| 603 child_impl_->DrawTransform()); | 604 child_impl_->DrawTransform()); |
| 604 EXPECT_TRANSFORMATION_MATRIX_EQ( | 605 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 605 expected_grand_child_surface_draw_transform, | 606 expected_grand_child_surface_draw_transform, |
| 606 grand_child_impl_->GetRenderSurface()->draw_transform()); | 607 GetRenderSurface(grand_child_impl_)->draw_transform()); |
| 607 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, | 608 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, |
| 608 grand_child_impl_->DrawTransform()); | 609 grand_child_impl_->DrawTransform()); |
| 609 EXPECT_TRANSFORMATION_MATRIX_EQ( | 610 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 610 expected_great_grand_child_surface_draw_transform, | 611 expected_great_grand_child_surface_draw_transform, |
| 611 great_grand_child_impl_->GetRenderSurface()->draw_transform()); | 612 GetRenderSurface(great_grand_child_impl_)->draw_transform()); |
| 612 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, | 613 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, |
| 613 great_grand_child_impl_->DrawTransform()); | 614 great_grand_child_impl_->DrawTransform()); |
| 614 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_position_child_transform, | 615 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_position_child_transform, |
| 615 fixed_position_child_impl->DrawTransform()); | 616 fixed_position_child_impl->DrawTransform()); |
| 616 | 617 |
| 617 // Case 2: scroll delta of 10, 30 | 618 // Case 2: scroll delta of 10, 30 |
| 618 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(10, 30)); | 619 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(10, 30)); |
| 619 ExecuteCalculateDrawProperties(root_impl_); | 620 ExecuteCalculateDrawProperties(root_impl_); |
| 620 | 621 |
| 621 expected_child_transform.MakeIdentity(); | 622 expected_child_transform.MakeIdentity(); |
| 622 expected_child_transform.Translate(-10.0, -30.0); // scroll delta | 623 expected_child_transform.Translate(-10.0, -30.0); // scroll delta |
| 623 | 624 |
| 624 expected_grand_child_surface_draw_transform.MakeIdentity(); | 625 expected_grand_child_surface_draw_transform.MakeIdentity(); |
| 625 expected_grand_child_surface_draw_transform.Translate(-10.0, | 626 expected_grand_child_surface_draw_transform.Translate(-10.0, |
| 626 -30.0); // scroll delta | 627 -30.0); // scroll delta |
| 627 expected_grand_child_surface_draw_transform.Translate(8.0, 6.0); | 628 expected_grand_child_surface_draw_transform.Translate(8.0, 6.0); |
| 628 | 629 |
| 629 // grand_child, great_grand_child, and great_grand_child's surface are not | 630 // grand_child, great_grand_child, and great_grand_child's surface are not |
| 630 // expected to change, since they are all not fixed, and they are all drawn | 631 // expected to change, since they are all not fixed, and they are all drawn |
| 631 // with respect to grand_child's surface that already has the scroll delta | 632 // with respect to grand_child's surface that already has the scroll delta |
| 632 // accounted for. | 633 // accounted for. |
| 633 | 634 |
| 634 // But the great-great grandchild, "fixed_position_child", should have a | 635 // But the great-great grandchild, "fixed_position_child", should have a |
| 635 // transform that explicitly cancels out the scroll delta. | 636 // transform that explicitly cancels out the scroll delta. |
| 636 expected_fixed_position_child_transform.MakeIdentity(); | 637 expected_fixed_position_child_transform.MakeIdentity(); |
| 637 expected_fixed_position_child_transform.Translate(10.0, 30.0); | 638 expected_fixed_position_child_transform.Translate(10.0, 30.0); |
| 638 expected_fixed_position_child_transform.PreconcatTransform(rotation_about_z); | 639 expected_fixed_position_child_transform.PreconcatTransform(rotation_about_z); |
| 639 | 640 |
| 640 EXPECT_TRUE(grand_child_impl_->GetRenderSurface()); | 641 EXPECT_TRUE(GetRenderSurface(grand_child_impl_)); |
| 641 EXPECT_TRUE(great_grand_child_impl_->GetRenderSurface()); | 642 EXPECT_TRUE(GetRenderSurface(great_grand_child_impl_)); |
| 642 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 643 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
| 643 child_impl_->DrawTransform()); | 644 child_impl_->DrawTransform()); |
| 644 EXPECT_TRANSFORMATION_MATRIX_EQ( | 645 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 645 expected_grand_child_surface_draw_transform, | 646 expected_grand_child_surface_draw_transform, |
| 646 grand_child_impl_->GetRenderSurface()->draw_transform()); | 647 GetRenderSurface(grand_child_impl_)->draw_transform()); |
| 647 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, | 648 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, |
| 648 grand_child_impl_->DrawTransform()); | 649 grand_child_impl_->DrawTransform()); |
| 649 EXPECT_TRANSFORMATION_MATRIX_EQ( | 650 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 650 expected_great_grand_child_surface_draw_transform, | 651 expected_great_grand_child_surface_draw_transform, |
| 651 great_grand_child_impl_->GetRenderSurface()->draw_transform()); | 652 GetRenderSurface(great_grand_child_impl_)->draw_transform()); |
| 652 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, | 653 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, |
| 653 great_grand_child_impl_->DrawTransform()); | 654 great_grand_child_impl_->DrawTransform()); |
| 654 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_position_child_transform, | 655 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_position_child_transform, |
| 655 fixed_position_child_impl->DrawTransform()); | 656 fixed_position_child_impl->DrawTransform()); |
| 656 | 657 |
| 657 // Case 3: fixed-container size delta of 20, 20 | 658 // Case 3: fixed-container size delta of 20, 20 |
| 658 outer_viewport_container_layer_impl_->SetViewportBoundsDelta( | 659 outer_viewport_container_layer_impl_->SetViewportBoundsDelta( |
| 659 gfx::Vector2d(20, 20)); | 660 gfx::Vector2d(20, 20)); |
| 660 ExecuteCalculateDrawProperties(root_impl_); | 661 ExecuteCalculateDrawProperties(root_impl_); |
| 661 | 662 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 gfx::Transform expected_grand_child_transform; | 755 gfx::Transform expected_grand_child_transform; |
| 755 | 756 |
| 756 gfx::Transform expected_great_grand_child_surface_draw_transform; | 757 gfx::Transform expected_great_grand_child_surface_draw_transform; |
| 757 expected_great_grand_child_surface_draw_transform.Translate(40.0, 60.0); | 758 expected_great_grand_child_surface_draw_transform.Translate(40.0, 60.0); |
| 758 | 759 |
| 759 gfx::Transform expected_great_grand_child_transform; | 760 gfx::Transform expected_great_grand_child_transform; |
| 760 | 761 |
| 761 gfx::Transform expected_fixed_position_child_transform; | 762 gfx::Transform expected_fixed_position_child_transform; |
| 762 expected_fixed_position_child_transform.PreconcatTransform(rotation_about_z); | 763 expected_fixed_position_child_transform.PreconcatTransform(rotation_about_z); |
| 763 | 764 |
| 764 EXPECT_TRUE(grand_child_impl_->GetRenderSurface()); | 765 EXPECT_TRUE(GetRenderSurface(grand_child_impl_)); |
| 765 EXPECT_TRUE(great_grand_child_impl_->GetRenderSurface()); | 766 EXPECT_TRUE(GetRenderSurface(great_grand_child_impl_)); |
| 766 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 767 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
| 767 child_impl_->DrawTransform()); | 768 child_impl_->DrawTransform()); |
| 768 EXPECT_TRANSFORMATION_MATRIX_EQ( | 769 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 769 expected_grand_child_surface_draw_transform, | 770 expected_grand_child_surface_draw_transform, |
| 770 grand_child_impl_->GetRenderSurface()->draw_transform()); | 771 GetRenderSurface(grand_child_impl_)->draw_transform()); |
| 771 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, | 772 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, |
| 772 grand_child_impl_->DrawTransform()); | 773 grand_child_impl_->DrawTransform()); |
| 773 EXPECT_TRANSFORMATION_MATRIX_EQ( | 774 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 774 expected_great_grand_child_surface_draw_transform, | 775 expected_great_grand_child_surface_draw_transform, |
| 775 great_grand_child_impl_->GetRenderSurface()->draw_transform()); | 776 GetRenderSurface(great_grand_child_impl_)->draw_transform()); |
| 776 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, | 777 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, |
| 777 great_grand_child_impl_->DrawTransform()); | 778 great_grand_child_impl_->DrawTransform()); |
| 778 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_position_child_transform, | 779 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_position_child_transform, |
| 779 fixed_position_child_impl->DrawTransform()); | 780 fixed_position_child_impl->DrawTransform()); |
| 780 | 781 |
| 781 // Case 2: scroll delta of 10, 30 | 782 // Case 2: scroll delta of 10, 30 |
| 782 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(10, 30)); | 783 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(10, 30)); |
| 783 ExecuteCalculateDrawProperties(root_impl_); | 784 ExecuteCalculateDrawProperties(root_impl_); |
| 784 | 785 |
| 785 expected_child_transform.MakeIdentity(); | 786 expected_child_transform.MakeIdentity(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 799 // accounted for. | 800 // accounted for. |
| 800 | 801 |
| 801 // But the great-great grandchild, "fixed_position_child", should have a | 802 // But the great-great grandchild, "fixed_position_child", should have a |
| 802 // transform that explicitly cancels out the scroll delta. | 803 // transform that explicitly cancels out the scroll delta. |
| 803 expected_fixed_position_child_transform.MakeIdentity(); | 804 expected_fixed_position_child_transform.MakeIdentity(); |
| 804 // explicit canceling out the scroll delta that gets embedded in the fixed | 805 // explicit canceling out the scroll delta that gets embedded in the fixed |
| 805 // position layer's surface. | 806 // position layer's surface. |
| 806 expected_fixed_position_child_transform.Translate(10.0, 30.0); | 807 expected_fixed_position_child_transform.Translate(10.0, 30.0); |
| 807 expected_fixed_position_child_transform.PreconcatTransform(rotation_about_z); | 808 expected_fixed_position_child_transform.PreconcatTransform(rotation_about_z); |
| 808 | 809 |
| 809 EXPECT_TRUE(grand_child_impl_->GetRenderSurface()); | 810 EXPECT_TRUE(GetRenderSurface(grand_child_impl_)); |
| 810 EXPECT_TRUE(great_grand_child_impl_->GetRenderSurface()); | 811 EXPECT_TRUE(GetRenderSurface(great_grand_child_impl_)); |
| 811 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 812 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
| 812 child_impl_->DrawTransform()); | 813 child_impl_->DrawTransform()); |
| 813 EXPECT_TRANSFORMATION_MATRIX_EQ( | 814 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 814 expected_grand_child_surface_draw_transform, | 815 expected_grand_child_surface_draw_transform, |
| 815 grand_child_impl_->GetRenderSurface()->draw_transform()); | 816 GetRenderSurface(grand_child_impl_)->draw_transform()); |
| 816 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, | 817 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, |
| 817 grand_child_impl_->DrawTransform()); | 818 grand_child_impl_->DrawTransform()); |
| 818 EXPECT_TRANSFORMATION_MATRIX_EQ( | 819 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 819 expected_great_grand_child_surface_draw_transform, | 820 expected_great_grand_child_surface_draw_transform, |
| 820 great_grand_child_impl_->GetRenderSurface()->draw_transform()); | 821 GetRenderSurface(great_grand_child_impl_)->draw_transform()); |
| 821 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, | 822 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_great_grand_child_transform, |
| 822 great_grand_child_impl_->DrawTransform()); | 823 great_grand_child_impl_->DrawTransform()); |
| 823 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_position_child_transform, | 824 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_position_child_transform, |
| 824 fixed_position_child_impl->DrawTransform()); | 825 fixed_position_child_impl->DrawTransform()); |
| 825 } | 826 } |
| 826 | 827 |
| 827 TEST_F(LayerPositionConstraintTest, | 828 TEST_F(LayerPositionConstraintTest, |
| 828 ScrollCompensationForFixedPositionLayerWithContainerLayerThatHasSurface) { | 829 ScrollCompensationForFixedPositionLayerWithContainerLayerThatHasSurface) { |
| 829 // This test checks for correct scroll compensation when the fixed-position | 830 // This test checks for correct scroll compensation when the fixed-position |
| 830 // container itself has a render surface. In this case, the container layer | 831 // container itself has a render surface. In this case, the container layer |
| 831 // should be treated like a layer that contributes to a render target, and | 832 // should be treated like a layer that contributes to a render target, and |
| 832 // that render target is completely irrelevant; it should not affect the | 833 // that render target is completely irrelevant; it should not affect the |
| 833 // scroll compensation. | 834 // scroll compensation. |
| 834 child_->SetIsContainerForFixedPositionLayers(true); | 835 child_->SetIsContainerForFixedPositionLayers(true); |
| 835 child_->SetForceRenderSurfaceForTesting(true); | 836 child_->SetForceRenderSurfaceForTesting(true); |
| 836 grand_child_->SetPositionConstraint(fixed_to_top_left_); | 837 grand_child_->SetPositionConstraint(fixed_to_top_left_); |
| 837 | 838 |
| 838 CommitAndUpdateImplPointers(); | 839 CommitAndUpdateImplPointers(); |
| 839 | 840 |
| 840 // Case 1: scroll delta of 0, 0 | 841 // Case 1: scroll delta of 0, 0 |
| 841 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(0, 0)); | 842 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(0, 0)); |
| 842 ExecuteCalculateDrawProperties(root_impl_); | 843 ExecuteCalculateDrawProperties(root_impl_); |
| 843 | 844 |
| 844 gfx::Transform expected_surface_draw_transform; | 845 gfx::Transform expected_surface_draw_transform; |
| 845 gfx::Transform expected_child_transform; | 846 gfx::Transform expected_child_transform; |
| 846 gfx::Transform expected_grand_child_transform; | 847 gfx::Transform expected_grand_child_transform; |
| 847 EXPECT_TRUE(child_impl_->GetRenderSurface()); | 848 EXPECT_TRUE(GetRenderSurface(child_impl_)); |
| 848 EXPECT_TRANSFORMATION_MATRIX_EQ( | 849 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 849 expected_surface_draw_transform, | 850 expected_surface_draw_transform, |
| 850 child_impl_->GetRenderSurface()->draw_transform()); | 851 GetRenderSurface(child_impl_)->draw_transform()); |
| 851 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 852 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
| 852 child_impl_->DrawTransform()); | 853 child_impl_->DrawTransform()); |
| 853 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, | 854 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, |
| 854 grand_child_impl_->DrawTransform()); | 855 grand_child_impl_->DrawTransform()); |
| 855 | 856 |
| 856 // Case 2: scroll delta of 10, 10 | 857 // Case 2: scroll delta of 10, 10 |
| 857 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(10, 10)); | 858 SetScrollOffsetDelta(child_impl_, gfx::Vector2d(10, 10)); |
| 858 ExecuteCalculateDrawProperties(root_impl_); | 859 ExecuteCalculateDrawProperties(root_impl_); |
| 859 | 860 |
| 860 // The surface is translated by scroll delta, the child transform doesn't | 861 // The surface is translated by scroll delta, the child transform doesn't |
| 861 // change because it scrolls along with the surface, but the fixed position | 862 // change because it scrolls along with the surface, but the fixed position |
| 862 // grand_child needs to compensate for the scroll translation. | 863 // grand_child needs to compensate for the scroll translation. |
| 863 expected_surface_draw_transform.MakeIdentity(); | 864 expected_surface_draw_transform.MakeIdentity(); |
| 864 expected_surface_draw_transform.Translate(-10.0, -10.0); | 865 expected_surface_draw_transform.Translate(-10.0, -10.0); |
| 865 expected_grand_child_transform.MakeIdentity(); | 866 expected_grand_child_transform.MakeIdentity(); |
| 866 expected_grand_child_transform.Translate(10.0, 10.0); | 867 expected_grand_child_transform.Translate(10.0, 10.0); |
| 867 | 868 |
| 868 EXPECT_TRUE(child_impl_->GetRenderSurface()); | 869 EXPECT_TRUE(GetRenderSurface(child_impl_)); |
| 869 EXPECT_TRANSFORMATION_MATRIX_EQ( | 870 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 870 expected_surface_draw_transform, | 871 expected_surface_draw_transform, |
| 871 child_impl_->GetRenderSurface()->draw_transform()); | 872 GetRenderSurface(child_impl_)->draw_transform()); |
| 872 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, | 873 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_child_transform, |
| 873 child_impl_->DrawTransform()); | 874 child_impl_->DrawTransform()); |
| 874 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, | 875 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_grand_child_transform, |
| 875 grand_child_impl_->DrawTransform()); | 876 grand_child_impl_->DrawTransform()); |
| 876 | 877 |
| 877 // Case 3: fixed-container size delta of 20, 20 | 878 // Case 3: fixed-container size delta of 20, 20 |
| 878 outer_viewport_container_layer_impl_->SetViewportBoundsDelta( | 879 outer_viewport_container_layer_impl_->SetViewportBoundsDelta( |
| 879 gfx::Vector2d(20, 20)); | 880 gfx::Vector2d(20, 20)); |
| 880 ExecuteCalculateDrawProperties(root_impl_); | 881 ExecuteCalculateDrawProperties(root_impl_); |
| 881 | 882 |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1144 expected_fixed_child_transform.Translate(20.0, 20.0); | 1145 expected_fixed_child_transform.Translate(20.0, 20.0); |
| 1145 | 1146 |
| 1146 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_scroll_layer_transform, | 1147 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_scroll_layer_transform, |
| 1147 scroll_layer_impl_->DrawTransform()); | 1148 scroll_layer_impl_->DrawTransform()); |
| 1148 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_child_transform, | 1149 EXPECT_TRANSFORMATION_MATRIX_EQ(expected_fixed_child_transform, |
| 1149 fixed_child_impl->DrawTransform()); | 1150 fixed_child_impl->DrawTransform()); |
| 1150 } | 1151 } |
| 1151 | 1152 |
| 1152 } // namespace | 1153 } // namespace |
| 1153 } // namespace cc | 1154 } // namespace cc |
| OLD | NEW |