| 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/layer_tree_host_common.h" | 5 #include "cc/layer_tree_host_common.h" |
| 6 | 6 |
| 7 #include "cc/content_layer.h" | 7 #include "cc/content_layer.h" |
| 8 #include "cc/content_layer_client.h" | 8 #include "cc/content_layer_client.h" |
| 9 #include "cc/layer.h" | 9 #include "cc/layer.h" |
| 10 #include "cc/layer_animation_controller.h" | 10 #include "cc/layer_animation_controller.h" |
| 11 #include "cc/layer_impl.h" | 11 #include "cc/layer_impl.h" |
| 12 #include "cc/math_util.h" | 12 #include "cc/math_util.h" |
| 13 #include "cc/proxy.h" | 13 #include "cc/proxy.h" |
| 14 #include "cc/single_thread_proxy.h" | 14 #include "cc/single_thread_proxy.h" |
| 15 #include "cc/test/animation_test_common.h" | 15 #include "cc/test/animation_test_common.h" |
| 16 #include "cc/test/fake_impl_proxy.h" |
| 17 #include "cc/test/fake_layer_tree_host_impl.h" |
| 16 #include "cc/test/geometry_test_utils.h" | 18 #include "cc/test/geometry_test_utils.h" |
| 17 #include "cc/thread.h" | 19 #include "cc/thread.h" |
| 18 #include "testing/gmock/include/gmock/gmock.h" | 20 #include "testing/gmock/include/gmock/gmock.h" |
| 19 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
| 20 #include "ui/gfx/quad_f.h" | 22 #include "ui/gfx/quad_f.h" |
| 21 #include "ui/gfx/size_conversions.h" | 23 #include "ui/gfx/size_conversions.h" |
| 22 #include "ui/gfx/transform.h" | 24 #include "ui/gfx/transform.h" |
| 23 | 25 |
| 24 using namespace WebKitTests; | 26 using namespace WebKitTests; |
| 25 | 27 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 gfx::Transform identityMatrix; | 68 gfx::Transform identityMatrix; |
| 67 std::vector<LayerImpl*> dummyRenderSurfaceLayerList; | 69 std::vector<LayerImpl*> dummyRenderSurfaceLayerList; |
| 68 int dummyMaxTextureSize = 512; | 70 int dummyMaxTextureSize = 512; |
| 69 gfx::Size deviceViewportSize = gfx::Size(rootLayer->bounds().width() * devic
eScaleFactor, rootLayer->bounds().height() * deviceScaleFactor); | 71 gfx::Size deviceViewportSize = gfx::Size(rootLayer->bounds().width() * devic
eScaleFactor, rootLayer->bounds().height() * deviceScaleFactor); |
| 70 | 72 |
| 71 // We are probably not testing what is intended if the rootLayer bounds are
empty. | 73 // We are probably not testing what is intended if the rootLayer bounds are
empty. |
| 72 DCHECK(!rootLayer->bounds().IsEmpty()); | 74 DCHECK(!rootLayer->bounds().IsEmpty()); |
| 73 LayerTreeHostCommon::calculateDrawProperties(rootLayer, deviceViewportSize,
deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, dummyRenderSurfaceLayer
List); | 75 LayerTreeHostCommon::calculateDrawProperties(rootLayer, deviceViewportSize,
deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, dummyRenderSurfaceLayer
List); |
| 74 } | 76 } |
| 75 | 77 |
| 76 scoped_ptr<LayerImpl> createTreeForFixedPositionTests() | 78 scoped_ptr<LayerImpl> createTreeForFixedPositionTests(LayerTreeHostImpl* hostImp
l) |
| 77 { | 79 { |
| 78 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 80 scoped_ptr<LayerImpl> root = LayerImpl::create(hostImpl, 1); |
| 79 scoped_ptr<LayerImpl> child = LayerImpl::create(2); | 81 scoped_ptr<LayerImpl> child = LayerImpl::create(hostImpl, 2); |
| 80 scoped_ptr<LayerImpl> grandChild = LayerImpl::create(3); | 82 scoped_ptr<LayerImpl> grandChild = LayerImpl::create(hostImpl, 3); |
| 81 scoped_ptr<LayerImpl> greatGrandChild = LayerImpl::create(4); | 83 scoped_ptr<LayerImpl> greatGrandChild = LayerImpl::create(hostImpl, 4); |
| 82 | 84 |
| 83 gfx::Transform IdentityMatrix; | 85 gfx::Transform IdentityMatrix; |
| 84 gfx::PointF anchor(0, 0); | 86 gfx::PointF anchor(0, 0); |
| 85 gfx::PointF position(0, 0); | 87 gfx::PointF position(0, 0); |
| 86 gfx::Size bounds(100, 100); | 88 gfx::Size bounds(100, 100); |
| 87 setLayerPropertiesForTesting(root.get(), IdentityMatrix, IdentityMatrix, anc
hor, position, bounds, false); | 89 setLayerPropertiesForTesting(root.get(), IdentityMatrix, IdentityMatrix, anc
hor, position, bounds, false); |
| 88 setLayerPropertiesForTesting(child.get(), IdentityMatrix, IdentityMatrix, an
chor, position, bounds, false); | 90 setLayerPropertiesForTesting(child.get(), IdentityMatrix, IdentityMatrix, an
chor, position, bounds, false); |
| 89 setLayerPropertiesForTesting(grandChild.get(), IdentityMatrix, IdentityMatri
x, anchor, position, bounds, false); | 91 setLayerPropertiesForTesting(grandChild.get(), IdentityMatrix, IdentityMatri
x, anchor, position, bounds, false); |
| 90 setLayerPropertiesForTesting(greatGrandChild.get(), IdentityMatrix, Identity
Matrix, anchor, position, bounds, false); | 92 setLayerPropertiesForTesting(greatGrandChild.get(), IdentityMatrix, Identity
Matrix, anchor, position, bounds, false); |
| 91 | 93 |
| (...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(),
1, 1, dummyMaxTextureSize, renderSurfaceLayerList); | 770 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(),
1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| 769 EXPECT_TRUE(parent->renderSurface()); | 771 EXPECT_TRUE(parent->renderSurface()); |
| 770 EXPECT_FALSE(renderSurface1->renderSurface()); | 772 EXPECT_FALSE(renderSurface1->renderSurface()); |
| 771 EXPECT_EQ(1U, renderSurfaceLayerList.size()); | 773 EXPECT_EQ(1U, renderSurfaceLayerList.size()); |
| 772 } | 774 } |
| 773 | 775 |
| 774 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
irectContainer) | 776 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
irectContainer) |
| 775 { | 777 { |
| 776 // This test checks for correct scroll compensation when the fixed-position
container | 778 // This test checks for correct scroll compensation when the fixed-position
container |
| 777 // is the direct parent of the fixed-position layer. | 779 // is the direct parent of the fixed-position layer. |
| 778 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 780 FakeImplProxy proxy; |
| 781 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 782 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 779 LayerImpl* child = root->children()[0]; | 783 LayerImpl* child = root->children()[0]; |
| 780 LayerImpl* grandChild = child->children()[0]; | 784 LayerImpl* grandChild = child->children()[0]; |
| 781 | 785 |
| 782 child->setIsContainerForFixedPositionLayers(true); | 786 child->setIsContainerForFixedPositionLayers(true); |
| 783 grandChild->setFixedToContainerLayer(true); | 787 grandChild->setFixedToContainerLayer(true); |
| 784 | 788 |
| 785 // Case 1: scrollDelta of 0, 0 | 789 // Case 1: scrollDelta of 0, 0 |
| 786 child->setScrollDelta(gfx::Vector2d(0, 0)); | 790 child->setScrollDelta(gfx::Vector2d(0, 0)); |
| 787 executeCalculateDrawProperties(root.get()); | 791 executeCalculateDrawProperties(root.get()); |
| 788 | 792 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 807 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithT
ransformedDirectContainer) | 811 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithT
ransformedDirectContainer) |
| 808 { | 812 { |
| 809 // This test checks for correct scroll compensation when the fixed-position
container | 813 // This test checks for correct scroll compensation when the fixed-position
container |
| 810 // is the direct parent of the fixed-position layer, but that container is t
ransformed. | 814 // is the direct parent of the fixed-position layer, but that container is t
ransformed. |
| 811 // In this case, the fixed position element inherits the container's transfo
rm, | 815 // In this case, the fixed position element inherits the container's transfo
rm, |
| 812 // but the scrollDelta that has to be undone should not be affected by that
transform. | 816 // but the scrollDelta that has to be undone should not be affected by that
transform. |
| 813 // | 817 // |
| 814 // gfx::Transforms are in general non-commutative; using something like a no
n-uniform scale | 818 // gfx::Transforms are in general non-commutative; using something like a no
n-uniform scale |
| 815 // helps to verify that translations and non-uniform scales are applied in t
he correct | 819 // helps to verify that translations and non-uniform scales are applied in t
he correct |
| 816 // order. | 820 // order. |
| 817 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 821 FakeImplProxy proxy; |
| 822 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 823 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 818 LayerImpl* child = root->children()[0]; | 824 LayerImpl* child = root->children()[0]; |
| 819 LayerImpl* grandChild = child->children()[0]; | 825 LayerImpl* grandChild = child->children()[0]; |
| 820 | 826 |
| 821 // This scale will cause child and grandChild to be effectively 200 x 800 wi
th respect to the renderTarget. | 827 // This scale will cause child and grandChild to be effectively 200 x 800 wi
th respect to the renderTarget. |
| 822 gfx::Transform nonUniformScale; | 828 gfx::Transform nonUniformScale; |
| 823 nonUniformScale.Scale(2, 8); | 829 nonUniformScale.Scale(2, 8); |
| 824 child->setTransform(nonUniformScale); | 830 child->setTransform(nonUniformScale); |
| 825 | 831 |
| 826 child->setIsContainerForFixedPositionLayers(true); | 832 child->setIsContainerForFixedPositionLayers(true); |
| 827 grandChild->setFixedToContainerLayer(true); | 833 grandChild->setFixedToContainerLayer(true); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 848 expectedChildTransform.PreconcatTransform(nonUniformScale); | 854 expectedChildTransform.PreconcatTransform(nonUniformScale); |
| 849 | 855 |
| 850 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); | 856 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); |
| 851 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 857 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
| 852 } | 858 } |
| 853 | 859 |
| 854 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
istantContainer) | 860 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
istantContainer) |
| 855 { | 861 { |
| 856 // This test checks for correct scroll compensation when the fixed-position
container | 862 // This test checks for correct scroll compensation when the fixed-position
container |
| 857 // is NOT the direct parent of the fixed-position layer. | 863 // is NOT the direct parent of the fixed-position layer. |
| 858 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 864 FakeImplProxy proxy; |
| 865 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 866 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 859 LayerImpl* child = root->children()[0]; | 867 LayerImpl* child = root->children()[0]; |
| 860 LayerImpl* grandChild = child->children()[0]; | 868 LayerImpl* grandChild = child->children()[0]; |
| 861 LayerImpl* greatGrandChild = grandChild->children()[0]; | 869 LayerImpl* greatGrandChild = grandChild->children()[0]; |
| 862 | 870 |
| 863 child->setIsContainerForFixedPositionLayers(true); | 871 child->setIsContainerForFixedPositionLayers(true); |
| 864 grandChild->setPosition(gfx::PointF(8, 6)); | 872 grandChild->setPosition(gfx::PointF(8, 6)); |
| 865 greatGrandChild->setFixedToContainerLayer(true); | 873 greatGrandChild->setFixedToContainerLayer(true); |
| 866 | 874 |
| 867 // Case 1: scrollDelta of 0, 0 | 875 // Case 1: scrollDelta of 0, 0 |
| 868 child->setScrollDelta(gfx::Vector2d(0, 0)); | 876 child->setScrollDelta(gfx::Vector2d(0, 0)); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 890 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); | 898 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); |
| 891 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 899 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
| 892 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); | 900 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); |
| 893 } | 901 } |
| 894 | 902 |
| 895 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
istantContainerAndTransforms) | 903 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
istantContainerAndTransforms) |
| 896 { | 904 { |
| 897 // This test checks for correct scroll compensation when the fixed-position
container | 905 // This test checks for correct scroll compensation when the fixed-position
container |
| 898 // is NOT the direct parent of the fixed-position layer, and the hierarchy h
as various | 906 // is NOT the direct parent of the fixed-position layer, and the hierarchy h
as various |
| 899 // transforms that have to be processed in the correct order. | 907 // transforms that have to be processed in the correct order. |
| 900 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 908 FakeImplProxy proxy; |
| 909 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 910 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 901 LayerImpl* child = root->children()[0]; | 911 LayerImpl* child = root->children()[0]; |
| 902 LayerImpl* grandChild = child->children()[0]; | 912 LayerImpl* grandChild = child->children()[0]; |
| 903 LayerImpl* greatGrandChild = grandChild->children()[0]; | 913 LayerImpl* greatGrandChild = grandChild->children()[0]; |
| 904 | 914 |
| 905 gfx::Transform rotationAboutZ; | 915 gfx::Transform rotationAboutZ; |
| 906 MathUtil::rotateEulerAngles(&rotationAboutZ, 0, 0, 90); | 916 MathUtil::rotateEulerAngles(&rotationAboutZ, 0, 0, 90); |
| 907 | 917 |
| 908 child->setIsContainerForFixedPositionLayers(true); | 918 child->setIsContainerForFixedPositionLayers(true); |
| 909 child->setTransform(rotationAboutZ); | 919 child->setTransform(rotationAboutZ); |
| 910 grandChild->setPosition(gfx::PointF(8, 6)); | 920 grandChild->setPosition(gfx::PointF(8, 6)); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 950 } | 960 } |
| 951 | 961 |
| 952 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithM
ultipleScrollDeltas) | 962 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithM
ultipleScrollDeltas) |
| 953 { | 963 { |
| 954 // This test checks for correct scroll compensation when the fixed-position
container | 964 // This test checks for correct scroll compensation when the fixed-position
container |
| 955 // has multiple ancestors that have nonzero scrollDelta before reaching the
space where the layer is fixed. | 965 // has multiple ancestors that have nonzero scrollDelta before reaching the
space where the layer is fixed. |
| 956 // In this test, each scrollDelta occurs in a different space because of eac
h layer's local transform. | 966 // In this test, each scrollDelta occurs in a different space because of eac
h layer's local transform. |
| 957 // This test checks for correct scroll compensation when the fixed-position
container | 967 // This test checks for correct scroll compensation when the fixed-position
container |
| 958 // is NOT the direct parent of the fixed-position layer, and the hierarchy h
as various | 968 // is NOT the direct parent of the fixed-position layer, and the hierarchy h
as various |
| 959 // transforms that have to be processed in the correct order. | 969 // transforms that have to be processed in the correct order. |
| 960 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 970 FakeImplProxy proxy; |
| 971 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 972 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 961 LayerImpl* child = root->children()[0]; | 973 LayerImpl* child = root->children()[0]; |
| 962 LayerImpl* grandChild = child->children()[0]; | 974 LayerImpl* grandChild = child->children()[0]; |
| 963 LayerImpl* greatGrandChild = grandChild->children()[0]; | 975 LayerImpl* greatGrandChild = grandChild->children()[0]; |
| 964 | 976 |
| 965 gfx::Transform rotationAboutZ; | 977 gfx::Transform rotationAboutZ; |
| 966 MathUtil::rotateEulerAngles(&rotationAboutZ, 0, 0, 90); | 978 MathUtil::rotateEulerAngles(&rotationAboutZ, 0, 0, 90); |
| 967 | 979 |
| 968 child->setIsContainerForFixedPositionLayers(true); | 980 child->setIsContainerForFixedPositionLayers(true); |
| 969 child->setTransform(rotationAboutZ); | 981 child->setTransform(rotationAboutZ); |
| 970 grandChild->setPosition(gfx::PointF(8, 6)); | 982 grandChild->setPosition(gfx::PointF(8, 6)); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1010 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 1022 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
| 1011 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); | 1023 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); |
| 1012 } | 1024 } |
| 1013 | 1025 |
| 1014 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithI
ntermediateSurfaceAndTransforms) | 1026 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithI
ntermediateSurfaceAndTransforms) |
| 1015 { | 1027 { |
| 1016 // This test checks for correct scroll compensation when the fixed-position
container | 1028 // This test checks for correct scroll compensation when the fixed-position
container |
| 1017 // contributes to a different renderSurface than the fixed-position layer. I
n this | 1029 // contributes to a different renderSurface than the fixed-position layer. I
n this |
| 1018 // case, the surface drawTransforms also have to be accounted for when check
ing the | 1030 // case, the surface drawTransforms also have to be accounted for when check
ing the |
| 1019 // scrollDelta. | 1031 // scrollDelta. |
| 1020 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 1032 FakeImplProxy proxy; |
| 1033 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 1034 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 1021 LayerImpl* child = root->children()[0]; | 1035 LayerImpl* child = root->children()[0]; |
| 1022 LayerImpl* grandChild = child->children()[0]; | 1036 LayerImpl* grandChild = child->children()[0]; |
| 1023 LayerImpl* greatGrandChild = grandChild->children()[0]; | 1037 LayerImpl* greatGrandChild = grandChild->children()[0]; |
| 1024 | 1038 |
| 1025 child->setIsContainerForFixedPositionLayers(true); | 1039 child->setIsContainerForFixedPositionLayers(true); |
| 1026 grandChild->setPosition(gfx::PointF(8, 6)); | 1040 grandChild->setPosition(gfx::PointF(8, 6)); |
| 1027 grandChild->setForceRenderSurface(true); | 1041 grandChild->setForceRenderSurface(true); |
| 1028 greatGrandChild->setFixedToContainerLayer(true); | 1042 greatGrandChild->setFixedToContainerLayer(true); |
| 1029 greatGrandChild->setDrawsContent(true); | 1043 greatGrandChild->setDrawsContent(true); |
| 1030 | 1044 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1081 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 1095 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
| 1082 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); | 1096 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); |
| 1083 } | 1097 } |
| 1084 | 1098 |
| 1085 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithM
ultipleIntermediateSurfaces) | 1099 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithM
ultipleIntermediateSurfaces) |
| 1086 { | 1100 { |
| 1087 // This test checks for correct scroll compensation when the fixed-position
container | 1101 // This test checks for correct scroll compensation when the fixed-position
container |
| 1088 // contributes to a different renderSurface than the fixed-position layer, w
ith | 1102 // contributes to a different renderSurface than the fixed-position layer, w
ith |
| 1089 // additional renderSurfaces in-between. This checks that the conversion to
ancestor | 1103 // additional renderSurfaces in-between. This checks that the conversion to
ancestor |
| 1090 // surfaces is accumulated properly in the final matrix transform. | 1104 // surfaces is accumulated properly in the final matrix transform. |
| 1091 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 1105 FakeImplProxy proxy; |
| 1106 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 1107 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 1092 LayerImpl* child = root->children()[0]; | 1108 LayerImpl* child = root->children()[0]; |
| 1093 LayerImpl* grandChild = child->children()[0]; | 1109 LayerImpl* grandChild = child->children()[0]; |
| 1094 LayerImpl* greatGrandChild = grandChild->children()[0]; | 1110 LayerImpl* greatGrandChild = grandChild->children()[0]; |
| 1095 | 1111 |
| 1096 // Add one more layer to the test tree for this scenario. | 1112 // Add one more layer to the test tree for this scenario. |
| 1097 { | 1113 { |
| 1098 gfx::Transform identity; | 1114 gfx::Transform identity; |
| 1099 scoped_ptr<LayerImpl> fixedPositionChild = LayerImpl::create(5); | 1115 scoped_ptr<LayerImpl> fixedPositionChild = LayerImpl::create(&hostImpl,
5); |
| 1100 setLayerPropertiesForTesting(fixedPositionChild.get(), identity, identit
y, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); | 1116 setLayerPropertiesForTesting(fixedPositionChild.get(), identity, identit
y, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); |
| 1101 greatGrandChild->addChild(fixedPositionChild.Pass()); | 1117 greatGrandChild->addChild(fixedPositionChild.Pass()); |
| 1102 } | 1118 } |
| 1103 LayerImpl* fixedPositionChild = greatGrandChild->children()[0]; | 1119 LayerImpl* fixedPositionChild = greatGrandChild->children()[0]; |
| 1104 | 1120 |
| 1105 // Actually set up the scenario here. | 1121 // Actually set up the scenario here. |
| 1106 child->setIsContainerForFixedPositionLayers(true); | 1122 child->setIsContainerForFixedPositionLayers(true); |
| 1107 grandChild->setPosition(gfx::PointF(8, 6)); | 1123 grandChild->setPosition(gfx::PointF(8, 6)); |
| 1108 grandChild->setForceRenderSurface(true); | 1124 grandChild->setForceRenderSurface(true); |
| 1109 greatGrandChild->setPosition(gfx::PointF(40, 60)); | 1125 greatGrandChild->setPosition(gfx::PointF(40, 60)); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1190 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); | 1206 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); |
| 1191 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedFixedPositionChildTransform, fixedPo
sitionChild->drawTransform()); | 1207 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedFixedPositionChildTransform, fixedPo
sitionChild->drawTransform()); |
| 1192 } | 1208 } |
| 1193 | 1209 |
| 1194 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithC
ontainerLayerThatHasSurface) | 1210 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithC
ontainerLayerThatHasSurface) |
| 1195 { | 1211 { |
| 1196 // This test checks for correct scroll compensation when the fixed-position
container | 1212 // This test checks for correct scroll compensation when the fixed-position
container |
| 1197 // itself has a renderSurface. In this case, the container layer should be t
reated | 1213 // itself has a renderSurface. In this case, the container layer should be t
reated |
| 1198 // like a layer that contributes to a renderTarget, and that renderTarget | 1214 // like a layer that contributes to a renderTarget, and that renderTarget |
| 1199 // is completely irrelevant; it should not affect the scroll compensation. | 1215 // is completely irrelevant; it should not affect the scroll compensation. |
| 1200 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 1216 FakeImplProxy proxy; |
| 1217 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 1218 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 1201 LayerImpl* child = root->children()[0]; | 1219 LayerImpl* child = root->children()[0]; |
| 1202 LayerImpl* grandChild = child->children()[0]; | 1220 LayerImpl* grandChild = child->children()[0]; |
| 1203 | 1221 |
| 1204 child->setIsContainerForFixedPositionLayers(true); | 1222 child->setIsContainerForFixedPositionLayers(true); |
| 1205 child->setForceRenderSurface(true); | 1223 child->setForceRenderSurface(true); |
| 1206 grandChild->setFixedToContainerLayer(true); | 1224 grandChild->setFixedToContainerLayer(true); |
| 1207 grandChild->setDrawsContent(true); | 1225 grandChild->setDrawsContent(true); |
| 1208 | 1226 |
| 1209 // Case 1: scrollDelta of 0, 0 | 1227 // Case 1: scrollDelta of 0, 0 |
| 1210 child->setScrollDelta(gfx::Vector2d(0, 0)); | 1228 child->setScrollDelta(gfx::Vector2d(0, 0)); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1235 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedSurfaceDrawTransform, child->renderS
urface()->drawTransform()); | 1253 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedSurfaceDrawTransform, child->renderS
urface()->drawTransform()); |
| 1236 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); | 1254 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); |
| 1237 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 1255 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
| 1238 } | 1256 } |
| 1239 | 1257 |
| 1240 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerThatI
sAlsoFixedPositionContainer) | 1258 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerThatI
sAlsoFixedPositionContainer) |
| 1241 { | 1259 { |
| 1242 // This test checks the scenario where a fixed-position layer also happens t
o be a | 1260 // This test checks the scenario where a fixed-position layer also happens t
o be a |
| 1243 // container itself for a descendant fixed position layer. In particular, th
e layer | 1261 // container itself for a descendant fixed position layer. In particular, th
e layer |
| 1244 // should not accidentally be fixed to itself. | 1262 // should not accidentally be fixed to itself. |
| 1245 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 1263 FakeImplProxy proxy; |
| 1264 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 1265 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 1246 LayerImpl* child = root->children()[0]; | 1266 LayerImpl* child = root->children()[0]; |
| 1247 LayerImpl* grandChild = child->children()[0]; | 1267 LayerImpl* grandChild = child->children()[0]; |
| 1248 | 1268 |
| 1249 child->setIsContainerForFixedPositionLayers(true); | 1269 child->setIsContainerForFixedPositionLayers(true); |
| 1250 grandChild->setFixedToContainerLayer(true); | 1270 grandChild->setFixedToContainerLayer(true); |
| 1251 | 1271 |
| 1252 // This should not confuse the grandChild. If correct, the grandChild would
still be considered fixed to its container (i.e. "child"). | 1272 // This should not confuse the grandChild. If correct, the grandChild would
still be considered fixed to its container (i.e. "child"). |
| 1253 grandChild->setIsContainerForFixedPositionLayers(true); | 1273 grandChild->setIsContainerForFixedPositionLayers(true); |
| 1254 | 1274 |
| 1255 // Case 1: scrollDelta of 0, 0 | 1275 // Case 1: scrollDelta of 0, 0 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1270 expectedChildTransform.Translate(-10, -10); | 1290 expectedChildTransform.Translate(-10, -10); |
| 1271 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); | 1291 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); |
| 1272 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 1292 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
| 1273 } | 1293 } |
| 1274 | 1294 |
| 1275 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerThatH
asNoContainer) | 1295 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerThatH
asNoContainer) |
| 1276 { | 1296 { |
| 1277 // This test checks scroll compensation when a fixed-position layer does not
find any | 1297 // This test checks scroll compensation when a fixed-position layer does not
find any |
| 1278 // ancestor that is a "containerForFixedPositionLayers". In this situation,
the layer should | 1298 // ancestor that is a "containerForFixedPositionLayers". In this situation,
the layer should |
| 1279 // be fixed to the viewport -- not the rootLayer, which may have transforms
of its own. | 1299 // be fixed to the viewport -- not the rootLayer, which may have transforms
of its own. |
| 1280 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 1300 FakeImplProxy proxy; |
| 1301 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 1302 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(&hostImpl); |
| 1281 LayerImpl* child = root->children()[0]; | 1303 LayerImpl* child = root->children()[0]; |
| 1282 LayerImpl* grandChild = child->children()[0]; | 1304 LayerImpl* grandChild = child->children()[0]; |
| 1283 | 1305 |
| 1284 gfx::Transform rotationByZ; | 1306 gfx::Transform rotationByZ; |
| 1285 MathUtil::rotateEulerAngles(&rotationByZ, 0, 0, 90); | 1307 MathUtil::rotateEulerAngles(&rotationByZ, 0, 0, 90); |
| 1286 | 1308 |
| 1287 root->setTransform(rotationByZ); | 1309 root->setTransform(rotationByZ); |
| 1288 grandChild->setFixedToContainerLayer(true); | 1310 grandChild->setFixedToContainerLayer(true); |
| 1289 | 1311 |
| 1290 // Case 1: root scrollDelta of 0, 0 | 1312 // Case 1: root scrollDelta of 0, 0 |
| (...skipping 1471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2762 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test
Point, renderSurfaceLayerList); | 2784 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test
Point, renderSurfaceLayerList); |
| 2763 EXPECT_FALSE(resultLayer); | 2785 EXPECT_FALSE(resultLayer); |
| 2764 | 2786 |
| 2765 testPoint = gfx::Point(10, 20); | 2787 testPoint = gfx::Point(10, 20); |
| 2766 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2788 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
| 2767 EXPECT_FALSE(resultLayer); | 2789 EXPECT_FALSE(resultLayer); |
| 2768 } | 2790 } |
| 2769 | 2791 |
| 2770 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayer) | 2792 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayer) |
| 2771 { | 2793 { |
| 2772 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2794 FakeImplProxy proxy; |
| 2795 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 2796 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 12345); |
| 2773 | 2797 |
| 2774 gfx::Transform identityMatrix; | 2798 gfx::Transform identityMatrix; |
| 2775 gfx::PointF anchor(0, 0); | 2799 gfx::PointF anchor(0, 0); |
| 2776 gfx::PointF position(0, 0); | 2800 gfx::PointF position(0, 0); |
| 2777 gfx::Size bounds(100, 100); | 2801 gfx::Size bounds(100, 100); |
| 2778 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 2802 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
| 2779 root->setDrawsContent(true); | 2803 root->setDrawsContent(true); |
| 2780 | 2804 |
| 2781 std::vector<LayerImpl*> renderSurfaceLayerList; | 2805 std::vector<LayerImpl*> renderSurfaceLayerList; |
| 2782 int dummyMaxTextureSize = 512; | 2806 int dummyMaxTextureSize = 512; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 2802 EXPECT_EQ(12345, resultLayer->id()); | 2826 EXPECT_EQ(12345, resultLayer->id()); |
| 2803 | 2827 |
| 2804 testPoint = gfx::Point(99, 99); | 2828 testPoint = gfx::Point(99, 99); |
| 2805 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2829 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
| 2806 ASSERT_TRUE(resultLayer); | 2830 ASSERT_TRUE(resultLayer); |
| 2807 EXPECT_EQ(12345, resultLayer->id()); | 2831 EXPECT_EQ(12345, resultLayer->id()); |
| 2808 } | 2832 } |
| 2809 | 2833 |
| 2810 TEST(LayerTreeHostCommonTest, verifyHitTestingForUninvertibleTransform) | 2834 TEST(LayerTreeHostCommonTest, verifyHitTestingForUninvertibleTransform) |
| 2811 { | 2835 { |
| 2812 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2836 FakeImplProxy proxy; |
| 2837 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 2838 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 12345); |
| 2813 | 2839 |
| 2814 gfx::Transform uninvertibleTransform; | 2840 gfx::Transform uninvertibleTransform; |
| 2815 uninvertibleTransform.matrix().setDouble(0, 0, 0); | 2841 uninvertibleTransform.matrix().setDouble(0, 0, 0); |
| 2816 uninvertibleTransform.matrix().setDouble(1, 1, 0); | 2842 uninvertibleTransform.matrix().setDouble(1, 1, 0); |
| 2817 uninvertibleTransform.matrix().setDouble(2, 2, 0); | 2843 uninvertibleTransform.matrix().setDouble(2, 2, 0); |
| 2818 uninvertibleTransform.matrix().setDouble(3, 3, 0); | 2844 uninvertibleTransform.matrix().setDouble(3, 3, 0); |
| 2819 ASSERT_FALSE(uninvertibleTransform.IsInvertible()); | 2845 ASSERT_FALSE(uninvertibleTransform.IsInvertible()); |
| 2820 | 2846 |
| 2821 gfx::Transform identityMatrix; | 2847 gfx::Transform identityMatrix; |
| 2822 gfx::PointF anchor(0, 0); | 2848 gfx::PointF anchor(0, 0); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2861 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2887 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
| 2862 EXPECT_FALSE(resultLayer); | 2888 EXPECT_FALSE(resultLayer); |
| 2863 | 2889 |
| 2864 testPoint = gfx::Point(-1, -1); | 2890 testPoint = gfx::Point(-1, -1); |
| 2865 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2891 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
| 2866 EXPECT_FALSE(resultLayer); | 2892 EXPECT_FALSE(resultLayer); |
| 2867 } | 2893 } |
| 2868 | 2894 |
| 2869 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePositionedLayer) | 2895 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePositionedLayer) |
| 2870 { | 2896 { |
| 2871 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2897 FakeImplProxy proxy; |
| 2898 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 2899 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 12345); |
| 2872 | 2900 |
| 2873 gfx::Transform identityMatrix; | 2901 gfx::Transform identityMatrix; |
| 2874 gfx::PointF anchor(0, 0); | 2902 gfx::PointF anchor(0, 0); |
| 2875 gfx::PointF position(50, 50); // this layer is positioned, and hit testing s
hould correctly know where the layer is located. | 2903 gfx::PointF position(50, 50); // this layer is positioned, and hit testing s
hould correctly know where the layer is located. |
| 2876 gfx::Size bounds(100, 100); | 2904 gfx::Size bounds(100, 100); |
| 2877 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 2905 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
| 2878 root->setDrawsContent(true); | 2906 root->setDrawsContent(true); |
| 2879 | 2907 |
| 2880 std::vector<LayerImpl*> renderSurfaceLayerList; | 2908 std::vector<LayerImpl*> renderSurfaceLayerList; |
| 2881 int dummyMaxTextureSize = 512; | 2909 int dummyMaxTextureSize = 512; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2902 EXPECT_EQ(12345, resultLayer->id()); | 2930 EXPECT_EQ(12345, resultLayer->id()); |
| 2903 | 2931 |
| 2904 testPoint = gfx::Point(99, 99); | 2932 testPoint = gfx::Point(99, 99); |
| 2905 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2933 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
| 2906 ASSERT_TRUE(resultLayer); | 2934 ASSERT_TRUE(resultLayer); |
| 2907 EXPECT_EQ(12345, resultLayer->id()); | 2935 EXPECT_EQ(12345, resultLayer->id()); |
| 2908 } | 2936 } |
| 2909 | 2937 |
| 2910 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleRotatedLayer) | 2938 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleRotatedLayer) |
| 2911 { | 2939 { |
| 2912 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2940 FakeImplProxy proxy; |
| 2941 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 2942 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 12345); |
| 2913 | 2943 |
| 2914 gfx::Transform identityMatrix; | 2944 gfx::Transform identityMatrix; |
| 2915 gfx::Transform rotation45DegreesAboutCenter; | 2945 gfx::Transform rotation45DegreesAboutCenter; |
| 2916 rotation45DegreesAboutCenter.Translate(50, 50); | 2946 rotation45DegreesAboutCenter.Translate(50, 50); |
| 2917 MathUtil::rotateEulerAngles(&rotation45DegreesAboutCenter, 0, 0, 45); | 2947 MathUtil::rotateEulerAngles(&rotation45DegreesAboutCenter, 0, 0, 45); |
| 2918 rotation45DegreesAboutCenter.Translate(-50, -50); | 2948 rotation45DegreesAboutCenter.Translate(-50, -50); |
| 2919 gfx::PointF anchor(0, 0); | 2949 gfx::PointF anchor(0, 0); |
| 2920 gfx::PointF position(0, 0); | 2950 gfx::PointF position(0, 0); |
| 2921 gfx::Size bounds(100, 100); | 2951 gfx::Size bounds(100, 100); |
| 2922 setLayerPropertiesForTesting(root.get(), rotation45DegreesAboutCenter, ident
ityMatrix, anchor, position, bounds, false); | 2952 setLayerPropertiesForTesting(root.get(), rotation45DegreesAboutCenter, ident
ityMatrix, anchor, position, bounds, false); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 2951 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2981 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
| 2952 ASSERT_FALSE(resultLayer); | 2982 ASSERT_FALSE(resultLayer); |
| 2953 | 2983 |
| 2954 testPoint = gfx::Point(-1, 50); | 2984 testPoint = gfx::Point(-1, 50); |
| 2955 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2985 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
| 2956 ASSERT_FALSE(resultLayer); | 2986 ASSERT_FALSE(resultLayer); |
| 2957 } | 2987 } |
| 2958 | 2988 |
| 2959 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePerspectiveLayer) | 2989 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePerspectiveLayer) |
| 2960 { | 2990 { |
| 2961 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2991 FakeImplProxy proxy; |
| 2992 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 2993 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 12345); |
| 2962 | 2994 |
| 2963 gfx::Transform identityMatrix; | 2995 gfx::Transform identityMatrix; |
| 2964 | 2996 |
| 2965 // perspectiveProjectionAboutCenter * translationByZ is designed so that the
100 x 100 layer becomes 50 x 50, and remains centered at (50, 50). | 2997 // perspectiveProjectionAboutCenter * translationByZ is designed so that the
100 x 100 layer becomes 50 x 50, and remains centered at (50, 50). |
| 2966 gfx::Transform perspectiveProjectionAboutCenter; | 2998 gfx::Transform perspectiveProjectionAboutCenter; |
| 2967 perspectiveProjectionAboutCenter.Translate(50, 50); | 2999 perspectiveProjectionAboutCenter.Translate(50, 50); |
| 2968 perspectiveProjectionAboutCenter.ApplyPerspectiveDepth(1); | 3000 perspectiveProjectionAboutCenter.ApplyPerspectiveDepth(1); |
| 2969 perspectiveProjectionAboutCenter.Translate(-50, -50); | 3001 perspectiveProjectionAboutCenter.Translate(-50, -50); |
| 2970 gfx::Transform translationByZ; | 3002 gfx::Transform translationByZ; |
| 2971 translationByZ.Translate3d(0, 0, -1); | 3003 translationByZ.Translate3d(0, 0, -1); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3011 // A layer's visibleContentRect is actually in the layer's content space. Th
e | 3043 // A layer's visibleContentRect is actually in the layer's content space. Th
e |
| 3012 // screenSpaceTransform converts from the layer's origin space to screen spa
ce. This | 3044 // screenSpaceTransform converts from the layer's origin space to screen spa
ce. This |
| 3013 // test makes sure that hit testing works correctly accounts for the content
s scale. | 3045 // test makes sure that hit testing works correctly accounts for the content
s scale. |
| 3014 // A contentsScale that is not 1 effectively forces a non-identity transform
between | 3046 // A contentsScale that is not 1 effectively forces a non-identity transform
between |
| 3015 // layer's content space and layer's origin space. The hit testing code must
take this into account. | 3047 // layer's content space and layer's origin space. The hit testing code must
take this into account. |
| 3016 // | 3048 // |
| 3017 // To test this, the layer is positioned at (25, 25), and is size (50, 50).
If | 3049 // To test this, the layer is positioned at (25, 25), and is size (50, 50).
If |
| 3018 // contentsScale is ignored, then hit testing will mis-interpret the visible
ContentRect | 3050 // contentsScale is ignored, then hit testing will mis-interpret the visible
ContentRect |
| 3019 // as being larger than the actual bounds of the layer. | 3051 // as being larger than the actual bounds of the layer. |
| 3020 // | 3052 // |
| 3021 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3053 FakeImplProxy proxy; |
| 3054 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3055 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 1); |
| 3022 | 3056 |
| 3023 gfx::Transform identityMatrix; | 3057 gfx::Transform identityMatrix; |
| 3024 gfx::PointF anchor(0, 0); | 3058 gfx::PointF anchor(0, 0); |
| 3025 | 3059 |
| 3026 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); | 3060 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); |
| 3027 | 3061 |
| 3028 { | 3062 { |
| 3029 gfx::PointF position(25, 25); | 3063 gfx::PointF position(25, 25); |
| 3030 gfx::Size bounds(50, 50); | 3064 gfx::Size bounds(50, 50); |
| 3031 scoped_ptr<LayerImpl> testLayer = LayerImpl::create(12345); | 3065 scoped_ptr<LayerImpl> testLayer = LayerImpl::create(&hostImpl, 12345); |
| 3032 setLayerPropertiesForTesting(testLayer.get(), identityMatrix, identityMa
trix, anchor, position, bounds, false); | 3066 setLayerPropertiesForTesting(testLayer.get(), identityMatrix, identityMa
trix, anchor, position, bounds, false); |
| 3033 | 3067 |
| 3034 // override contentBounds and contentsScale | 3068 // override contentBounds and contentsScale |
| 3035 testLayer->setContentBounds(gfx::Size(100, 100)); | 3069 testLayer->setContentBounds(gfx::Size(100, 100)); |
| 3036 testLayer->setContentsScale(2, 2); | 3070 testLayer->setContentsScale(2, 2); |
| 3037 | 3071 |
| 3038 testLayer->setDrawsContent(true); | 3072 testLayer->setDrawsContent(true); |
| 3039 root->addChild(testLayer.Pass()); | 3073 root->addChild(testLayer.Pass()); |
| 3040 } | 3074 } |
| 3041 | 3075 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3075 EXPECT_EQ(12345, resultLayer->id()); | 3109 EXPECT_EQ(12345, resultLayer->id()); |
| 3076 } | 3110 } |
| 3077 | 3111 |
| 3078 TEST(LayerTreeHostCommonTest, verifyHitTestingForSimpleClippedLayer) | 3112 TEST(LayerTreeHostCommonTest, verifyHitTestingForSimpleClippedLayer) |
| 3079 { | 3113 { |
| 3080 // Test that hit-testing will only work for the visible portion of a layer,
and not | 3114 // Test that hit-testing will only work for the visible portion of a layer,
and not |
| 3081 // the entire layer bounds. Here we just test the simple axis-aligned case. | 3115 // the entire layer bounds. Here we just test the simple axis-aligned case. |
| 3082 gfx::Transform identityMatrix; | 3116 gfx::Transform identityMatrix; |
| 3083 gfx::PointF anchor(0, 0); | 3117 gfx::PointF anchor(0, 0); |
| 3084 | 3118 |
| 3085 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3119 FakeImplProxy proxy; |
| 3120 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3121 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 1); |
| 3086 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); | 3122 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); |
| 3087 | 3123 |
| 3088 { | 3124 { |
| 3089 scoped_ptr<LayerImpl> clippingLayer = LayerImpl::create(123); | 3125 scoped_ptr<LayerImpl> clippingLayer = LayerImpl::create(&hostImpl, 123); |
| 3090 gfx::PointF position(25, 25); // this layer is positioned, and hit testi
ng should correctly know where the layer is located. | 3126 gfx::PointF position(25, 25); // this layer is positioned, and hit testi
ng should correctly know where the layer is located. |
| 3091 gfx::Size bounds(50, 50); | 3127 gfx::Size bounds(50, 50); |
| 3092 setLayerPropertiesForTesting(clippingLayer.get(), identityMatrix, identi
tyMatrix, anchor, position, bounds, false); | 3128 setLayerPropertiesForTesting(clippingLayer.get(), identityMatrix, identi
tyMatrix, anchor, position, bounds, false); |
| 3093 clippingLayer->setMasksToBounds(true); | 3129 clippingLayer->setMasksToBounds(true); |
| 3094 | 3130 |
| 3095 scoped_ptr<LayerImpl> child = LayerImpl::create(456); | 3131 scoped_ptr<LayerImpl> child = LayerImpl::create(&hostImpl, 456); |
| 3096 position = gfx::PointF(-50, -50); | 3132 position = gfx::PointF(-50, -50); |
| 3097 bounds = gfx::Size(300, 300); | 3133 bounds = gfx::Size(300, 300); |
| 3098 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix
, anchor, position, bounds, false); | 3134 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix
, anchor, position, bounds, false); |
| 3099 child->setDrawsContent(true); | 3135 child->setDrawsContent(true); |
| 3100 clippingLayer->addChild(child.Pass()); | 3136 clippingLayer->addChild(child.Pass()); |
| 3101 root->addChild(clippingLayer.Pass()); | 3137 root->addChild(clippingLayer.Pass()); |
| 3102 } | 3138 } |
| 3103 | 3139 |
| 3104 std::vector<LayerImpl*> renderSurfaceLayerList; | 3140 std::vector<LayerImpl*> renderSurfaceLayerList; |
| 3105 int dummyMaxTextureSize = 512; | 3141 int dummyMaxTextureSize = 512; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3138 // This test checks whether hit testing correctly avoids hit testing with mu
ltiple | 3174 // This test checks whether hit testing correctly avoids hit testing with mu
ltiple |
| 3139 // ancestors that clip in non axis-aligned ways. To pass this test, the hit
testing | 3175 // ancestors that clip in non axis-aligned ways. To pass this test, the hit
testing |
| 3140 // algorithm needs to recognize that multiple parent layers may clip the lay
er, and | 3176 // algorithm needs to recognize that multiple parent layers may clip the lay
er, and |
| 3141 // should not actually hit those clipped areas. | 3177 // should not actually hit those clipped areas. |
| 3142 // | 3178 // |
| 3143 // The child and grandChild layers are both initialized to clip the rotatedL
eaf. The | 3179 // The child and grandChild layers are both initialized to clip the rotatedL
eaf. The |
| 3144 // child layer is rotated about the top-left corner, so that the root + chil
d clips | 3180 // child layer is rotated about the top-left corner, so that the root + chil
d clips |
| 3145 // combined create a triangle. The rotatedLeaf will only be visible where it
overlaps | 3181 // combined create a triangle. The rotatedLeaf will only be visible where it
overlaps |
| 3146 // this triangle. | 3182 // this triangle. |
| 3147 // | 3183 // |
| 3148 scoped_ptr<LayerImpl> root = LayerImpl::create(123); | 3184 FakeImplProxy proxy; |
| 3185 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3186 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 123); |
| 3149 | 3187 |
| 3150 gfx::Transform identityMatrix; | 3188 gfx::Transform identityMatrix; |
| 3151 gfx::PointF anchor(0, 0); | 3189 gfx::PointF anchor(0, 0); |
| 3152 gfx::PointF position(0, 0); | 3190 gfx::PointF position(0, 0); |
| 3153 gfx::Size bounds(100, 100); | 3191 gfx::Size bounds(100, 100); |
| 3154 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 3192 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
| 3155 root->setMasksToBounds(true); | 3193 root->setMasksToBounds(true); |
| 3156 | 3194 |
| 3157 { | 3195 { |
| 3158 scoped_ptr<LayerImpl> child = LayerImpl::create(456); | 3196 scoped_ptr<LayerImpl> child = LayerImpl::create(&hostImpl, 456); |
| 3159 scoped_ptr<LayerImpl> grandChild = LayerImpl::create(789); | 3197 scoped_ptr<LayerImpl> grandChild = LayerImpl::create(&hostImpl, 789); |
| 3160 scoped_ptr<LayerImpl> rotatedLeaf = LayerImpl::create(2468); | 3198 scoped_ptr<LayerImpl> rotatedLeaf = LayerImpl::create(&hostImpl, 2468); |
| 3161 | 3199 |
| 3162 position = gfx::PointF(10, 10); | 3200 position = gfx::PointF(10, 10); |
| 3163 bounds = gfx::Size(80, 80); | 3201 bounds = gfx::Size(80, 80); |
| 3164 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix
, anchor, position, bounds, false); | 3202 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix
, anchor, position, bounds, false); |
| 3165 child->setMasksToBounds(true); | 3203 child->setMasksToBounds(true); |
| 3166 | 3204 |
| 3167 gfx::Transform rotation45DegreesAboutCorner; | 3205 gfx::Transform rotation45DegreesAboutCorner; |
| 3168 MathUtil::rotateEulerAngles(&rotation45DegreesAboutCorner, 0, 0, 45); | 3206 MathUtil::rotateEulerAngles(&rotation45DegreesAboutCorner, 0, 0, 45); |
| 3169 | 3207 |
| 3170 position = gfx::PointF(0, 0); // remember, positioned with respect to it
s parent which is already at 10, 10 | 3208 position = gfx::PointF(0, 0); // remember, positioned with respect to it
s parent which is already at 10, 10 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3239 EXPECT_EQ(2468, resultLayer->id()); | 3277 EXPECT_EQ(2468, resultLayer->id()); |
| 3240 } | 3278 } |
| 3241 | 3279 |
| 3242 TEST(LayerTreeHostCommonTest, verifyHitTestingForNonClippingIntermediateLayer) | 3280 TEST(LayerTreeHostCommonTest, verifyHitTestingForNonClippingIntermediateLayer) |
| 3243 { | 3281 { |
| 3244 // This test checks that hit testing code does not accidentally clip to laye
r | 3282 // This test checks that hit testing code does not accidentally clip to laye
r |
| 3245 // bounds for a layer that actually does not clip. | 3283 // bounds for a layer that actually does not clip. |
| 3246 gfx::Transform identityMatrix; | 3284 gfx::Transform identityMatrix; |
| 3247 gfx::PointF anchor(0, 0); | 3285 gfx::PointF anchor(0, 0); |
| 3248 | 3286 |
| 3249 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3287 FakeImplProxy proxy; |
| 3288 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3289 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 1); |
| 3250 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); | 3290 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); |
| 3251 | 3291 |
| 3252 { | 3292 { |
| 3253 scoped_ptr<LayerImpl> intermediateLayer = LayerImpl::create(123); | 3293 scoped_ptr<LayerImpl> intermediateLayer = LayerImpl::create(&hostImpl, 1
23); |
| 3254 gfx::PointF position(10, 10); // this layer is positioned, and hit testi
ng should correctly know where the layer is located. | 3294 gfx::PointF position(10, 10); // this layer is positioned, and hit testi
ng should correctly know where the layer is located. |
| 3255 gfx::Size bounds(50, 50); | 3295 gfx::Size bounds(50, 50); |
| 3256 setLayerPropertiesForTesting(intermediateLayer.get(), identityMatrix, id
entityMatrix, anchor, position, bounds, false); | 3296 setLayerPropertiesForTesting(intermediateLayer.get(), identityMatrix, id
entityMatrix, anchor, position, bounds, false); |
| 3257 // Sanity check the intermediate layer should not clip. | 3297 // Sanity check the intermediate layer should not clip. |
| 3258 ASSERT_FALSE(intermediateLayer->masksToBounds()); | 3298 ASSERT_FALSE(intermediateLayer->masksToBounds()); |
| 3259 ASSERT_FALSE(intermediateLayer->maskLayer()); | 3299 ASSERT_FALSE(intermediateLayer->maskLayer()); |
| 3260 | 3300 |
| 3261 // The child of the intermediateLayer is translated so that it does not
overlap intermediateLayer at all. | 3301 // The child of the intermediateLayer is translated so that it does not
overlap intermediateLayer at all. |
| 3262 // If child is incorrectly clipped, we would not be able to hit it succe
ssfully. | 3302 // If child is incorrectly clipped, we would not be able to hit it succe
ssfully. |
| 3263 scoped_ptr<LayerImpl> child = LayerImpl::create(456); | 3303 scoped_ptr<LayerImpl> child = LayerImpl::create(&hostImpl, 456); |
| 3264 position = gfx::PointF(60, 60); // 70, 70 in screen space | 3304 position = gfx::PointF(60, 60); // 70, 70 in screen space |
| 3265 bounds = gfx::Size(20, 20); | 3305 bounds = gfx::Size(20, 20); |
| 3266 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix
, anchor, position, bounds, false); | 3306 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix
, anchor, position, bounds, false); |
| 3267 child->setDrawsContent(true); | 3307 child->setDrawsContent(true); |
| 3268 intermediateLayer->addChild(child.Pass()); | 3308 intermediateLayer->addChild(child.Pass()); |
| 3269 root->addChild(intermediateLayer.Pass()); | 3309 root->addChild(intermediateLayer.Pass()); |
| 3270 } | 3310 } |
| 3271 | 3311 |
| 3272 std::vector<LayerImpl*> renderSurfaceLayerList; | 3312 std::vector<LayerImpl*> renderSurfaceLayerList; |
| 3273 int dummyMaxTextureSize = 512; | 3313 int dummyMaxTextureSize = 512; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 3295 | 3335 |
| 3296 testPoint = gfx::Point(89, 89); | 3336 testPoint = gfx::Point(89, 89); |
| 3297 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 3337 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
| 3298 ASSERT_TRUE(resultLayer); | 3338 ASSERT_TRUE(resultLayer); |
| 3299 EXPECT_EQ(456, resultLayer->id()); | 3339 EXPECT_EQ(456, resultLayer->id()); |
| 3300 } | 3340 } |
| 3301 | 3341 |
| 3302 | 3342 |
| 3303 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayers) | 3343 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayers) |
| 3304 { | 3344 { |
| 3305 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3345 FakeImplProxy proxy; |
| 3346 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3347 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 1); |
| 3306 | 3348 |
| 3307 gfx::Transform identityMatrix; | 3349 gfx::Transform identityMatrix; |
| 3308 gfx::PointF anchor(0, 0); | 3350 gfx::PointF anchor(0, 0); |
| 3309 gfx::PointF position(0, 0); | 3351 gfx::PointF position(0, 0); |
| 3310 gfx::Size bounds(100, 100); | 3352 gfx::Size bounds(100, 100); |
| 3311 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 3353 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
| 3312 root->setDrawsContent(true); | 3354 root->setDrawsContent(true); |
| 3313 | 3355 |
| 3314 { | 3356 { |
| 3315 // child 1 and child2 are initialized to overlap between x=50 and x=60. | 3357 // child 1 and child2 are initialized to overlap between x=50 and x=60. |
| 3316 // grandChild is set to overlap both child1 and child2 between y=50 and
y=60. | 3358 // grandChild is set to overlap both child1 and child2 between y=50 and
y=60. |
| 3317 // The expected stacking order is: | 3359 // The expected stacking order is: |
| 3318 // (front) child2, (second) grandChild, (third) child1, and (back) the
root layer behind all other layers. | 3360 // (front) child2, (second) grandChild, (third) child1, and (back) the
root layer behind all other layers. |
| 3319 | 3361 |
| 3320 scoped_ptr<LayerImpl> child1 = LayerImpl::create(2); | 3362 scoped_ptr<LayerImpl> child1 = LayerImpl::create(&hostImpl, 2); |
| 3321 scoped_ptr<LayerImpl> child2 = LayerImpl::create(3); | 3363 scoped_ptr<LayerImpl> child2 = LayerImpl::create(&hostImpl, 3); |
| 3322 scoped_ptr<LayerImpl> grandChild1 = LayerImpl::create(4); | 3364 scoped_ptr<LayerImpl> grandChild1 = LayerImpl::create(&hostImpl, 4); |
| 3323 | 3365 |
| 3324 position = gfx::PointF(10, 10); | 3366 position = gfx::PointF(10, 10); |
| 3325 bounds = gfx::Size(50, 50); | 3367 bounds = gfx::Size(50, 50); |
| 3326 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatri
x, anchor, position, bounds, false); | 3368 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatri
x, anchor, position, bounds, false); |
| 3327 child1->setDrawsContent(true); | 3369 child1->setDrawsContent(true); |
| 3328 | 3370 |
| 3329 position = gfx::PointF(50, 10); | 3371 position = gfx::PointF(50, 10); |
| 3330 bounds = gfx::Size(50, 50); | 3372 bounds = gfx::Size(50, 50); |
| 3331 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatri
x, anchor, position, bounds, false); | 3373 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatri
x, anchor, position, bounds, false); |
| 3332 child2->setDrawsContent(true); | 3374 child2->setDrawsContent(true); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3398 ASSERT_TRUE(resultLayer); | 3440 ASSERT_TRUE(resultLayer); |
| 3399 EXPECT_EQ(4, resultLayer->id()); | 3441 EXPECT_EQ(4, resultLayer->id()); |
| 3400 } | 3442 } |
| 3401 | 3443 |
| 3402 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayerLists) | 3444 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayerLists) |
| 3403 { | 3445 { |
| 3404 // | 3446 // |
| 3405 // The geometry is set up similarly to the previous case, but | 3447 // The geometry is set up similarly to the previous case, but |
| 3406 // all layers are forced to be renderSurfaces now. | 3448 // all layers are forced to be renderSurfaces now. |
| 3407 // | 3449 // |
| 3408 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3450 FakeImplProxy proxy; |
| 3451 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3452 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 1); |
| 3409 | 3453 |
| 3410 gfx::Transform identityMatrix; | 3454 gfx::Transform identityMatrix; |
| 3411 gfx::PointF anchor(0, 0); | 3455 gfx::PointF anchor(0, 0); |
| 3412 gfx::PointF position(0, 0); | 3456 gfx::PointF position(0, 0); |
| 3413 gfx::Size bounds(100, 100); | 3457 gfx::Size bounds(100, 100); |
| 3414 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 3458 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
| 3415 root->setDrawsContent(true); | 3459 root->setDrawsContent(true); |
| 3416 | 3460 |
| 3417 { | 3461 { |
| 3418 // child 1 and child2 are initialized to overlap between x=50 and x=60. | 3462 // child 1 and child2 are initialized to overlap between x=50 and x=60. |
| 3419 // grandChild is set to overlap both child1 and child2 between y=50 and
y=60. | 3463 // grandChild is set to overlap both child1 and child2 between y=50 and
y=60. |
| 3420 // The expected stacking order is: | 3464 // The expected stacking order is: |
| 3421 // (front) child2, (second) grandChild, (third) child1, and (back) the
root layer behind all other layers. | 3465 // (front) child2, (second) grandChild, (third) child1, and (back) the
root layer behind all other layers. |
| 3422 | 3466 |
| 3423 scoped_ptr<LayerImpl> child1 = LayerImpl::create(2); | 3467 scoped_ptr<LayerImpl> child1 = LayerImpl::create(&hostImpl, 2); |
| 3424 scoped_ptr<LayerImpl> child2 = LayerImpl::create(3); | 3468 scoped_ptr<LayerImpl> child2 = LayerImpl::create(&hostImpl, 3); |
| 3425 scoped_ptr<LayerImpl> grandChild1 = LayerImpl::create(4); | 3469 scoped_ptr<LayerImpl> grandChild1 = LayerImpl::create(&hostImpl, 4); |
| 3426 | 3470 |
| 3427 position = gfx::PointF(10, 10); | 3471 position = gfx::PointF(10, 10); |
| 3428 bounds = gfx::Size(50, 50); | 3472 bounds = gfx::Size(50, 50); |
| 3429 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatri
x, anchor, position, bounds, false); | 3473 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatri
x, anchor, position, bounds, false); |
| 3430 child1->setDrawsContent(true); | 3474 child1->setDrawsContent(true); |
| 3431 child1->setForceRenderSurface(true); | 3475 child1->setForceRenderSurface(true); |
| 3432 | 3476 |
| 3433 position = gfx::PointF(50, 10); | 3477 position = gfx::PointF(50, 10); |
| 3434 bounds = gfx::Size(50, 50); | 3478 bounds = gfx::Size(50, 50); |
| 3435 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatri
x, anchor, position, bounds, false); | 3479 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatri
x, anchor, position, bounds, false); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3520 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTou
chHandlerRegion(testPoint, renderSurfaceLayerList); | 3564 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTou
chHandlerRegion(testPoint, renderSurfaceLayerList); |
| 3521 EXPECT_FALSE(resultLayer); | 3565 EXPECT_FALSE(resultLayer); |
| 3522 | 3566 |
| 3523 testPoint = gfx::Point(10, 20); | 3567 testPoint = gfx::Point(10, 20); |
| 3524 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); | 3568 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); |
| 3525 EXPECT_FALSE(resultLayer); | 3569 EXPECT_FALSE(resultLayer); |
| 3526 } | 3570 } |
| 3527 | 3571 |
| 3528 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer
) | 3572 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer
) |
| 3529 { | 3573 { |
| 3530 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 3574 FakeImplProxy proxy; |
| 3575 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3576 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 12345); |
| 3531 | 3577 |
| 3532 gfx::Transform identityMatrix; | 3578 gfx::Transform identityMatrix; |
| 3533 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); | 3579 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); |
| 3534 gfx::PointF anchor(0, 0); | 3580 gfx::PointF anchor(0, 0); |
| 3535 gfx::PointF position(0, 0); | 3581 gfx::PointF position(0, 0); |
| 3536 gfx::Size bounds(100, 100); | 3582 gfx::Size bounds(100, 100); |
| 3537 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 3583 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
| 3538 root->setDrawsContent(true); | 3584 root->setDrawsContent(true); |
| 3539 | 3585 |
| 3540 std::vector<LayerImpl*> renderSurfaceLayerList; | 3586 std::vector<LayerImpl*> renderSurfaceLayerList; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3576 EXPECT_EQ(12345, resultLayer->id()); | 3622 EXPECT_EQ(12345, resultLayer->id()); |
| 3577 | 3623 |
| 3578 testPoint = gfx::Point(59, 59); | 3624 testPoint = gfx::Point(59, 59); |
| 3579 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); | 3625 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); |
| 3580 ASSERT_TRUE(resultLayer); | 3626 ASSERT_TRUE(resultLayer); |
| 3581 EXPECT_EQ(12345, resultLayer->id()); | 3627 EXPECT_EQ(12345, resultLayer->id()); |
| 3582 } | 3628 } |
| 3583 | 3629 |
| 3584 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForUninvertibl
eTransform) | 3630 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForUninvertibl
eTransform) |
| 3585 { | 3631 { |
| 3586 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 3632 FakeImplProxy proxy; |
| 3633 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3634 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 12345); |
| 3587 | 3635 |
| 3588 gfx::Transform uninvertibleTransform; | 3636 gfx::Transform uninvertibleTransform; |
| 3589 uninvertibleTransform.matrix().setDouble(0, 0, 0); | 3637 uninvertibleTransform.matrix().setDouble(0, 0, 0); |
| 3590 uninvertibleTransform.matrix().setDouble(1, 1, 0); | 3638 uninvertibleTransform.matrix().setDouble(1, 1, 0); |
| 3591 uninvertibleTransform.matrix().setDouble(2, 2, 0); | 3639 uninvertibleTransform.matrix().setDouble(2, 2, 0); |
| 3592 uninvertibleTransform.matrix().setDouble(3, 3, 0); | 3640 uninvertibleTransform.matrix().setDouble(3, 3, 0); |
| 3593 ASSERT_FALSE(uninvertibleTransform.IsInvertible()); | 3641 ASSERT_FALSE(uninvertibleTransform.IsInvertible()); |
| 3594 | 3642 |
| 3595 gfx::Transform identityMatrix; | 3643 gfx::Transform identityMatrix; |
| 3596 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); | 3644 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3637 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); | 3685 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); |
| 3638 EXPECT_FALSE(resultLayer); | 3686 EXPECT_FALSE(resultLayer); |
| 3639 | 3687 |
| 3640 testPoint = gfx::Point(-1, -1); | 3688 testPoint = gfx::Point(-1, -1); |
| 3641 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); | 3689 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); |
| 3642 EXPECT_FALSE(resultLayer); | 3690 EXPECT_FALSE(resultLayer); |
| 3643 } | 3691 } |
| 3644 | 3692 |
| 3645 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSinglePosit
ionedLayer) | 3693 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSinglePosit
ionedLayer) |
| 3646 { | 3694 { |
| 3647 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 3695 FakeImplProxy proxy; |
| 3696 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3697 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 12345); |
| 3648 | 3698 |
| 3649 gfx::Transform identityMatrix; | 3699 gfx::Transform identityMatrix; |
| 3650 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); | 3700 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); |
| 3651 gfx::PointF anchor(0, 0); | 3701 gfx::PointF anchor(0, 0); |
| 3652 gfx::PointF position(50, 50); // this layer is positioned, and hit testing s
hould correctly know where the layer is located. | 3702 gfx::PointF position(50, 50); // this layer is positioned, and hit testing s
hould correctly know where the layer is located. |
| 3653 gfx::Size bounds(100, 100); | 3703 gfx::Size bounds(100, 100); |
| 3654 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 3704 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
| 3655 root->setDrawsContent(true); | 3705 root->setDrawsContent(true); |
| 3656 root->setTouchEventHandlerRegion(touchHandlerRegion); | 3706 root->setTouchEventHandlerRegion(touchHandlerRegion); |
| 3657 | 3707 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3695 // A layer's visibleContentRect is actually in the layer's content space. Th
e | 3745 // A layer's visibleContentRect is actually in the layer's content space. Th
e |
| 3696 // screenSpaceTransform converts from the layer's origin space to screen spa
ce. This | 3746 // screenSpaceTransform converts from the layer's origin space to screen spa
ce. This |
| 3697 // test makes sure that hit testing works correctly accounts for the content
s scale. | 3747 // test makes sure that hit testing works correctly accounts for the content
s scale. |
| 3698 // A contentsScale that is not 1 effectively forces a non-identity transform
between | 3748 // A contentsScale that is not 1 effectively forces a non-identity transform
between |
| 3699 // layer's content space and layer's origin space. The hit testing code must
take this into account. | 3749 // layer's content space and layer's origin space. The hit testing code must
take this into account. |
| 3700 // | 3750 // |
| 3701 // To test this, the layer is positioned at (25, 25), and is size (50, 50).
If | 3751 // To test this, the layer is positioned at (25, 25), and is size (50, 50).
If |
| 3702 // contentsScale is ignored, then hit checking will mis-interpret the visibl
eContentRect | 3752 // contentsScale is ignored, then hit checking will mis-interpret the visibl
eContentRect |
| 3703 // as being larger than the actual bounds of the layer. | 3753 // as being larger than the actual bounds of the layer. |
| 3704 // | 3754 // |
| 3705 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3755 FakeImplProxy proxy; |
| 3756 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3757 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 1); |
| 3706 | 3758 |
| 3707 gfx::Transform identityMatrix; | 3759 gfx::Transform identityMatrix; |
| 3708 gfx::PointF anchor(0, 0); | 3760 gfx::PointF anchor(0, 0); |
| 3709 | 3761 |
| 3710 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); | 3762 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); |
| 3711 | 3763 |
| 3712 { | 3764 { |
| 3713 Region touchHandlerRegion(gfx::Rect(10, 10, 30, 30)); | 3765 Region touchHandlerRegion(gfx::Rect(10, 10, 30, 30)); |
| 3714 gfx::PointF position(25, 25); | 3766 gfx::PointF position(25, 25); |
| 3715 gfx::Size bounds(50, 50); | 3767 gfx::Size bounds(50, 50); |
| 3716 scoped_ptr<LayerImpl> testLayer = LayerImpl::create(12345); | 3768 scoped_ptr<LayerImpl> testLayer = LayerImpl::create(&hostImpl, 12345); |
| 3717 setLayerPropertiesForTesting(testLayer.get(), identityMatrix, identityMa
trix, anchor, position, bounds, false); | 3769 setLayerPropertiesForTesting(testLayer.get(), identityMatrix, identityMa
trix, anchor, position, bounds, false); |
| 3718 | 3770 |
| 3719 // override contentBounds and contentsScale | 3771 // override contentBounds and contentsScale |
| 3720 testLayer->setContentBounds(gfx::Size(100, 100)); | 3772 testLayer->setContentBounds(gfx::Size(100, 100)); |
| 3721 testLayer->setContentsScale(2, 2); | 3773 testLayer->setContentsScale(2, 2); |
| 3722 | 3774 |
| 3723 testLayer->setDrawsContent(true); | 3775 testLayer->setDrawsContent(true); |
| 3724 testLayer->setTouchEventHandlerRegion(touchHandlerRegion); | 3776 testLayer->setTouchEventHandlerRegion(touchHandlerRegion); |
| 3725 root->addChild(testLayer.Pass()); | 3777 root->addChild(testLayer.Pass()); |
| 3726 } | 3778 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3767 testPoint = gfx::Point(64, 64); | 3819 testPoint = gfx::Point(64, 64); |
| 3768 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); | 3820 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe
gion(testPoint, renderSurfaceLayerList); |
| 3769 ASSERT_TRUE(resultLayer); | 3821 ASSERT_TRUE(resultLayer); |
| 3770 EXPECT_EQ(12345, resultLayer->id()); | 3822 EXPECT_EQ(12345, resultLayer->id()); |
| 3771 } | 3823 } |
| 3772 | 3824 |
| 3773 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer
WithDeviceScale) | 3825 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer
WithDeviceScale) |
| 3774 { | 3826 { |
| 3775 // The layer's deviceScalefactor and pageScaleFactor should scale the conten
tRect and we should | 3827 // The layer's deviceScalefactor and pageScaleFactor should scale the conten
tRect and we should |
| 3776 // be able to hit the touch handler region by scaling the points accordingly
. | 3828 // be able to hit the touch handler region by scaling the points accordingly
. |
| 3777 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3829 FakeImplProxy proxy; |
| 3830 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3831 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 1); |
| 3778 | 3832 |
| 3779 gfx::Transform identityMatrix; | 3833 gfx::Transform identityMatrix; |
| 3780 gfx::PointF anchor(0, 0); | 3834 gfx::PointF anchor(0, 0); |
| 3781 // Set the bounds of the root layer big enough to fit the child when scaled. | 3835 // Set the bounds of the root layer big enough to fit the child when scaled. |
| 3782 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); | 3836 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); |
| 3783 | 3837 |
| 3784 { | 3838 { |
| 3785 Region touchHandlerRegion(gfx::Rect(10, 10, 30, 30)); | 3839 Region touchHandlerRegion(gfx::Rect(10, 10, 30, 30)); |
| 3786 gfx::PointF position(25, 25); | 3840 gfx::PointF position(25, 25); |
| 3787 gfx::Size bounds(50, 50); | 3841 gfx::Size bounds(50, 50); |
| 3788 scoped_ptr<LayerImpl> testLayer = LayerImpl::create(12345); | 3842 scoped_ptr<LayerImpl> testLayer = LayerImpl::create(&hostImpl, 12345); |
| 3789 setLayerPropertiesForTesting(testLayer.get(), identityMatrix, identityMa
trix, anchor, position, bounds, false); | 3843 setLayerPropertiesForTesting(testLayer.get(), identityMatrix, identityMa
trix, anchor, position, bounds, false); |
| 3790 | 3844 |
| 3791 testLayer->setDrawsContent(true); | 3845 testLayer->setDrawsContent(true); |
| 3792 testLayer->setTouchEventHandlerRegion(touchHandlerRegion); | 3846 testLayer->setTouchEventHandlerRegion(touchHandlerRegion); |
| 3793 root->addChild(testLayer.Pass()); | 3847 root->addChild(testLayer.Pass()); |
| 3794 } | 3848 } |
| 3795 | 3849 |
| 3796 std::vector<LayerImpl*> renderSurfaceLayerList; | 3850 std::vector<LayerImpl*> renderSurfaceLayerList; |
| 3797 int dummyMaxTextureSize = 512; | 3851 int dummyMaxTextureSize = 512; |
| 3798 float deviceScaleFactor = 3.0f; | 3852 float deviceScaleFactor = 3.0f; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3853 EXPECT_EQ(12345, resultLayer->id()); | 3907 EXPECT_EQ(12345, resultLayer->id()); |
| 3854 } | 3908 } |
| 3855 | 3909 |
| 3856 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSimpleClipp
edLayer) | 3910 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSimpleClipp
edLayer) |
| 3857 { | 3911 { |
| 3858 // Test that hit-checking will only work for the visible portion of a layer,
and not | 3912 // Test that hit-checking will only work for the visible portion of a layer,
and not |
| 3859 // the entire layer bounds. Here we just test the simple axis-aligned case. | 3913 // the entire layer bounds. Here we just test the simple axis-aligned case. |
| 3860 gfx::Transform identityMatrix; | 3914 gfx::Transform identityMatrix; |
| 3861 gfx::PointF anchor(0, 0); | 3915 gfx::PointF anchor(0, 0); |
| 3862 | 3916 |
| 3863 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3917 FakeImplProxy proxy; |
| 3918 FakeLayerTreeHostImpl hostImpl(&proxy); |
| 3919 scoped_ptr<LayerImpl> root = LayerImpl::create(&hostImpl, 1); |
| 3864 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); | 3920 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, gfx::PointF(0, 0), gfx::Size(100, 100), false); |
| 3865 | 3921 |
| 3866 { | 3922 { |
| 3867 scoped_ptr<LayerImpl> clippingLayer = LayerImpl::create(123); | 3923 scoped_ptr<LayerImpl> clippingLayer = LayerImpl::create(&hostImpl, 123); |
| 3868 gfx::PointF position(25, 25); // this layer is positioned, and hit testi
ng should correctly know where the layer is located. | 3924 gfx::PointF position(25, 25); // this layer is positioned, and hit testi
ng should correctly know where the layer is located. |
| 3869 gfx::Size bounds(50, 50); | 3925 gfx::Size bounds(50, 50); |
| 3870 setLayerPropertiesForTesting(clippingLayer.get(), identityMatrix, identi
tyMatrix, anchor, position, bounds, false); | 3926 setLayerPropertiesForTesting(clippingLayer.get(), identityMatrix, identi
tyMatrix, anchor, position, bounds, false); |
| 3871 clippingLayer->setMasksToBounds(true); | 3927 clippingLayer->setMasksToBounds(true); |
| 3872 | 3928 |
| 3873 scoped_ptr<LayerImpl> child = LayerImpl::create(456); | 3929 scoped_ptr<LayerImpl> child = LayerImpl::create(&hostImpl, 456); |
| 3874 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); | 3930 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); |
| 3875 position = gfx::PointF(-50, -50); | 3931 position = gfx::PointF(-50, -50); |
| 3876 bounds = gfx::Size(300, 300); | 3932 bounds = gfx::Size(300, 300); |
| 3877 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix
, anchor, position, bounds, false); | 3933 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix
, anchor, position, bounds, false); |
| 3878 child->setDrawsContent(true); | 3934 child->setDrawsContent(true); |
| 3879 child->setTouchEventHandlerRegion(touchHandlerRegion); | 3935 child->setTouchEventHandlerRegion(touchHandlerRegion); |
| 3880 clippingLayer->addChild(child.Pass()); | 3936 clippingLayer->addChild(child.Pass()); |
| 3881 root->addChild(clippingLayer.Pass()); | 3937 root->addChild(clippingLayer.Pass()); |
| 3882 } | 3938 } |
| 3883 | 3939 |
| (...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4633 child->addChild(grandChild); | 4689 child->addChild(grandChild); |
| 4634 child->setOpacity(0.5f); | 4690 child->setOpacity(0.5f); |
| 4635 | 4691 |
| 4636 executeCalculateDrawProperties(root.get()); | 4692 executeCalculateDrawProperties(root.get()); |
| 4637 | 4693 |
| 4638 EXPECT_FALSE(child->renderSurface()); | 4694 EXPECT_FALSE(child->renderSurface()); |
| 4639 } | 4695 } |
| 4640 | 4696 |
| 4641 } // namespace | 4697 } // namespace |
| 4642 } // namespace cc | 4698 } // namespace cc |
| OLD | NEW |