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 "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "cc/layer_tree_host_common.h" | 7 #include "cc/layer_tree_host_common.h" |
8 | 8 |
9 #include "cc/content_layer.h" | 9 #include "cc/content_layer.h" |
10 #include "cc/content_layer_client.h" | 10 #include "cc/content_layer_client.h" |
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(),
1, dummyMaxTextureSize, renderSurfaceLayerList); | 727 LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(),
1, dummyMaxTextureSize, renderSurfaceLayerList); |
728 EXPECT_TRUE(parent->renderSurface()); | 728 EXPECT_TRUE(parent->renderSurface()); |
729 EXPECT_FALSE(renderSurface1->renderSurface()); | 729 EXPECT_FALSE(renderSurface1->renderSurface()); |
730 EXPECT_EQ(1U, renderSurfaceLayerList.size()); | 730 EXPECT_EQ(1U, renderSurfaceLayerList.size()); |
731 } | 731 } |
732 | 732 |
733 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
irectContainer) | 733 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
irectContainer) |
734 { | 734 { |
735 // This test checks for correct scroll compensation when the fixed-position
container | 735 // This test checks for correct scroll compensation when the fixed-position
container |
736 // is the direct parent of the fixed-position layer. | 736 // is the direct parent of the fixed-position layer. |
737 | |
738 DebugScopedSetImplThread scopedImplThread; | |
739 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 737 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
740 LayerImpl* child = root->children()[0]; | 738 LayerImpl* child = root->children()[0]; |
741 LayerImpl* grandChild = child->children()[0]; | 739 LayerImpl* grandChild = child->children()[0]; |
742 | 740 |
743 child->setIsContainerForFixedPositionLayers(true); | 741 child->setIsContainerForFixedPositionLayers(true); |
744 grandChild->setFixedToContainerLayer(true); | 742 grandChild->setFixedToContainerLayer(true); |
745 | 743 |
746 // Case 1: scrollDelta of 0, 0 | 744 // Case 1: scrollDelta of 0, 0 |
747 child->setScrollDelta(IntSize(0, 0)); | 745 child->setScrollDelta(IntSize(0, 0)); |
748 executeCalculateDrawTransformsAndVisibility(root.get()); | 746 executeCalculateDrawTransformsAndVisibility(root.get()); |
(...skipping 19 matching lines...) Expand all Loading... |
768 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithT
ransformedDirectContainer) | 766 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithT
ransformedDirectContainer) |
769 { | 767 { |
770 // This test checks for correct scroll compensation when the fixed-position
container | 768 // This test checks for correct scroll compensation when the fixed-position
container |
771 // is the direct parent of the fixed-position layer, but that container is t
ransformed. | 769 // is the direct parent of the fixed-position layer, but that container is t
ransformed. |
772 // In this case, the fixed position element inherits the container's transfo
rm, | 770 // In this case, the fixed position element inherits the container's transfo
rm, |
773 // but the scrollDelta that has to be undone should not be affected by that
transform. | 771 // but the scrollDelta that has to be undone should not be affected by that
transform. |
774 // | 772 // |
775 // Transforms are in general non-commutative; using something like a non-uni
form scale | 773 // Transforms are in general non-commutative; using something like a non-uni
form scale |
776 // helps to verify that translations and non-uniform scales are applied in t
he correct | 774 // helps to verify that translations and non-uniform scales are applied in t
he correct |
777 // order. | 775 // order. |
778 | |
779 DebugScopedSetImplThread scopedImplThread; | |
780 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 776 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
781 LayerImpl* child = root->children()[0]; | 777 LayerImpl* child = root->children()[0]; |
782 LayerImpl* grandChild = child->children()[0]; | 778 LayerImpl* grandChild = child->children()[0]; |
783 | 779 |
784 // This scale will cause child and grandChild to be effectively 200 x 800 wi
th respect to the renderTarget. | 780 // This scale will cause child and grandChild to be effectively 200 x 800 wi
th respect to the renderTarget. |
785 WebTransformationMatrix nonUniformScale; | 781 WebTransformationMatrix nonUniformScale; |
786 nonUniformScale.scaleNonUniform(2, 8); | 782 nonUniformScale.scaleNonUniform(2, 8); |
787 child->setTransform(nonUniformScale); | 783 child->setTransform(nonUniformScale); |
788 | 784 |
789 child->setIsContainerForFixedPositionLayers(true); | 785 child->setIsContainerForFixedPositionLayers(true); |
(...skipping 21 matching lines...) Expand all Loading... |
811 expectedChildTransform.multiply(nonUniformScale); | 807 expectedChildTransform.multiply(nonUniformScale); |
812 | 808 |
813 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); | 809 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); |
814 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 810 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
815 } | 811 } |
816 | 812 |
817 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
istantContainer) | 813 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
istantContainer) |
818 { | 814 { |
819 // This test checks for correct scroll compensation when the fixed-position
container | 815 // This test checks for correct scroll compensation when the fixed-position
container |
820 // is NOT the direct parent of the fixed-position layer. | 816 // is NOT the direct parent of the fixed-position layer. |
821 DebugScopedSetImplThread scopedImplThread; | |
822 | |
823 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 817 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
824 LayerImpl* child = root->children()[0]; | 818 LayerImpl* child = root->children()[0]; |
825 LayerImpl* grandChild = child->children()[0]; | 819 LayerImpl* grandChild = child->children()[0]; |
826 LayerImpl* greatGrandChild = grandChild->children()[0]; | 820 LayerImpl* greatGrandChild = grandChild->children()[0]; |
827 | 821 |
828 child->setIsContainerForFixedPositionLayers(true); | 822 child->setIsContainerForFixedPositionLayers(true); |
829 grandChild->setPosition(FloatPoint(8, 6)); | 823 grandChild->setPosition(FloatPoint(8, 6)); |
830 greatGrandChild->setFixedToContainerLayer(true); | 824 greatGrandChild->setFixedToContainerLayer(true); |
831 | 825 |
832 // Case 1: scrollDelta of 0, 0 | 826 // Case 1: scrollDelta of 0, 0 |
(...skipping 22 matching lines...) Expand all Loading... |
855 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); | 849 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); |
856 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 850 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
857 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); | 851 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); |
858 } | 852 } |
859 | 853 |
860 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
istantContainerAndTransforms) | 854 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD
istantContainerAndTransforms) |
861 { | 855 { |
862 // This test checks for correct scroll compensation when the fixed-position
container | 856 // This test checks for correct scroll compensation when the fixed-position
container |
863 // is NOT the direct parent of the fixed-position layer, and the hierarchy h
as various | 857 // is NOT the direct parent of the fixed-position layer, and the hierarchy h
as various |
864 // transforms that have to be processed in the correct order. | 858 // transforms that have to be processed in the correct order. |
865 DebugScopedSetImplThread scopedImplThread; | |
866 | |
867 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 859 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
868 LayerImpl* child = root->children()[0]; | 860 LayerImpl* child = root->children()[0]; |
869 LayerImpl* grandChild = child->children()[0]; | 861 LayerImpl* grandChild = child->children()[0]; |
870 LayerImpl* greatGrandChild = grandChild->children()[0]; | 862 LayerImpl* greatGrandChild = grandChild->children()[0]; |
871 | 863 |
872 WebTransformationMatrix rotationAboutZ; | 864 WebTransformationMatrix rotationAboutZ; |
873 rotationAboutZ.rotate3d(0, 0, 90); | 865 rotationAboutZ.rotate3d(0, 0, 90); |
874 | 866 |
875 child->setIsContainerForFixedPositionLayers(true); | 867 child->setIsContainerForFixedPositionLayers(true); |
876 child->setTransform(rotationAboutZ); | 868 child->setTransform(rotationAboutZ); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
917 } | 909 } |
918 | 910 |
919 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithM
ultipleScrollDeltas) | 911 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithM
ultipleScrollDeltas) |
920 { | 912 { |
921 // This test checks for correct scroll compensation when the fixed-position
container | 913 // This test checks for correct scroll compensation when the fixed-position
container |
922 // has multiple ancestors that have nonzero scrollDelta before reaching the
space where the layer is fixed. | 914 // has multiple ancestors that have nonzero scrollDelta before reaching the
space where the layer is fixed. |
923 // In this test, each scrollDelta occurs in a different space because of eac
h layer's local transform. | 915 // In this test, each scrollDelta occurs in a different space because of eac
h layer's local transform. |
924 // This test checks for correct scroll compensation when the fixed-position
container | 916 // This test checks for correct scroll compensation when the fixed-position
container |
925 // is NOT the direct parent of the fixed-position layer, and the hierarchy h
as various | 917 // is NOT the direct parent of the fixed-position layer, and the hierarchy h
as various |
926 // transforms that have to be processed in the correct order. | 918 // transforms that have to be processed in the correct order. |
927 DebugScopedSetImplThread scopedImplThread; | |
928 | |
929 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 919 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
930 LayerImpl* child = root->children()[0]; | 920 LayerImpl* child = root->children()[0]; |
931 LayerImpl* grandChild = child->children()[0]; | 921 LayerImpl* grandChild = child->children()[0]; |
932 LayerImpl* greatGrandChild = grandChild->children()[0]; | 922 LayerImpl* greatGrandChild = grandChild->children()[0]; |
933 | 923 |
934 WebTransformationMatrix rotationAboutZ; | 924 WebTransformationMatrix rotationAboutZ; |
935 rotationAboutZ.rotate3d(0, 0, 90); | 925 rotationAboutZ.rotate3d(0, 0, 90); |
936 | 926 |
937 child->setIsContainerForFixedPositionLayers(true); | 927 child->setIsContainerForFixedPositionLayers(true); |
938 child->setTransform(rotationAboutZ); | 928 child->setTransform(rotationAboutZ); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 969 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
980 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); | 970 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); |
981 } | 971 } |
982 | 972 |
983 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithI
ntermediateSurfaceAndTransforms) | 973 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithI
ntermediateSurfaceAndTransforms) |
984 { | 974 { |
985 // This test checks for correct scroll compensation when the fixed-position
container | 975 // This test checks for correct scroll compensation when the fixed-position
container |
986 // contributes to a different renderSurface than the fixed-position layer. I
n this | 976 // contributes to a different renderSurface than the fixed-position layer. I
n this |
987 // case, the surface drawTransforms also have to be accounted for when check
ing the | 977 // case, the surface drawTransforms also have to be accounted for when check
ing the |
988 // scrollDelta. | 978 // scrollDelta. |
989 DebugScopedSetImplThread scopedImplThread; | |
990 | |
991 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 979 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
992 LayerImpl* child = root->children()[0]; | 980 LayerImpl* child = root->children()[0]; |
993 LayerImpl* grandChild = child->children()[0]; | 981 LayerImpl* grandChild = child->children()[0]; |
994 LayerImpl* greatGrandChild = grandChild->children()[0]; | 982 LayerImpl* greatGrandChild = grandChild->children()[0]; |
995 | 983 |
996 child->setIsContainerForFixedPositionLayers(true); | 984 child->setIsContainerForFixedPositionLayers(true); |
997 grandChild->setPosition(FloatPoint(8, 6)); | 985 grandChild->setPosition(FloatPoint(8, 6)); |
998 grandChild->setForceRenderSurface(true); | 986 grandChild->setForceRenderSurface(true); |
999 greatGrandChild->setFixedToContainerLayer(true); | 987 greatGrandChild->setFixedToContainerLayer(true); |
1000 greatGrandChild->setDrawsContent(true); | 988 greatGrandChild->setDrawsContent(true); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1052 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 1040 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
1053 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); | 1041 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); |
1054 } | 1042 } |
1055 | 1043 |
1056 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithM
ultipleIntermediateSurfaces) | 1044 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithM
ultipleIntermediateSurfaces) |
1057 { | 1045 { |
1058 // This test checks for correct scroll compensation when the fixed-position
container | 1046 // This test checks for correct scroll compensation when the fixed-position
container |
1059 // contributes to a different renderSurface than the fixed-position layer, w
ith | 1047 // contributes to a different renderSurface than the fixed-position layer, w
ith |
1060 // additional renderSurfaces in-between. This checks that the conversion to
ancestor | 1048 // additional renderSurfaces in-between. This checks that the conversion to
ancestor |
1061 // surfaces is accumulated properly in the final matrix transform. | 1049 // surfaces is accumulated properly in the final matrix transform. |
1062 DebugScopedSetImplThread scopedImplThread; | |
1063 | |
1064 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 1050 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
1065 LayerImpl* child = root->children()[0]; | 1051 LayerImpl* child = root->children()[0]; |
1066 LayerImpl* grandChild = child->children()[0]; | 1052 LayerImpl* grandChild = child->children()[0]; |
1067 LayerImpl* greatGrandChild = grandChild->children()[0]; | 1053 LayerImpl* greatGrandChild = grandChild->children()[0]; |
1068 | 1054 |
1069 // Add one more layer to the test tree for this scenario. | 1055 // Add one more layer to the test tree for this scenario. |
1070 { | 1056 { |
1071 WebTransformationMatrix identity; | 1057 WebTransformationMatrix identity; |
1072 scoped_ptr<LayerImpl> fixedPositionChild = LayerImpl::create(5); | 1058 scoped_ptr<LayerImpl> fixedPositionChild = LayerImpl::create(5); |
1073 setLayerPropertiesForTesting(fixedPositionChild.get(), identity, identit
y, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); | 1059 setLayerPropertiesForTesting(fixedPositionChild.get(), identity, identit
y, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1163 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); | 1149 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGreatGrandChildTransform, greatGrand
Child->drawTransform()); |
1164 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedFixedPositionChildTransform, fixedPo
sitionChild->drawTransform()); | 1150 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedFixedPositionChildTransform, fixedPo
sitionChild->drawTransform()); |
1165 } | 1151 } |
1166 | 1152 |
1167 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithC
ontainerLayerThatHasSurface) | 1153 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithC
ontainerLayerThatHasSurface) |
1168 { | 1154 { |
1169 // This test checks for correct scroll compensation when the fixed-position
container | 1155 // This test checks for correct scroll compensation when the fixed-position
container |
1170 // itself has a renderSurface. In this case, the container layer should be t
reated | 1156 // itself has a renderSurface. In this case, the container layer should be t
reated |
1171 // like a layer that contributes to a renderTarget, and that renderTarget | 1157 // like a layer that contributes to a renderTarget, and that renderTarget |
1172 // is completely irrelevant; it should not affect the scroll compensation. | 1158 // is completely irrelevant; it should not affect the scroll compensation. |
1173 DebugScopedSetImplThread scopedImplThread; | |
1174 | |
1175 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 1159 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
1176 LayerImpl* child = root->children()[0]; | 1160 LayerImpl* child = root->children()[0]; |
1177 LayerImpl* grandChild = child->children()[0]; | 1161 LayerImpl* grandChild = child->children()[0]; |
1178 | 1162 |
1179 child->setIsContainerForFixedPositionLayers(true); | 1163 child->setIsContainerForFixedPositionLayers(true); |
1180 child->setForceRenderSurface(true); | 1164 child->setForceRenderSurface(true); |
1181 grandChild->setFixedToContainerLayer(true); | 1165 grandChild->setFixedToContainerLayer(true); |
1182 grandChild->setDrawsContent(true); | 1166 grandChild->setDrawsContent(true); |
1183 | 1167 |
1184 // Case 1: scrollDelta of 0, 0 | 1168 // Case 1: scrollDelta of 0, 0 |
(...skipping 25 matching lines...) Expand all Loading... |
1210 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedSurfaceDrawTransform, child->renderS
urface()->drawTransform()); | 1194 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedSurfaceDrawTransform, child->renderS
urface()->drawTransform()); |
1211 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); | 1195 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); |
1212 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 1196 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
1213 } | 1197 } |
1214 | 1198 |
1215 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerThatI
sAlsoFixedPositionContainer) | 1199 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerThatI
sAlsoFixedPositionContainer) |
1216 { | 1200 { |
1217 // This test checks the scenario where a fixed-position layer also happens t
o be a | 1201 // This test checks the scenario where a fixed-position layer also happens t
o be a |
1218 // container itself for a descendant fixed position layer. In particular, th
e layer | 1202 // container itself for a descendant fixed position layer. In particular, th
e layer |
1219 // should not accidentally be fixed to itself. | 1203 // should not accidentally be fixed to itself. |
1220 DebugScopedSetImplThread scopedImplThread; | |
1221 | |
1222 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 1204 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
1223 LayerImpl* child = root->children()[0]; | 1205 LayerImpl* child = root->children()[0]; |
1224 LayerImpl* grandChild = child->children()[0]; | 1206 LayerImpl* grandChild = child->children()[0]; |
1225 | 1207 |
1226 child->setIsContainerForFixedPositionLayers(true); | 1208 child->setIsContainerForFixedPositionLayers(true); |
1227 grandChild->setFixedToContainerLayer(true); | 1209 grandChild->setFixedToContainerLayer(true); |
1228 | 1210 |
1229 // This should not confuse the grandChild. If correct, the grandChild would
still be considered fixed to its container (i.e. "child"). | 1211 // This should not confuse the grandChild. If correct, the grandChild would
still be considered fixed to its container (i.e. "child"). |
1230 grandChild->setIsContainerForFixedPositionLayers(true); | 1212 grandChild->setIsContainerForFixedPositionLayers(true); |
1231 | 1213 |
(...skipping 15 matching lines...) Expand all Loading... |
1247 expectedChildTransform.translate(-10, -10); | 1229 expectedChildTransform.translate(-10, -10); |
1248 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); | 1230 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildTransform, child->drawTransform
()); |
1249 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); | 1231 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedGrandChildTransform, grandChild->dra
wTransform()); |
1250 } | 1232 } |
1251 | 1233 |
1252 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerThatH
asNoContainer) | 1234 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerThatH
asNoContainer) |
1253 { | 1235 { |
1254 // This test checks scroll compensation when a fixed-position layer does not
find any | 1236 // This test checks scroll compensation when a fixed-position layer does not
find any |
1255 // ancestor that is a "containerForFixedPositionLayers". In this situation,
the layer should | 1237 // ancestor that is a "containerForFixedPositionLayers". In this situation,
the layer should |
1256 // be fixed to the viewport -- not the rootLayer, which may have transforms
of its own. | 1238 // be fixed to the viewport -- not the rootLayer, which may have transforms
of its own. |
1257 DebugScopedSetImplThread scopedImplThread; | |
1258 | |
1259 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); | 1239 scoped_ptr<LayerImpl> root = createTreeForFixedPositionTests(); |
1260 LayerImpl* child = root->children()[0]; | 1240 LayerImpl* child = root->children()[0]; |
1261 LayerImpl* grandChild = child->children()[0]; | 1241 LayerImpl* grandChild = child->children()[0]; |
1262 | 1242 |
1263 WebTransformationMatrix rotationByZ; | 1243 WebTransformationMatrix rotationByZ; |
1264 rotationByZ.rotate3d(0, 0, 90); | 1244 rotationByZ.rotate3d(0, 0, 90); |
1265 | 1245 |
1266 root->setTransform(rotationByZ); | 1246 root->setTransform(rotationByZ); |
1267 grandChild->setFixedToContainerLayer(true); | 1247 grandChild->setFixedToContainerLayer(true); |
1268 | 1248 |
(...skipping 1351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2620 | 2600 |
2621 // Verify frontFacingSurface's layerList. | 2601 // Verify frontFacingSurface's layerList. |
2622 ASSERT_EQ(2u, renderSurfaceLayerList[1]->renderSurface()->layerList().size()
); | 2602 ASSERT_EQ(2u, renderSurfaceLayerList[1]->renderSurface()->layerList().size()
); |
2623 EXPECT_EQ(frontFacingSurface->id(), renderSurfaceLayerList[1]->renderSurface
()->layerList()[0]->id()); | 2603 EXPECT_EQ(frontFacingSurface->id(), renderSurfaceLayerList[1]->renderSurface
()->layerList()[0]->id()); |
2624 EXPECT_EQ(child1->id(), renderSurfaceLayerList[1]->renderSurface()->layerLis
t()[1]->id()); | 2604 EXPECT_EQ(child1->id(), renderSurfaceLayerList[1]->renderSurface()->layerLis
t()[1]->id()); |
2625 } | 2605 } |
2626 | 2606 |
2627 TEST(LayerTreeHostCommonTest, verifyHitTestingForEmptyLayerList) | 2607 TEST(LayerTreeHostCommonTest, verifyHitTestingForEmptyLayerList) |
2628 { | 2608 { |
2629 // Hit testing on an empty renderSurfaceLayerList should return a null point
er. | 2609 // Hit testing on an empty renderSurfaceLayerList should return a null point
er. |
2630 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
2631 | |
2632 std::vector<LayerImpl*> renderSurfaceLayerList; | 2610 std::vector<LayerImpl*> renderSurfaceLayerList; |
2633 | 2611 |
2634 IntPoint testPoint(0, 0); | 2612 IntPoint testPoint(0, 0); |
2635 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test
Point, renderSurfaceLayerList); | 2613 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test
Point, renderSurfaceLayerList); |
2636 EXPECT_FALSE(resultLayer); | 2614 EXPECT_FALSE(resultLayer); |
2637 | 2615 |
2638 testPoint = IntPoint(10, 20); | 2616 testPoint = IntPoint(10, 20); |
2639 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2617 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
2640 EXPECT_FALSE(resultLayer); | 2618 EXPECT_FALSE(resultLayer); |
2641 } | 2619 } |
2642 | 2620 |
2643 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayer) | 2621 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayer) |
2644 { | 2622 { |
2645 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
2646 | |
2647 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2623 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); |
2648 | 2624 |
2649 WebTransformationMatrix identityMatrix; | 2625 WebTransformationMatrix identityMatrix; |
2650 FloatPoint anchor(0, 0); | 2626 FloatPoint anchor(0, 0); |
2651 FloatPoint position(0, 0); | 2627 FloatPoint position(0, 0); |
2652 IntSize bounds(100, 100); | 2628 IntSize bounds(100, 100); |
2653 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 2629 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
2654 root->setDrawsContent(true); | 2630 root->setDrawsContent(true); |
2655 | 2631 |
2656 std::vector<LayerImpl*> renderSurfaceLayerList; | 2632 std::vector<LayerImpl*> renderSurfaceLayerList; |
(...skipping 20 matching lines...) Expand all Loading... |
2677 EXPECT_EQ(12345, resultLayer->id()); | 2653 EXPECT_EQ(12345, resultLayer->id()); |
2678 | 2654 |
2679 testPoint = IntPoint(99, 99); | 2655 testPoint = IntPoint(99, 99); |
2680 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2656 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
2681 ASSERT_TRUE(resultLayer); | 2657 ASSERT_TRUE(resultLayer); |
2682 EXPECT_EQ(12345, resultLayer->id()); | 2658 EXPECT_EQ(12345, resultLayer->id()); |
2683 } | 2659 } |
2684 | 2660 |
2685 TEST(LayerTreeHostCommonTest, verifyHitTestingForUninvertibleTransform) | 2661 TEST(LayerTreeHostCommonTest, verifyHitTestingForUninvertibleTransform) |
2686 { | 2662 { |
2687 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
2688 | |
2689 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2663 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); |
2690 | 2664 |
2691 WebTransformationMatrix uninvertibleTransform; | 2665 WebTransformationMatrix uninvertibleTransform; |
2692 uninvertibleTransform.setM11(0); | 2666 uninvertibleTransform.setM11(0); |
2693 uninvertibleTransform.setM22(0); | 2667 uninvertibleTransform.setM22(0); |
2694 uninvertibleTransform.setM33(0); | 2668 uninvertibleTransform.setM33(0); |
2695 uninvertibleTransform.setM44(0); | 2669 uninvertibleTransform.setM44(0); |
2696 ASSERT_FALSE(uninvertibleTransform.isInvertible()); | 2670 ASSERT_FALSE(uninvertibleTransform.isInvertible()); |
2697 | 2671 |
2698 WebTransformationMatrix identityMatrix; | 2672 WebTransformationMatrix identityMatrix; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2738 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2712 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
2739 EXPECT_FALSE(resultLayer); | 2713 EXPECT_FALSE(resultLayer); |
2740 | 2714 |
2741 testPoint = IntPoint(-1, -1); | 2715 testPoint = IntPoint(-1, -1); |
2742 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2716 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
2743 EXPECT_FALSE(resultLayer); | 2717 EXPECT_FALSE(resultLayer); |
2744 } | 2718 } |
2745 | 2719 |
2746 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePositionedLayer) | 2720 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePositionedLayer) |
2747 { | 2721 { |
2748 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
2749 | |
2750 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2722 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); |
2751 | 2723 |
2752 WebTransformationMatrix identityMatrix; | 2724 WebTransformationMatrix identityMatrix; |
2753 FloatPoint anchor(0, 0); | 2725 FloatPoint anchor(0, 0); |
2754 FloatPoint position(50, 50); // this layer is positioned, and hit testing sh
ould correctly know where the layer is located. | 2726 FloatPoint position(50, 50); // this layer is positioned, and hit testing sh
ould correctly know where the layer is located. |
2755 IntSize bounds(100, 100); | 2727 IntSize bounds(100, 100); |
2756 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 2728 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
2757 root->setDrawsContent(true); | 2729 root->setDrawsContent(true); |
2758 | 2730 |
2759 std::vector<LayerImpl*> renderSurfaceLayerList; | 2731 std::vector<LayerImpl*> renderSurfaceLayerList; |
(...skipping 21 matching lines...) Expand all Loading... |
2781 EXPECT_EQ(12345, resultLayer->id()); | 2753 EXPECT_EQ(12345, resultLayer->id()); |
2782 | 2754 |
2783 testPoint = IntPoint(99, 99); | 2755 testPoint = IntPoint(99, 99); |
2784 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2756 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
2785 ASSERT_TRUE(resultLayer); | 2757 ASSERT_TRUE(resultLayer); |
2786 EXPECT_EQ(12345, resultLayer->id()); | 2758 EXPECT_EQ(12345, resultLayer->id()); |
2787 } | 2759 } |
2788 | 2760 |
2789 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleRotatedLayer) | 2761 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleRotatedLayer) |
2790 { | 2762 { |
2791 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
2792 | |
2793 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2763 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); |
2794 | 2764 |
2795 WebTransformationMatrix identityMatrix; | 2765 WebTransformationMatrix identityMatrix; |
2796 WebTransformationMatrix rotation45DegreesAboutCenter; | 2766 WebTransformationMatrix rotation45DegreesAboutCenter; |
2797 rotation45DegreesAboutCenter.translate(50, 50); | 2767 rotation45DegreesAboutCenter.translate(50, 50); |
2798 rotation45DegreesAboutCenter.rotate3d(0, 0, 45); | 2768 rotation45DegreesAboutCenter.rotate3d(0, 0, 45); |
2799 rotation45DegreesAboutCenter.translate(-50, -50); | 2769 rotation45DegreesAboutCenter.translate(-50, -50); |
2800 FloatPoint anchor(0, 0); | 2770 FloatPoint anchor(0, 0); |
2801 FloatPoint position(0, 0); | 2771 FloatPoint position(0, 0); |
2802 IntSize bounds(100, 100); | 2772 IntSize bounds(100, 100); |
(...skipping 29 matching lines...) Expand all Loading... |
2832 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2802 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
2833 ASSERT_FALSE(resultLayer); | 2803 ASSERT_FALSE(resultLayer); |
2834 | 2804 |
2835 testPoint = IntPoint(-1, 50); | 2805 testPoint = IntPoint(-1, 50); |
2836 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2806 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
2837 ASSERT_FALSE(resultLayer); | 2807 ASSERT_FALSE(resultLayer); |
2838 } | 2808 } |
2839 | 2809 |
2840 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePerspectiveLayer) | 2810 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePerspectiveLayer) |
2841 { | 2811 { |
2842 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
2843 | |
2844 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); | 2812 scoped_ptr<LayerImpl> root = LayerImpl::create(12345); |
2845 | 2813 |
2846 WebTransformationMatrix identityMatrix; | 2814 WebTransformationMatrix identityMatrix; |
2847 | 2815 |
2848 // perspectiveProjectionAboutCenter * translationByZ is designed so that the
100 x 100 layer becomes 50 x 50, and remains centered at (50, 50). | 2816 // perspectiveProjectionAboutCenter * translationByZ is designed so that the
100 x 100 layer becomes 50 x 50, and remains centered at (50, 50). |
2849 WebTransformationMatrix perspectiveProjectionAboutCenter; | 2817 WebTransformationMatrix perspectiveProjectionAboutCenter; |
2850 perspectiveProjectionAboutCenter.translate(50, 50); | 2818 perspectiveProjectionAboutCenter.translate(50, 50); |
2851 perspectiveProjectionAboutCenter.applyPerspective(1); | 2819 perspectiveProjectionAboutCenter.applyPerspective(1); |
2852 perspectiveProjectionAboutCenter.translate(-50, -50); | 2820 perspectiveProjectionAboutCenter.translate(-50, -50); |
2853 WebTransformationMatrix translationByZ; | 2821 WebTransformationMatrix translationByZ; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2894 // A layer's visibleContentRect is actually in the layer's content space. Th
e | 2862 // A layer's visibleContentRect is actually in the layer's content space. Th
e |
2895 // screenSpaceTransform converts from the layer's origin space to screen spa
ce. This | 2863 // screenSpaceTransform converts from the layer's origin space to screen spa
ce. This |
2896 // test makes sure that hit testing works correctly accounts for the content
s scale. | 2864 // test makes sure that hit testing works correctly accounts for the content
s scale. |
2897 // A contentsScale that is not 1 effectively forces a non-identity transform
between | 2865 // A contentsScale that is not 1 effectively forces a non-identity transform
between |
2898 // layer's content space and layer's origin space. The hit testing code must
take this into account. | 2866 // layer's content space and layer's origin space. The hit testing code must
take this into account. |
2899 // | 2867 // |
2900 // To test this, the layer is positioned at (25, 25), and is size (50, 50).
If | 2868 // To test this, the layer is positioned at (25, 25), and is size (50, 50).
If |
2901 // contentsScale is ignored, then hit testing will mis-interpret the visible
ContentRect | 2869 // contentsScale is ignored, then hit testing will mis-interpret the visible
ContentRect |
2902 // as being larger than the actual bounds of the layer. | 2870 // as being larger than the actual bounds of the layer. |
2903 // | 2871 // |
2904 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
2905 | |
2906 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 2872 scoped_ptr<LayerImpl> root = LayerImpl::create(1); |
2907 | 2873 |
2908 WebTransformationMatrix identityMatrix; | 2874 WebTransformationMatrix identityMatrix; |
2909 FloatPoint anchor(0, 0); | 2875 FloatPoint anchor(0, 0); |
2910 | 2876 |
2911 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, FloatPoint(0, 0), IntSize(100, 100), false); | 2877 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, FloatPoint(0, 0), IntSize(100, 100), false); |
2912 | 2878 |
2913 { | 2879 { |
2914 FloatPoint position(25, 25); | 2880 FloatPoint position(25, 25); |
2915 IntSize bounds(50, 50); | 2881 IntSize bounds(50, 50); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2956 testPoint = IntPoint(74, 74); | 2922 testPoint = IntPoint(74, 74); |
2957 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 2923 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
2958 ASSERT_TRUE(resultLayer); | 2924 ASSERT_TRUE(resultLayer); |
2959 EXPECT_EQ(12345, resultLayer->id()); | 2925 EXPECT_EQ(12345, resultLayer->id()); |
2960 } | 2926 } |
2961 | 2927 |
2962 TEST(LayerTreeHostCommonTest, verifyHitTestingForSimpleClippedLayer) | 2928 TEST(LayerTreeHostCommonTest, verifyHitTestingForSimpleClippedLayer) |
2963 { | 2929 { |
2964 // Test that hit-testing will only work for the visible portion of a layer,
and not | 2930 // Test that hit-testing will only work for the visible portion of a layer,
and not |
2965 // the entire layer bounds. Here we just test the simple axis-aligned case. | 2931 // the entire layer bounds. Here we just test the simple axis-aligned case. |
2966 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
2967 | |
2968 WebTransformationMatrix identityMatrix; | 2932 WebTransformationMatrix identityMatrix; |
2969 FloatPoint anchor(0, 0); | 2933 FloatPoint anchor(0, 0); |
2970 | 2934 |
2971 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 2935 scoped_ptr<LayerImpl> root = LayerImpl::create(1); |
2972 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, FloatPoint(0, 0), IntSize(100, 100), false); | 2936 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, FloatPoint(0, 0), IntSize(100, 100), false); |
2973 | 2937 |
2974 { | 2938 { |
2975 scoped_ptr<LayerImpl> clippingLayer = LayerImpl::create(123); | 2939 scoped_ptr<LayerImpl> clippingLayer = LayerImpl::create(123); |
2976 FloatPoint position(25, 25); // this layer is positioned, and hit testin
g should correctly know where the layer is located. | 2940 FloatPoint position(25, 25); // this layer is positioned, and hit testin
g should correctly know where the layer is located. |
2977 IntSize bounds(50, 50); | 2941 IntSize bounds(50, 50); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3024 // This test checks whether hit testing correctly avoids hit testing with mu
ltiple | 2988 // This test checks whether hit testing correctly avoids hit testing with mu
ltiple |
3025 // ancestors that clip in non axis-aligned ways. To pass this test, the hit
testing | 2989 // ancestors that clip in non axis-aligned ways. To pass this test, the hit
testing |
3026 // algorithm needs to recognize that multiple parent layers may clip the lay
er, and | 2990 // algorithm needs to recognize that multiple parent layers may clip the lay
er, and |
3027 // should not actually hit those clipped areas. | 2991 // should not actually hit those clipped areas. |
3028 // | 2992 // |
3029 // The child and grandChild layers are both initialized to clip the rotatedL
eaf. The | 2993 // The child and grandChild layers are both initialized to clip the rotatedL
eaf. The |
3030 // child layer is rotated about the top-left corner, so that the root + chil
d clips | 2994 // child layer is rotated about the top-left corner, so that the root + chil
d clips |
3031 // combined create a triangle. The rotatedLeaf will only be visible where it
overlaps | 2995 // combined create a triangle. The rotatedLeaf will only be visible where it
overlaps |
3032 // this triangle. | 2996 // this triangle. |
3033 // | 2997 // |
3034 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
3035 | |
3036 scoped_ptr<LayerImpl> root = LayerImpl::create(123); | 2998 scoped_ptr<LayerImpl> root = LayerImpl::create(123); |
3037 | 2999 |
3038 WebTransformationMatrix identityMatrix; | 3000 WebTransformationMatrix identityMatrix; |
3039 FloatPoint anchor(0, 0); | 3001 FloatPoint anchor(0, 0); |
3040 FloatPoint position(0, 0); | 3002 FloatPoint position(0, 0); |
3041 IntSize bounds(100, 100); | 3003 IntSize bounds(100, 100); |
3042 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 3004 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
3043 root->setMasksToBounds(true); | 3005 root->setMasksToBounds(true); |
3044 | 3006 |
3045 { | 3007 { |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3124 testPoint = IntPoint(49, 51); | 3086 testPoint = IntPoint(49, 51); |
3125 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 3087 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
3126 ASSERT_TRUE(resultLayer); | 3088 ASSERT_TRUE(resultLayer); |
3127 EXPECT_EQ(2468, resultLayer->id()); | 3089 EXPECT_EQ(2468, resultLayer->id()); |
3128 } | 3090 } |
3129 | 3091 |
3130 TEST(LayerTreeHostCommonTest, verifyHitTestingForNonClippingIntermediateLayer) | 3092 TEST(LayerTreeHostCommonTest, verifyHitTestingForNonClippingIntermediateLayer) |
3131 { | 3093 { |
3132 // This test checks that hit testing code does not accidentally clip to laye
r | 3094 // This test checks that hit testing code does not accidentally clip to laye
r |
3133 // bounds for a layer that actually does not clip. | 3095 // bounds for a layer that actually does not clip. |
3134 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
3135 | |
3136 WebTransformationMatrix identityMatrix; | 3096 WebTransformationMatrix identityMatrix; |
3137 FloatPoint anchor(0, 0); | 3097 FloatPoint anchor(0, 0); |
3138 | 3098 |
3139 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3099 scoped_ptr<LayerImpl> root = LayerImpl::create(1); |
3140 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, FloatPoint(0, 0), IntSize(100, 100), false); | 3100 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, FloatPoint(0, 0), IntSize(100, 100), false); |
3141 | 3101 |
3142 { | 3102 { |
3143 scoped_ptr<LayerImpl> intermediateLayer = LayerImpl::create(123); | 3103 scoped_ptr<LayerImpl> intermediateLayer = LayerImpl::create(123); |
3144 FloatPoint position(10, 10); // this layer is positioned, and hit testin
g should correctly know where the layer is located. | 3104 FloatPoint position(10, 10); // this layer is positioned, and hit testin
g should correctly know where the layer is located. |
3145 IntSize bounds(50, 50); | 3105 IntSize bounds(50, 50); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3185 | 3145 |
3186 testPoint = IntPoint(89, 89); | 3146 testPoint = IntPoint(89, 89); |
3187 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); | 3147 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend
erSurfaceLayerList); |
3188 ASSERT_TRUE(resultLayer); | 3148 ASSERT_TRUE(resultLayer); |
3189 EXPECT_EQ(456, resultLayer->id()); | 3149 EXPECT_EQ(456, resultLayer->id()); |
3190 } | 3150 } |
3191 | 3151 |
3192 | 3152 |
3193 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayers) | 3153 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayers) |
3194 { | 3154 { |
3195 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
3196 | |
3197 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3155 scoped_ptr<LayerImpl> root = LayerImpl::create(1); |
3198 | 3156 |
3199 WebTransformationMatrix identityMatrix; | 3157 WebTransformationMatrix identityMatrix; |
3200 FloatPoint anchor(0, 0); | 3158 FloatPoint anchor(0, 0); |
3201 FloatPoint position(0, 0); | 3159 FloatPoint position(0, 0); |
3202 IntSize bounds(100, 100); | 3160 IntSize bounds(100, 100); |
3203 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 3161 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
3204 root->setDrawsContent(true); | 3162 root->setDrawsContent(true); |
3205 | 3163 |
3206 { | 3164 { |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3290 ASSERT_TRUE(resultLayer); | 3248 ASSERT_TRUE(resultLayer); |
3291 EXPECT_EQ(4, resultLayer->id()); | 3249 EXPECT_EQ(4, resultLayer->id()); |
3292 } | 3250 } |
3293 | 3251 |
3294 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayerLists) | 3252 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayerLists) |
3295 { | 3253 { |
3296 // | 3254 // |
3297 // The geometry is set up similarly to the previous case, but | 3255 // The geometry is set up similarly to the previous case, but |
3298 // all layers are forced to be renderSurfaces now. | 3256 // all layers are forced to be renderSurfaces now. |
3299 // | 3257 // |
3300 DebugScopedSetImplThread thisScopeIsOnImplThread; | |
3301 | |
3302 scoped_ptr<LayerImpl> root = LayerImpl::create(1); | 3258 scoped_ptr<LayerImpl> root = LayerImpl::create(1); |
3303 | 3259 |
3304 WebTransformationMatrix identityMatrix; | 3260 WebTransformationMatrix identityMatrix; |
3305 FloatPoint anchor(0, 0); | 3261 FloatPoint anchor(0, 0); |
3306 FloatPoint position(0, 0); | 3262 FloatPoint position(0, 0); |
3307 IntSize bounds(100, 100); | 3263 IntSize bounds(100, 100); |
3308 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); | 3264 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc
hor, position, bounds, false); |
3309 root->setDrawsContent(true); | 3265 root->setDrawsContent(true); |
3310 | 3266 |
3311 { | 3267 { |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3576 int nonexistentId = -1; | 3532 int nonexistentId = -1; |
3577 EXPECT_EQ(root, LayerTreeHostCommon::findLayerInSubtree(root.get(), root->id
())); | 3533 EXPECT_EQ(root, LayerTreeHostCommon::findLayerInSubtree(root.get(), root->id
())); |
3578 EXPECT_EQ(child, LayerTreeHostCommon::findLayerInSubtree(root.get(), child->
id())); | 3534 EXPECT_EQ(child, LayerTreeHostCommon::findLayerInSubtree(root.get(), child->
id())); |
3579 EXPECT_EQ(grandChild, LayerTreeHostCommon::findLayerInSubtree(root.get(), gr
andChild->id())); | 3535 EXPECT_EQ(grandChild, LayerTreeHostCommon::findLayerInSubtree(root.get(), gr
andChild->id())); |
3580 EXPECT_EQ(maskLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(), mas
kLayer->id())); | 3536 EXPECT_EQ(maskLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(), mas
kLayer->id())); |
3581 EXPECT_EQ(replicaLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(),
replicaLayer->id())); | 3537 EXPECT_EQ(replicaLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(),
replicaLayer->id())); |
3582 EXPECT_EQ(0, LayerTreeHostCommon::findLayerInSubtree(root.get(), nonexistent
Id)); | 3538 EXPECT_EQ(0, LayerTreeHostCommon::findLayerInSubtree(root.get(), nonexistent
Id)); |
3583 } | 3539 } |
3584 | 3540 |
3585 } // namespace | 3541 } // namespace |
OLD | NEW |