Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(262)

Side by Side Diff: cc/trees/layer_tree_host_common_unittest.cc

Issue 12876006: Revert 189830 "cc: Chromify LayerTreeHostCommon" (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1451/src/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/trees/layer_tree_host_common.cc ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_host_common.h" 5 #include "cc/trees/layer_tree_host_common.h"
6 6
7 #include "cc/animation/layer_animation_controller.h" 7 #include "cc/animation/layer_animation_controller.h"
8 #include "cc/base/math_util.h" 8 #include "cc/base/math_util.h"
9 #include "cc/base/thread.h" 9 #include "cc/base/thread.h"
10 #include "cc/layers/content_layer.h" 10 #include "cc/layers/content_layer.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 void executeCalculateDrawProperties(Layer* rootLayer, float deviceScaleFactor = 1, float pageScaleFactor = 1, bool canUseLCDText = false) 54 void executeCalculateDrawProperties(Layer* rootLayer, float deviceScaleFactor = 1, float pageScaleFactor = 1, bool canUseLCDText = false)
55 { 55 {
56 gfx::Transform identityMatrix; 56 gfx::Transform identityMatrix;
57 std::vector<scoped_refptr<Layer> > dummyRenderSurfaceLayerList; 57 std::vector<scoped_refptr<Layer> > dummyRenderSurfaceLayerList;
58 int dummyMaxTextureSize = 512; 58 int dummyMaxTextureSize = 512;
59 gfx::Size deviceViewportSize = gfx::Size(rootLayer->bounds().width() * devic eScaleFactor, rootLayer->bounds().height() * deviceScaleFactor); 59 gfx::Size deviceViewportSize = gfx::Size(rootLayer->bounds().width() * devic eScaleFactor, rootLayer->bounds().height() * deviceScaleFactor);
60 60
61 // We are probably not testing what is intended if the rootLayer bounds are empty. 61 // We are probably not testing what is intended if the rootLayer bounds are empty.
62 DCHECK(!rootLayer->bounds().IsEmpty()); 62 DCHECK(!rootLayer->bounds().IsEmpty());
63 LayerTreeHostCommon::CalculateDrawProperties(rootLayer, deviceViewportSize, deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, canUseLCDText, &dummyRe nderSurfaceLayerList); 63 LayerTreeHostCommon::calculateDrawProperties(rootLayer, deviceViewportSize, deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, canUseLCDText, dummyRen derSurfaceLayerList);
64 } 64 }
65 65
66 void executeCalculateDrawProperties(LayerImpl* rootLayer, float deviceScaleFacto r = 1, float pageScaleFactor = 1, bool canUseLCDText = false) 66 void executeCalculateDrawProperties(LayerImpl* rootLayer, float deviceScaleFacto r = 1, float pageScaleFactor = 1, bool canUseLCDText = false)
67 { 67 {
68 gfx::Transform identityMatrix; 68 gfx::Transform identityMatrix;
69 std::vector<LayerImpl*> dummyRenderSurfaceLayerList; 69 std::vector<LayerImpl*> dummyRenderSurfaceLayerList;
70 int dummyMaxTextureSize = 512; 70 int dummyMaxTextureSize = 512;
71 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);
72 72
73 // 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.
74 DCHECK(!rootLayer->bounds().IsEmpty()); 74 DCHECK(!rootLayer->bounds().IsEmpty());
75 LayerTreeHostCommon::CalculateDrawProperties(rootLayer, deviceViewportSize, deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, canUseLCDText, &dummyRe nderSurfaceLayerList, false); 75 LayerTreeHostCommon::calculateDrawProperties(rootLayer, deviceViewportSize, deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, canUseLCDText, dummyRen derSurfaceLayerList, false);
76 } 76 }
77 77
78 scoped_ptr<LayerImpl> createTreeForFixedPositionTests(LayerTreeHostImpl* hostImp l) 78 scoped_ptr<LayerImpl> createTreeForFixedPositionTests(LayerTreeHostImpl* hostImp l)
79 { 79 {
80 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl->active_tree(), 1); 80 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl->active_tree(), 1);
81 scoped_ptr<LayerImpl> child = LayerImpl::Create(hostImpl->active_tree(), 2); 81 scoped_ptr<LayerImpl> child = LayerImpl::Create(hostImpl->active_tree(), 2);
82 scoped_ptr<LayerImpl> grandChild = LayerImpl::Create(hostImpl->active_tree() , 3); 82 scoped_ptr<LayerImpl> grandChild = LayerImpl::Create(hostImpl->active_tree() , 3);
83 scoped_ptr<LayerImpl> greatGrandChild = LayerImpl::Create(hostImpl->active_t ree(), 4); 83 scoped_ptr<LayerImpl> greatGrandChild = LayerImpl::Create(hostImpl->active_t ree(), 4);
84 84
85 gfx::Transform IdentityMatrix; 85 gfx::Transform IdentityMatrix;
(...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 setLayerPropertiesForTesting(renderSurface1.get(), identityMatrix, identityM atrix, gfx::PointF(), gfx::PointF(), gfx::Size(10, 10), false); 884 setLayerPropertiesForTesting(renderSurface1.get(), identityMatrix, identityM atrix, gfx::PointF(), gfx::PointF(), gfx::Size(10, 10), false);
885 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gf x::PointF(), gfx::PointF(30, 30), gfx::Size(10, 10), false); 885 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gf x::PointF(), gfx::PointF(30, 30), gfx::Size(10, 10), false);
886 886
887 parent->AddChild(renderSurface1); 887 parent->AddChild(renderSurface1);
888 parent->SetMasksToBounds(true); 888 parent->SetMasksToBounds(true);
889 renderSurface1->AddChild(child); 889 renderSurface1->AddChild(child);
890 renderSurface1->SetForceRenderSurface(true); 890 renderSurface1->SetForceRenderSurface(true);
891 891
892 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 892 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
893 int dummyMaxTextureSize = 512; 893 int dummyMaxTextureSize = 512;
894 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 894 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
895 895
896 // The child layer's content is entirely outside the parent's clip rect, so the intermediate 896 // The child layer's content is entirely outside the parent's clip rect, so the intermediate
897 // render surface should not be listed here, even if it was forced to be cre ated. Render surfaces without children or visible 897 // render surface should not be listed here, even if it was forced to be cre ated. Render surfaces without children or visible
898 // content are unexpected at draw time (e.g. we might try to create a conten t texture of size 0). 898 // content are unexpected at draw time (e.g. we might try to create a conten t texture of size 0).
899 ASSERT_TRUE(parent->render_surface()); 899 ASSERT_TRUE(parent->render_surface());
900 ASSERT_FALSE(renderSurface1->render_surface()); 900 ASSERT_FALSE(renderSurface1->render_surface());
901 EXPECT_EQ(1U, renderSurfaceLayerList.size()); 901 EXPECT_EQ(1U, renderSurfaceLayerList.size());
902 } 902 }
903 903
904 TEST(LayerTreeHostCommonTest, verifyRenderSurfaceListForTransparentChild) 904 TEST(LayerTreeHostCommonTest, verifyRenderSurfaceListForTransparentChild)
905 { 905 {
906 scoped_refptr<Layer> parent = Layer::Create(); 906 scoped_refptr<Layer> parent = Layer::Create();
907 scoped_refptr<Layer> renderSurface1 = Layer::Create(); 907 scoped_refptr<Layer> renderSurface1 = Layer::Create();
908 scoped_refptr<LayerWithForcedDrawsContent> child = make_scoped_refptr(new La yerWithForcedDrawsContent()); 908 scoped_refptr<LayerWithForcedDrawsContent> child = make_scoped_refptr(new La yerWithForcedDrawsContent());
909 909
910 const gfx::Transform identityMatrix; 910 const gfx::Transform identityMatrix;
911 setLayerPropertiesForTesting(renderSurface1.get(), identityMatrix, identityM atrix, gfx::PointF(), gfx::PointF(), gfx::Size(10, 10), false); 911 setLayerPropertiesForTesting(renderSurface1.get(), identityMatrix, identityM atrix, gfx::PointF(), gfx::PointF(), gfx::Size(10, 10), false);
912 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gf x::PointF(), gfx::PointF(), gfx::Size(10, 10), false); 912 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gf x::PointF(), gfx::PointF(), gfx::Size(10, 10), false);
913 913
914 parent->AddChild(renderSurface1); 914 parent->AddChild(renderSurface1);
915 renderSurface1->AddChild(child); 915 renderSurface1->AddChild(child);
916 renderSurface1->SetForceRenderSurface(true); 916 renderSurface1->SetForceRenderSurface(true);
917 renderSurface1->SetOpacity(0); 917 renderSurface1->SetOpacity(0);
918 918
919 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 919 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
920 int dummyMaxTextureSize = 512; 920 int dummyMaxTextureSize = 512;
921 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 921 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
922 922
923 // Since the layer is transparent, renderSurface1->render_surface() should n ot have gotten added anywhere. 923 // Since the layer is transparent, renderSurface1->render_surface() should n ot have gotten added anywhere.
924 // Also, the drawable content rect should not have been extended by the chil dren. 924 // Also, the drawable content rect should not have been extended by the chil dren.
925 ASSERT_TRUE(parent->render_surface()); 925 ASSERT_TRUE(parent->render_surface());
926 EXPECT_EQ(0U, parent->render_surface()->layer_list().size()); 926 EXPECT_EQ(0U, parent->render_surface()->layer_list().size());
927 EXPECT_EQ(1U, renderSurfaceLayerList.size()); 927 EXPECT_EQ(1U, renderSurfaceLayerList.size());
928 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 928 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
929 EXPECT_EQ(gfx::Rect(), parent->drawable_content_rect()); 929 EXPECT_EQ(gfx::Rect(), parent->drawable_content_rect());
930 } 930 }
931 931
(...skipping 11 matching lines...) Expand all
943 943
944 parent->AddChild(renderSurface1); 944 parent->AddChild(renderSurface1);
945 renderSurface1->AddChild(child); 945 renderSurface1->AddChild(child);
946 946
947 // Sanity check before the actual test 947 // Sanity check before the actual test
948 EXPECT_FALSE(parent->render_surface()); 948 EXPECT_FALSE(parent->render_surface());
949 EXPECT_FALSE(renderSurface1->render_surface()); 949 EXPECT_FALSE(renderSurface1->render_surface());
950 950
951 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 951 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
952 int dummyMaxTextureSize = 512; 952 int dummyMaxTextureSize = 512;
953 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 953 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
954 954
955 // The root layer always creates a renderSurface 955 // The root layer always creates a renderSurface
956 EXPECT_TRUE(parent->render_surface()); 956 EXPECT_TRUE(parent->render_surface());
957 EXPECT_TRUE(renderSurface1->render_surface()); 957 EXPECT_TRUE(renderSurface1->render_surface());
958 EXPECT_EQ(2U, renderSurfaceLayerList.size()); 958 EXPECT_EQ(2U, renderSurfaceLayerList.size());
959 959
960 renderSurfaceLayerList.clear(); 960 renderSurfaceLayerList.clear();
961 renderSurface1->SetForceRenderSurface(false); 961 renderSurface1->SetForceRenderSurface(false);
962 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 962 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
963 EXPECT_TRUE(parent->render_surface()); 963 EXPECT_TRUE(parent->render_surface());
964 EXPECT_FALSE(renderSurface1->render_surface()); 964 EXPECT_FALSE(renderSurface1->render_surface());
965 EXPECT_EQ(1U, renderSurfaceLayerList.size()); 965 EXPECT_EQ(1U, renderSurfaceLayerList.size());
966 } 966 }
967 967
968 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD irectContainer) 968 TEST(LayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWithD irectContainer)
969 { 969 {
970 // This test checks for correct scroll compensation when the fixed-position container 970 // This test checks for correct scroll compensation when the fixed-position container
971 // is the direct parent of the fixed-position layer. 971 // is the direct parent of the fixed-position layer.
972 FakeImplProxy proxy; 972 FakeImplProxy proxy;
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
1567 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(20, 20), false); 1567 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(20, 20), false);
1568 1568
1569 child->SetMasksToBounds(true); 1569 child->SetMasksToBounds(true);
1570 child->SetOpacity(0.4f); 1570 child->SetOpacity(0.4f);
1571 child->SetForceRenderSurface(true); 1571 child->SetForceRenderSurface(true);
1572 grandChild->SetOpacity(0.5); 1572 grandChild->SetOpacity(0.5);
1573 greatGrandChild->SetOpacity(0.4f); 1573 greatGrandChild->SetOpacity(0.4f);
1574 1574
1575 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 1575 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
1576 int dummyMaxTextureSize = 512; 1576 int dummyMaxTextureSize = 512;
1577 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 1577 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
1578 1578
1579 ASSERT_EQ(2U, renderSurfaceLayerList.size()); 1579 ASSERT_EQ(2U, renderSurfaceLayerList.size());
1580 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 1580 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
1581 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id()); 1581 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id());
1582 } 1582 }
1583 1583
1584 TEST(LayerTreeHostCommonTest, verifyClipRectCullsSurfaceWithoutVisibleContent) 1584 TEST(LayerTreeHostCommonTest, verifyClipRectCullsSurfaceWithoutVisibleContent)
1585 { 1585 {
1586 // When a renderSurface has a clipRect, it is used to clip the contentRect 1586 // When a renderSurface has a clipRect, it is used to clip the contentRect
1587 // of the surface. When the renderSurface is animating its transforms, then 1587 // of the surface. When the renderSurface is animating its transforms, then
(...skipping 26 matching lines...) Expand all
1614 setLayerPropertiesForTesting(leafNode.get(), identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); 1614 setLayerPropertiesForTesting(leafNode.get(), identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false);
1615 1615
1616 parent->SetMasksToBounds(true); 1616 parent->SetMasksToBounds(true);
1617 child->SetOpacity(0.4f); 1617 child->SetOpacity(0.4f);
1618 child->SetForceRenderSurface(true); 1618 child->SetForceRenderSurface(true);
1619 grandChild->SetOpacity(0.4f); 1619 grandChild->SetOpacity(0.4f);
1620 grandChild->SetForceRenderSurface(true); 1620 grandChild->SetForceRenderSurface(true);
1621 1621
1622 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 1622 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
1623 int dummyMaxTextureSize = 512; 1623 int dummyMaxTextureSize = 512;
1624 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 1624 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
1625 1625
1626 // Without an animation, we should cull child and grandChild from the render SurfaceLayerList. 1626 // Without an animation, we should cull child and grandChild from the render SurfaceLayerList.
1627 ASSERT_EQ(1U, renderSurfaceLayerList.size()); 1627 ASSERT_EQ(1U, renderSurfaceLayerList.size());
1628 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 1628 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
1629 1629
1630 // Now put an animating transform on child. 1630 // Now put an animating transform on child.
1631 AddAnimatedTransformToController(child->layer_animation_controller(), 10, 30 , 0); 1631 AddAnimatedTransformToController(child->layer_animation_controller(), 10, 30 , 0);
1632 1632
1633 parent->ClearRenderSurface(); 1633 parent->ClearRenderSurface();
1634 child->ClearRenderSurface(); 1634 child->ClearRenderSurface();
1635 grandChild->ClearRenderSurface(); 1635 grandChild->ClearRenderSurface();
1636 renderSurfaceLayerList.clear(); 1636 renderSurfaceLayerList.clear();
1637 1637
1638 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 1638 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
1639 1639
1640 // With an animating transform, we should keep child and grandChild in the r enderSurfaceLayerList. 1640 // With an animating transform, we should keep child and grandChild in the r enderSurfaceLayerList.
1641 ASSERT_EQ(3U, renderSurfaceLayerList.size()); 1641 ASSERT_EQ(3U, renderSurfaceLayerList.size());
1642 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 1642 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
1643 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id()); 1643 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id());
1644 EXPECT_EQ(grandChild->id(), renderSurfaceLayerList[2]->id()); 1644 EXPECT_EQ(grandChild->id(), renderSurfaceLayerList[2]->id());
1645 } 1645 }
1646 1646
1647 TEST(LayerTreeHostCommonTest, verifyIsClippedIsSetCorrectly) 1647 TEST(LayerTreeHostCommonTest, verifyIsClippedIsSetCorrectly)
1648 { 1648 {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1680 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 1680 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
1681 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 1681 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
1682 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 1682 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
1683 setLayerPropertiesForTesting(grandChild.get(), identityMatrix, identityMatri x, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 1683 setLayerPropertiesForTesting(grandChild.get(), identityMatrix, identityMatri x, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
1684 setLayerPropertiesForTesting(leafNode1.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 1684 setLayerPropertiesForTesting(leafNode1.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
1685 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 1685 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
1686 1686
1687 // Case 1: nothing is clipped except the root renderSurface. 1687 // Case 1: nothing is clipped except the root renderSurface.
1688 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 1688 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
1689 int dummyMaxTextureSize = 512; 1689 int dummyMaxTextureSize = 512;
1690 LayerTreeHostCommon::CalculateDrawProperties(root.get(), parent->bounds(), 1 , 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 1690 LayerTreeHostCommon::calculateDrawProperties(root.get(), parent->bounds(), 1 , 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
1691 1691
1692 ASSERT_TRUE(root->render_surface()); 1692 ASSERT_TRUE(root->render_surface());
1693 ASSERT_TRUE(child2->render_surface()); 1693 ASSERT_TRUE(child2->render_surface());
1694 1694
1695 EXPECT_FALSE(root->is_clipped()); 1695 EXPECT_FALSE(root->is_clipped());
1696 EXPECT_TRUE(root->render_surface()->is_clipped()); 1696 EXPECT_TRUE(root->render_surface()->is_clipped());
1697 EXPECT_FALSE(parent->is_clipped()); 1697 EXPECT_FALSE(parent->is_clipped());
1698 EXPECT_FALSE(child1->is_clipped()); 1698 EXPECT_FALSE(child1->is_clipped());
1699 EXPECT_FALSE(child2->is_clipped()); 1699 EXPECT_FALSE(child2->is_clipped());
1700 EXPECT_FALSE(child2->render_surface()->is_clipped()); 1700 EXPECT_FALSE(child2->render_surface()->is_clipped());
1701 EXPECT_FALSE(grandChild->is_clipped()); 1701 EXPECT_FALSE(grandChild->is_clipped());
1702 EXPECT_FALSE(leafNode1->is_clipped()); 1702 EXPECT_FALSE(leafNode1->is_clipped());
1703 EXPECT_FALSE(leafNode2->is_clipped()); 1703 EXPECT_FALSE(leafNode2->is_clipped());
1704 1704
1705 // Case 2: parent masksToBounds, so the parent, child1, and child2's 1705 // Case 2: parent masksToBounds, so the parent, child1, and child2's
1706 // surface are clipped. But layers that contribute to child2's surface are 1706 // surface are clipped. But layers that contribute to child2's surface are
1707 // not clipped explicitly because child2's surface already accounts for 1707 // not clipped explicitly because child2's surface already accounts for
1708 // that clip. 1708 // that clip.
1709 renderSurfaceLayerList.clear(); 1709 renderSurfaceLayerList.clear();
1710 parent->SetMasksToBounds(true); 1710 parent->SetMasksToBounds(true);
1711 LayerTreeHostCommon::CalculateDrawProperties(root.get(), parent->bounds(), 1 , 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 1711 LayerTreeHostCommon::calculateDrawProperties(root.get(), parent->bounds(), 1 , 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
1712 1712
1713 ASSERT_TRUE(root->render_surface()); 1713 ASSERT_TRUE(root->render_surface());
1714 ASSERT_TRUE(child2->render_surface()); 1714 ASSERT_TRUE(child2->render_surface());
1715 1715
1716 EXPECT_FALSE(root->is_clipped()); 1716 EXPECT_FALSE(root->is_clipped());
1717 EXPECT_TRUE(root->render_surface()->is_clipped()); 1717 EXPECT_TRUE(root->render_surface()->is_clipped());
1718 EXPECT_TRUE(parent->is_clipped()); 1718 EXPECT_TRUE(parent->is_clipped());
1719 EXPECT_TRUE(child1->is_clipped()); 1719 EXPECT_TRUE(child1->is_clipped());
1720 EXPECT_FALSE(child2->is_clipped()); 1720 EXPECT_FALSE(child2->is_clipped());
1721 EXPECT_TRUE(child2->render_surface()->is_clipped()); 1721 EXPECT_TRUE(child2->render_surface()->is_clipped());
1722 EXPECT_TRUE(grandChild->is_clipped()); 1722 EXPECT_TRUE(grandChild->is_clipped());
1723 EXPECT_TRUE(leafNode1->is_clipped()); 1723 EXPECT_TRUE(leafNode1->is_clipped());
1724 EXPECT_FALSE(leafNode2->is_clipped()); 1724 EXPECT_FALSE(leafNode2->is_clipped());
1725 1725
1726 // Case 3: child2 masksToBounds. The layer and subtree are clipped, and 1726 // Case 3: child2 masksToBounds. The layer and subtree are clipped, and
1727 // child2's renderSurface is not clipped. 1727 // child2's renderSurface is not clipped.
1728 renderSurfaceLayerList.clear(); 1728 renderSurfaceLayerList.clear();
1729 parent->SetMasksToBounds(false); 1729 parent->SetMasksToBounds(false);
1730 child2->SetMasksToBounds(true); 1730 child2->SetMasksToBounds(true);
1731 LayerTreeHostCommon::CalculateDrawProperties(root.get(), parent->bounds(), 1 , 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 1731 LayerTreeHostCommon::calculateDrawProperties(root.get(), parent->bounds(), 1 , 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
1732 1732
1733 ASSERT_TRUE(root->render_surface()); 1733 ASSERT_TRUE(root->render_surface());
1734 ASSERT_TRUE(child2->render_surface()); 1734 ASSERT_TRUE(child2->render_surface());
1735 1735
1736 EXPECT_FALSE(root->is_clipped()); 1736 EXPECT_FALSE(root->is_clipped());
1737 EXPECT_TRUE(root->render_surface()->is_clipped()); 1737 EXPECT_TRUE(root->render_surface()->is_clipped());
1738 EXPECT_FALSE(parent->is_clipped()); 1738 EXPECT_FALSE(parent->is_clipped());
1739 EXPECT_FALSE(child1->is_clipped()); 1739 EXPECT_FALSE(child1->is_clipped());
1740 EXPECT_TRUE(child2->is_clipped()); 1740 EXPECT_TRUE(child2->is_clipped());
1741 EXPECT_FALSE(child2->render_surface()->is_clipped()); 1741 EXPECT_FALSE(child2->render_surface()->is_clipped());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1780 1780
1781 // Force everyone to be a render surface. 1781 // Force everyone to be a render surface.
1782 child->SetOpacity(0.4f); 1782 child->SetOpacity(0.4f);
1783 grandChild1->SetOpacity(0.5); 1783 grandChild1->SetOpacity(0.5);
1784 grandChild2->SetOpacity(0.5); 1784 grandChild2->SetOpacity(0.5);
1785 grandChild3->SetOpacity(0.5); 1785 grandChild3->SetOpacity(0.5);
1786 grandChild4->SetOpacity(0.5); 1786 grandChild4->SetOpacity(0.5);
1787 1787
1788 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 1788 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
1789 int dummyMaxTextureSize = 512; 1789 int dummyMaxTextureSize = 512;
1790 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 1790 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
1791 1791
1792 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(5, 5), gfx::Size(10, 10)), grandChild1-> drawable_content_rect()); 1792 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(5, 5), gfx::Size(10, 10)), grandChild1-> drawable_content_rect());
1793 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(15, 15), gfx::Size(5, 5)), grandChild3-> drawable_content_rect()); 1793 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(15, 15), gfx::Size(5, 5)), grandChild3-> drawable_content_rect());
1794 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(15, 15), gfx::Size(5, 5)), grandChild3-> drawable_content_rect()); 1794 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(15, 15), gfx::Size(5, 5)), grandChild3-> drawable_content_rect());
1795 EXPECT_TRUE(grandChild4->drawable_content_rect().IsEmpty()); 1795 EXPECT_TRUE(grandChild4->drawable_content_rect().IsEmpty());
1796 } 1796 }
1797 1797
1798 TEST(LayerTreeHostCommonTest, verifyClipRectIsPropagatedCorrectlyToSurfaces) 1798 TEST(LayerTreeHostCommonTest, verifyClipRectIsPropagatedCorrectlyToSurfaces)
1799 { 1799 {
1800 // Verify that renderSurfaces (and their layers) get the appropriate clipRec ts when their parent masksToBounds is true. 1800 // Verify that renderSurfaces (and their layers) get the appropriate clipRec ts when their parent masksToBounds is true.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1850 grandChild1->SetForceRenderSurface(true); 1850 grandChild1->SetForceRenderSurface(true);
1851 grandChild2->SetOpacity(0.5); 1851 grandChild2->SetOpacity(0.5);
1852 grandChild2->SetForceRenderSurface(true); 1852 grandChild2->SetForceRenderSurface(true);
1853 grandChild3->SetOpacity(0.5); 1853 grandChild3->SetOpacity(0.5);
1854 grandChild3->SetForceRenderSurface(true); 1854 grandChild3->SetForceRenderSurface(true);
1855 grandChild4->SetOpacity(0.5); 1855 grandChild4->SetOpacity(0.5);
1856 grandChild4->SetForceRenderSurface(true); 1856 grandChild4->SetForceRenderSurface(true);
1857 1857
1858 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 1858 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
1859 int dummyMaxTextureSize = 512; 1859 int dummyMaxTextureSize = 512;
1860 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 1860 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
1861 1861
1862 ASSERT_TRUE(grandChild1->render_surface()); 1862 ASSERT_TRUE(grandChild1->render_surface());
1863 ASSERT_TRUE(grandChild2->render_surface()); 1863 ASSERT_TRUE(grandChild2->render_surface());
1864 ASSERT_TRUE(grandChild3->render_surface()); 1864 ASSERT_TRUE(grandChild3->render_surface());
1865 EXPECT_FALSE(grandChild4->render_surface()); // Because grandChild4 is entir ely clipped, it is expected to not have a renderSurface. 1865 EXPECT_FALSE(grandChild4->render_surface()); // Because grandChild4 is entir ely clipped, it is expected to not have a renderSurface.
1866 1866
1867 // Surfaces are clipped by their parent, but un-affected by the owning layer 's masksToBounds. 1867 // Surfaces are clipped by their parent, but un-affected by the owning layer 's masksToBounds.
1868 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(0, 0), gfx::Size(20, 20)), grandChild1-> render_surface()->clip_rect()); 1868 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(0, 0), gfx::Size(20, 20)), grandChild1-> render_surface()->clip_rect());
1869 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(0, 0), gfx::Size(20, 20)), grandChild2-> render_surface()->clip_rect()); 1869 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(0, 0), gfx::Size(20, 20)), grandChild2-> render_surface()->clip_rect());
1870 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(0, 0), gfx::Size(20, 20)), grandChild3-> render_surface()->clip_rect()); 1870 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(0, 0), gfx::Size(20, 20)), grandChild3-> render_surface()->clip_rect());
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
2014 TEST(LayerTreeHostCommonTest, verifyVisibleRectForIdentityTransform) 2014 TEST(LayerTreeHostCommonTest, verifyVisibleRectForIdentityTransform)
2015 { 2015 {
2016 // Test the calculateVisibleRect() function works correctly for identity tra nsforms. 2016 // Test the calculateVisibleRect() function works correctly for identity tra nsforms.
2017 2017
2018 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 )); 2018 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 ));
2019 gfx::Transform layerToSurfaceTransform; 2019 gfx::Transform layerToSurfaceTransform;
2020 2020
2021 // Case 1: Layer is contained within the surface. 2021 // Case 1: Layer is contained within the surface.
2022 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(10, 10), gfx::Size(30, 30) ); 2022 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(10, 10), gfx::Size(30, 30) );
2023 gfx::Rect expected = gfx::Rect(gfx::Point(10, 10), gfx::Size(30, 30)); 2023 gfx::Rect expected = gfx::Rect(gfx::Point(10, 10), gfx::Size(30, 30));
2024 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform); 2024 gfx::Rect actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform);
2025 EXPECT_RECT_EQ(expected, actual); 2025 EXPECT_RECT_EQ(expected, actual);
2026 2026
2027 // Case 2: Layer is outside the surface rect. 2027 // Case 2: Layer is outside the surface rect.
2028 layerContentRect = gfx::Rect(gfx::Point(120, 120), gfx::Size(30, 30)); 2028 layerContentRect = gfx::Rect(gfx::Point(120, 120), gfx::Size(30, 30));
2029 actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform); 2029 actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform);
2030 EXPECT_TRUE(actual.IsEmpty()); 2030 EXPECT_TRUE(actual.IsEmpty());
2031 2031
2032 // Case 3: Layer is partially overlapping the surface rect. 2032 // Case 3: Layer is partially overlapping the surface rect.
2033 layerContentRect = gfx::Rect(gfx::Point(80, 80), gfx::Size(30, 30)); 2033 layerContentRect = gfx::Rect(gfx::Point(80, 80), gfx::Size(30, 30));
2034 expected = gfx::Rect(gfx::Point(80, 80), gfx::Size(20, 20)); 2034 expected = gfx::Rect(gfx::Point(80, 80), gfx::Size(20, 20));
2035 actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform); 2035 actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform);
2036 EXPECT_RECT_EQ(expected, actual); 2036 EXPECT_RECT_EQ(expected, actual);
2037 } 2037 }
2038 2038
2039 TEST(LayerTreeHostCommonTest, verifyVisibleRectForTranslations) 2039 TEST(LayerTreeHostCommonTest, verifyVisibleRectForTranslations)
2040 { 2040 {
2041 // Test the calculateVisibleRect() function works correctly for scaling tran sforms. 2041 // Test the calculateVisibleRect() function works correctly for scaling tran sforms.
2042 2042
2043 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 )); 2043 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 ));
2044 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30)); 2044 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30));
2045 gfx::Transform layerToSurfaceTransform; 2045 gfx::Transform layerToSurfaceTransform;
2046 2046
2047 // Case 1: Layer is contained within the surface. 2047 // Case 1: Layer is contained within the surface.
2048 layerToSurfaceTransform.MakeIdentity(); 2048 layerToSurfaceTransform.MakeIdentity();
2049 layerToSurfaceTransform.Translate(10, 10); 2049 layerToSurfaceTransform.Translate(10, 10);
2050 gfx::Rect expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30)); 2050 gfx::Rect expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30));
2051 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform); 2051 gfx::Rect actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform);
2052 EXPECT_RECT_EQ(expected, actual); 2052 EXPECT_RECT_EQ(expected, actual);
2053 2053
2054 // Case 2: Layer is outside the surface rect. 2054 // Case 2: Layer is outside the surface rect.
2055 layerToSurfaceTransform.MakeIdentity(); 2055 layerToSurfaceTransform.MakeIdentity();
2056 layerToSurfaceTransform.Translate(120, 120); 2056 layerToSurfaceTransform.Translate(120, 120);
2057 actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform); 2057 actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform);
2058 EXPECT_TRUE(actual.IsEmpty()); 2058 EXPECT_TRUE(actual.IsEmpty());
2059 2059
2060 // Case 3: Layer is partially overlapping the surface rect. 2060 // Case 3: Layer is partially overlapping the surface rect.
2061 layerToSurfaceTransform.MakeIdentity(); 2061 layerToSurfaceTransform.MakeIdentity();
2062 layerToSurfaceTransform.Translate(80, 80); 2062 layerToSurfaceTransform.Translate(80, 80);
2063 expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(20, 20)); 2063 expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(20, 20));
2064 actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform); 2064 actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform);
2065 EXPECT_RECT_EQ(expected, actual); 2065 EXPECT_RECT_EQ(expected, actual);
2066 } 2066 }
2067 2067
2068 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor2DRotations) 2068 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor2DRotations)
2069 { 2069 {
2070 // Test the calculateVisibleRect() function works correctly for rotations ab out z-axis (i.e. 2D rotations). 2070 // Test the calculateVisibleRect() function works correctly for rotations ab out z-axis (i.e. 2D rotations).
2071 // Remember that calculateVisibleRect() should return the visible rect in th e layer's space. 2071 // Remember that calculateVisibleRect() should return the visible rect in th e layer's space.
2072 2072
2073 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 )); 2073 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 ));
2074 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30)); 2074 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30));
2075 gfx::Transform layerToSurfaceTransform; 2075 gfx::Transform layerToSurfaceTransform;
2076 2076
2077 // Case 1: Layer is contained within the surface. 2077 // Case 1: Layer is contained within the surface.
2078 layerToSurfaceTransform.MakeIdentity(); 2078 layerToSurfaceTransform.MakeIdentity();
2079 layerToSurfaceTransform.Translate(50, 50); 2079 layerToSurfaceTransform.Translate(50, 50);
2080 layerToSurfaceTransform.Rotate(45); 2080 layerToSurfaceTransform.Rotate(45);
2081 gfx::Rect expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30)); 2081 gfx::Rect expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30));
2082 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform); 2082 gfx::Rect actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform);
2083 EXPECT_RECT_EQ(expected, actual); 2083 EXPECT_RECT_EQ(expected, actual);
2084 2084
2085 // Case 2: Layer is outside the surface rect. 2085 // Case 2: Layer is outside the surface rect.
2086 layerToSurfaceTransform.MakeIdentity(); 2086 layerToSurfaceTransform.MakeIdentity();
2087 layerToSurfaceTransform.Translate(-50, 0); 2087 layerToSurfaceTransform.Translate(-50, 0);
2088 layerToSurfaceTransform.Rotate(45); 2088 layerToSurfaceTransform.Rotate(45);
2089 actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform); 2089 actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform);
2090 EXPECT_TRUE(actual.IsEmpty()); 2090 EXPECT_TRUE(actual.IsEmpty());
2091 2091
2092 // Case 3: The layer is rotated about its top-left corner. In surface space, the layer 2092 // Case 3: The layer is rotated about its top-left corner. In surface space, the layer
2093 // is oriented diagonally, with the left half outside of the renderS urface. In 2093 // is oriented diagonally, with the left half outside of the renderS urface. In
2094 // this case, the visible rect should still be the entire layer (rem ember the 2094 // this case, the visible rect should still be the entire layer (rem ember the
2095 // visible rect is computed in layer space); both the top-left and 2095 // visible rect is computed in layer space); both the top-left and
2096 // bottom-right corners of the layer are still visible. 2096 // bottom-right corners of the layer are still visible.
2097 layerToSurfaceTransform.MakeIdentity(); 2097 layerToSurfaceTransform.MakeIdentity();
2098 layerToSurfaceTransform.Rotate(45); 2098 layerToSurfaceTransform.Rotate(45);
2099 expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30)); 2099 expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(30, 30));
2100 actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform); 2100 actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform);
2101 EXPECT_RECT_EQ(expected, actual); 2101 EXPECT_RECT_EQ(expected, actual);
2102 2102
2103 // Case 4: The layer is rotated about its top-left corner, and translated up wards. In 2103 // Case 4: The layer is rotated about its top-left corner, and translated up wards. In
2104 // surface space, the layer is oriented diagonally, with only the to p corner 2104 // surface space, the layer is oriented diagonally, with only the to p corner
2105 // of the surface overlapping the layer. In layer space, the render surface 2105 // of the surface overlapping the layer. In layer space, the render surface
2106 // overlaps the right side of the layer. The visible rect should be the 2106 // overlaps the right side of the layer. The visible rect should be the
2107 // layer's right half. 2107 // layer's right half.
2108 layerToSurfaceTransform.MakeIdentity(); 2108 layerToSurfaceTransform.MakeIdentity();
2109 layerToSurfaceTransform.Translate(0, -sqrt(2.0) * 15); 2109 layerToSurfaceTransform.Translate(0, -sqrt(2.0) * 15);
2110 layerToSurfaceTransform.Rotate(45); 2110 layerToSurfaceTransform.Rotate(45);
2111 expected = gfx::Rect(gfx::Point(15, 0), gfx::Size(15, 30)); // right half of layer bounds. 2111 expected = gfx::Rect(gfx::Point(15, 0), gfx::Size(15, 30)); // right half of layer bounds.
2112 actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform); 2112 actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform);
2113 EXPECT_RECT_EQ(expected, actual); 2113 EXPECT_RECT_EQ(expected, actual);
2114 } 2114 }
2115 2115
2116 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor3dOrthographicTransform) 2116 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor3dOrthographicTransform)
2117 { 2117 {
2118 // Test that the calculateVisibleRect() function works correctly for 3d tran sforms. 2118 // Test that the calculateVisibleRect() function works correctly for 3d tran sforms.
2119 2119
2120 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 )); 2120 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 ));
2121 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100) ); 2121 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100) );
2122 gfx::Transform layerToSurfaceTransform; 2122 gfx::Transform layerToSurfaceTransform;
2123 2123
2124 // Case 1: Orthographic projection of a layer rotated about y-axis by 45 deg rees, should be fully contained in the renderSurface. 2124 // Case 1: Orthographic projection of a layer rotated about y-axis by 45 deg rees, should be fully contained in the renderSurface.
2125 layerToSurfaceTransform.MakeIdentity(); 2125 layerToSurfaceTransform.MakeIdentity();
2126 layerToSurfaceTransform.RotateAboutYAxis(45); 2126 layerToSurfaceTransform.RotateAboutYAxis(45);
2127 gfx::Rect expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100)); 2127 gfx::Rect expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100));
2128 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform); 2128 gfx::Rect actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform);
2129 EXPECT_RECT_EQ(expected, actual); 2129 EXPECT_RECT_EQ(expected, actual);
2130 2130
2131 // Case 2: Orthographic projection of a layer rotated about y-axis by 45 deg rees, but 2131 // Case 2: Orthographic projection of a layer rotated about y-axis by 45 deg rees, but
2132 // shifted to the side so only the right-half the layer would be vis ible on 2132 // shifted to the side so only the right-half the layer would be vis ible on
2133 // the surface. 2133 // the surface.
2134 double halfWidthOfRotatedLayer = (100 / sqrt(2.0)) * 0.5; // 100 is the un-r otated layer width; divided by sqrt(2) is the rotated width. 2134 double halfWidthOfRotatedLayer = (100 / sqrt(2.0)) * 0.5; // 100 is the un-r otated layer width; divided by sqrt(2) is the rotated width.
2135 layerToSurfaceTransform.MakeIdentity(); 2135 layerToSurfaceTransform.MakeIdentity();
2136 layerToSurfaceTransform.Translate(-halfWidthOfRotatedLayer, 0); 2136 layerToSurfaceTransform.Translate(-halfWidthOfRotatedLayer, 0);
2137 layerToSurfaceTransform.RotateAboutYAxis(45); // rotates about the left edge of the layer 2137 layerToSurfaceTransform.RotateAboutYAxis(45); // rotates about the left edge of the layer
2138 expected = gfx::Rect(gfx::Point(50, 0), gfx::Size(50, 100)); // right half o f the layer. 2138 expected = gfx::Rect(gfx::Point(50, 0), gfx::Size(50, 100)); // right half o f the layer.
2139 actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform); 2139 actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform);
2140 EXPECT_RECT_EQ(expected, actual); 2140 EXPECT_RECT_EQ(expected, actual);
2141 } 2141 }
2142 2142
2143 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor3dPerspectiveTransform) 2143 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor3dPerspectiveTransform)
2144 { 2144 {
2145 // Test the calculateVisibleRect() function works correctly when the layer h as a 2145 // Test the calculateVisibleRect() function works correctly when the layer h as a
2146 // perspective projection onto the target surface. 2146 // perspective projection onto the target surface.
2147 2147
2148 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 )); 2148 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 ));
2149 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(-50, -50), gfx::Size(200, 200)); 2149 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(-50, -50), gfx::Size(200, 200));
2150 gfx::Transform layerToSurfaceTransform; 2150 gfx::Transform layerToSurfaceTransform;
2151 2151
2152 // Case 1: Even though the layer is twice as large as the surface, due to pe rspective 2152 // Case 1: Even though the layer is twice as large as the surface, due to pe rspective
2153 // foreshortening, the layer will fit fully in the surface when its translated 2153 // foreshortening, the layer will fit fully in the surface when its translated
2154 // more than the perspective amount. 2154 // more than the perspective amount.
2155 layerToSurfaceTransform.MakeIdentity(); 2155 layerToSurfaceTransform.MakeIdentity();
2156 2156
2157 // The following sequence of transforms applies the perspective about the ce nter of the surface. 2157 // The following sequence of transforms applies the perspective about the ce nter of the surface.
2158 layerToSurfaceTransform.Translate(50, 50); 2158 layerToSurfaceTransform.Translate(50, 50);
2159 layerToSurfaceTransform.ApplyPerspectiveDepth(9); 2159 layerToSurfaceTransform.ApplyPerspectiveDepth(9);
2160 layerToSurfaceTransform.Translate(-50, -50); 2160 layerToSurfaceTransform.Translate(-50, -50);
2161 2161
2162 // This translate places the layer in front of the surface's projection plan e. 2162 // This translate places the layer in front of the surface's projection plan e.
2163 layerToSurfaceTransform.Translate3d(0, 0, -27); 2163 layerToSurfaceTransform.Translate3d(0, 0, -27);
2164 2164
2165 gfx::Rect expected = gfx::Rect(gfx::Point(-50, -50), gfx::Size(200, 200)); 2165 gfx::Rect expected = gfx::Rect(gfx::Point(-50, -50), gfx::Size(200, 200));
2166 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform); 2166 gfx::Rect actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform);
2167 EXPECT_RECT_EQ(expected, actual); 2167 EXPECT_RECT_EQ(expected, actual);
2168 2168
2169 // Case 2: same projection as before, except that the layer is also translat ed to the 2169 // Case 2: same projection as before, except that the layer is also translat ed to the
2170 // side, so that only the right half of the layer should be visible. 2170 // side, so that only the right half of the layer should be visible.
2171 // 2171 //
2172 // Explanation of expected result: 2172 // Explanation of expected result:
2173 // The perspective ratio is (z distance between layer and camera origin) / ( z distance between projection plane and camera origin) == ((-27 - 9) / 9) 2173 // The perspective ratio is (z distance between layer and camera origin) / ( z distance between projection plane and camera origin) == ((-27 - 9) / 9)
2174 // Then, by similar triangles, if we want to move a layer by translating -50 units in projected surface units (so that only half of it is 2174 // Then, by similar triangles, if we want to move a layer by translating -50 units in projected surface units (so that only half of it is
2175 // visible), then we would need to translate by (-36 / 9) * -50 == -200 in t he layer's units. 2175 // visible), then we would need to translate by (-36 / 9) * -50 == -200 in t he layer's units.
2176 // 2176 //
2177 layerToSurfaceTransform.Translate3d(-200, 0, 0); 2177 layerToSurfaceTransform.Translate3d(-200, 0, 0);
2178 expected = gfx::Rect(gfx::Point(50, -50), gfx::Size(100, 200)); // The right half of the layer's bounding rect. 2178 expected = gfx::Rect(gfx::Point(50, -50), gfx::Size(100, 200)); // The right half of the layer's bounding rect.
2179 actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform); 2179 actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRect, layerC ontentRect, layerToSurfaceTransform);
2180 EXPECT_RECT_EQ(expected, actual); 2180 EXPECT_RECT_EQ(expected, actual);
2181 } 2181 }
2182 2182
2183 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor3dOrthographicIsNotClippedBehi ndSurface) 2183 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor3dOrthographicIsNotClippedBehi ndSurface)
2184 { 2184 {
2185 // There is currently no explicit concept of an orthographic projection plan e in our 2185 // There is currently no explicit concept of an orthographic projection plan e in our
2186 // code (nor in the CSS spec to my knowledge). Therefore, layers that are te chnically 2186 // code (nor in the CSS spec to my knowledge). Therefore, layers that are te chnically
2187 // behind the surface in an orthographic world should not be clipped when th ey are 2187 // behind the surface in an orthographic world should not be clipped when th ey are
2188 // flattened to the surface. 2188 // flattened to the surface.
2189 2189
2190 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 )); 2190 gfx::Rect targetSurfaceRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100 ));
2191 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100) ); 2191 gfx::Rect layerContentRect = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100) );
2192 gfx::Transform layerToSurfaceTransform; 2192 gfx::Transform layerToSurfaceTransform;
2193 2193
2194 // This sequence of transforms effectively rotates the layer about the y-axi s at the 2194 // This sequence of transforms effectively rotates the layer about the y-axi s at the
2195 // center of the layer. 2195 // center of the layer.
2196 layerToSurfaceTransform.MakeIdentity(); 2196 layerToSurfaceTransform.MakeIdentity();
2197 layerToSurfaceTransform.Translate(50, 0); 2197 layerToSurfaceTransform.Translate(50, 0);
2198 layerToSurfaceTransform.RotateAboutYAxis(45); 2198 layerToSurfaceTransform.RotateAboutYAxis(45);
2199 layerToSurfaceTransform.Translate(-50, 0); 2199 layerToSurfaceTransform.Translate(-50, 0);
2200 2200
2201 gfx::Rect expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100)); 2201 gfx::Rect expected = gfx::Rect(gfx::Point(0, 0), gfx::Size(100, 100));
2202 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform); 2202 gfx::Rect actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform);
2203 EXPECT_RECT_EQ(expected, actual); 2203 EXPECT_RECT_EQ(expected, actual);
2204 } 2204 }
2205 2205
2206 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor3dPerspectiveWhenClippedByW) 2206 TEST(LayerTreeHostCommonTest, verifyVisibleRectFor3dPerspectiveWhenClippedByW)
2207 { 2207 {
2208 // Test the calculateVisibleRect() function works correctly when projecting a surface 2208 // Test the calculateVisibleRect() function works correctly when projecting a surface
2209 // onto a layer, but the layer is partially behind the camera (not just behi nd the 2209 // onto a layer, but the layer is partially behind the camera (not just behi nd the
2210 // projection plane). In this case, the cartesian coordinates may seem to be valid, 2210 // projection plane). In this case, the cartesian coordinates may seem to be valid,
2211 // but actually they are not. The visibleRect needs to be properly clipped b y the 2211 // but actually they are not. The visibleRect needs to be properly clipped b y the
2212 // w = 0 plane in homogeneous coordinates before converting to cartesian coo rdinates. 2212 // w = 0 plane in homogeneous coordinates before converting to cartesian coo rdinates.
(...skipping 12 matching lines...) Expand all
2225 layerToSurfaceTransform.RotateAboutYAxis(45); 2225 layerToSurfaceTransform.RotateAboutYAxis(45);
2226 2226
2227 // Sanity check that this transform does indeed cause w < 0 when applying th e 2227 // Sanity check that this transform does indeed cause w < 0 when applying th e
2228 // transform, otherwise this code is not testing the intended scenario. 2228 // transform, otherwise this code is not testing the intended scenario.
2229 bool clipped = false; 2229 bool clipped = false;
2230 MathUtil::MapQuad(layerToSurfaceTransform, gfx::QuadF(gfx::RectF(layerConten tRect)), &clipped); 2230 MathUtil::MapQuad(layerToSurfaceTransform, gfx::QuadF(gfx::RectF(layerConten tRect)), &clipped);
2231 ASSERT_TRUE(clipped); 2231 ASSERT_TRUE(clipped);
2232 2232
2233 int expectedXPosition = 0; 2233 int expectedXPosition = 0;
2234 int expectedWidth = 10; 2234 int expectedWidth = 10;
2235 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform); 2235 gfx::Rect actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform);
2236 EXPECT_EQ(expectedXPosition, actual.x()); 2236 EXPECT_EQ(expectedXPosition, actual.x());
2237 EXPECT_EQ(expectedWidth, actual.width()); 2237 EXPECT_EQ(expectedWidth, actual.width());
2238 } 2238 }
2239 2239
2240 TEST(LayerTreeHostCommonTest, verifyVisibleRectForPerspectiveUnprojection) 2240 TEST(LayerTreeHostCommonTest, verifyVisibleRectForPerspectiveUnprojection)
2241 { 2241 {
2242 // To determine visibleRect in layer space, there needs to be an un-projecti on from 2242 // To determine visibleRect in layer space, there needs to be an un-projecti on from
2243 // surface space to layer space. When the original transform was a perspecti ve 2243 // surface space to layer space. When the original transform was a perspecti ve
2244 // projection that was clipped, it returns a rect that encloses the clipped bounds. 2244 // projection that was clipped, it returns a rect that encloses the clipped bounds.
2245 // Un-projecting this new rect may require clipping again. 2245 // Un-projecting this new rect may require clipping again.
(...skipping 12 matching lines...) Expand all
2258 // testing the intended scenario. 2258 // testing the intended scenario.
2259 bool clipped = false; 2259 bool clipped = false;
2260 gfx::RectF clippedRect = MathUtil::MapClippedRect(layerToSurfaceTransform, l ayerContentRect); 2260 gfx::RectF clippedRect = MathUtil::MapClippedRect(layerToSurfaceTransform, l ayerContentRect);
2261 MathUtil::ProjectQuad(Inverse(layerToSurfaceTransform), gfx::QuadF(clippedRe ct), &clipped); 2261 MathUtil::ProjectQuad(Inverse(layerToSurfaceTransform), gfx::QuadF(clippedRe ct), &clipped);
2262 ASSERT_TRUE(clipped); 2262 ASSERT_TRUE(clipped);
2263 2263
2264 // Only the corner of the layer is not visible on the surface because of bei ng 2264 // Only the corner of the layer is not visible on the surface because of bei ng
2265 // clipped. But, the net result of rounding visible region to an axis-aligne d rect is 2265 // clipped. But, the net result of rounding visible region to an axis-aligne d rect is
2266 // that the entire layer should still be considered visible. 2266 // that the entire layer should still be considered visible.
2267 gfx::Rect expected = gfx::Rect(gfx::Point(-10, -10), gfx::Size(20, 20)); 2267 gfx::Rect expected = gfx::Rect(gfx::Point(-10, -10), gfx::Size(20, 20));
2268 gfx::Rect actual = LayerTreeHostCommon::CalculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform); 2268 gfx::Rect actual = LayerTreeHostCommon::calculateVisibleRect(targetSurfaceRe ct, layerContentRect, layerToSurfaceTransform);
2269 EXPECT_RECT_EQ(expected, actual); 2269 EXPECT_RECT_EQ(expected, actual);
2270 } 2270 }
2271 2271
2272 TEST(LayerTreeHostCommonTest, verifyDrawableAndVisibleContentRectsForSimpleLayer s) 2272 TEST(LayerTreeHostCommonTest, verifyDrawableAndVisibleContentRectsForSimpleLayer s)
2273 { 2273 {
2274 scoped_refptr<Layer> root = Layer::Create(); 2274 scoped_refptr<Layer> root = Layer::Create();
2275 scoped_refptr<LayerWithForcedDrawsContent> child1 = make_scoped_refptr(new L ayerWithForcedDrawsContent()); 2275 scoped_refptr<LayerWithForcedDrawsContent> child1 = make_scoped_refptr(new L ayerWithForcedDrawsContent());
2276 scoped_refptr<LayerWithForcedDrawsContent> child2 = make_scoped_refptr(new L ayerWithForcedDrawsContent()); 2276 scoped_refptr<LayerWithForcedDrawsContent> child2 = make_scoped_refptr(new L ayerWithForcedDrawsContent());
2277 scoped_refptr<LayerWithForcedDrawsContent> child3 = make_scoped_refptr(new L ayerWithForcedDrawsContent()); 2277 scoped_refptr<LayerWithForcedDrawsContent> child3 = make_scoped_refptr(new L ayerWithForcedDrawsContent());
2278 root->AddChild(child1); 2278 root->AddChild(child1);
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
2686 setLayerPropertiesForTesting(backFacingChild.get(), backfaceMatrix, identity Matrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2686 setLayerPropertiesForTesting(backFacingChild.get(), backfaceMatrix, identity Matrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2687 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2687 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2688 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, identi tyMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2688 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, identi tyMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2689 setLayerPropertiesForTesting(frontFacingChildOfFrontFacingSurface.get(), ide ntityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100 , 100), false); 2689 setLayerPropertiesForTesting(frontFacingChildOfFrontFacingSurface.get(), ide ntityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100 , 100), false);
2690 setLayerPropertiesForTesting(backFacingChildOfFrontFacingSurface.get(), back faceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2690 setLayerPropertiesForTesting(backFacingChildOfFrontFacingSurface.get(), back faceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2691 setLayerPropertiesForTesting(frontFacingChildOfBackFacingSurface.get(), iden tityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2691 setLayerPropertiesForTesting(frontFacingChildOfBackFacingSurface.get(), iden tityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2692 setLayerPropertiesForTesting(backFacingChildOfBackFacingSurface.get(), backf aceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2692 setLayerPropertiesForTesting(backFacingChildOfBackFacingSurface.get(), backf aceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2693 2693
2694 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 2694 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
2695 int dummyMaxTextureSize = 512; 2695 int dummyMaxTextureSize = 512;
2696 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 2696 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
2697 2697
2698 // Verify which renderSurfaces were created. 2698 // Verify which renderSurfaces were created.
2699 EXPECT_FALSE(frontFacingChild->render_surface()); 2699 EXPECT_FALSE(frontFacingChild->render_surface());
2700 EXPECT_FALSE(backFacingChild->render_surface()); 2700 EXPECT_FALSE(backFacingChild->render_surface());
2701 EXPECT_TRUE(frontFacingSurface->render_surface()); 2701 EXPECT_TRUE(frontFacingSurface->render_surface());
2702 EXPECT_TRUE(backFacingSurface->render_surface()); 2702 EXPECT_TRUE(backFacingSurface->render_surface());
2703 EXPECT_FALSE(frontFacingChildOfFrontFacingSurface->render_surface()); 2703 EXPECT_FALSE(frontFacingChildOfFrontFacingSurface->render_surface());
2704 EXPECT_FALSE(backFacingChildOfFrontFacingSurface->render_surface()); 2704 EXPECT_FALSE(backFacingChildOfFrontFacingSurface->render_surface());
2705 EXPECT_FALSE(frontFacingChildOfBackFacingSurface->render_surface()); 2705 EXPECT_FALSE(frontFacingChildOfBackFacingSurface->render_surface());
2706 EXPECT_FALSE(backFacingChildOfBackFacingSurface->render_surface()); 2706 EXPECT_FALSE(backFacingChildOfBackFacingSurface->render_surface());
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2785 setLayerPropertiesForTesting(backFacingChild.get(), backfaceMatrix, identity Matrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2785 setLayerPropertiesForTesting(backFacingChild.get(), backfaceMatrix, identity Matrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2786 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), true); // surface transform style is preserve-3d. 2786 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), true); // surface transform style is preserve-3d.
2787 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, identi tyMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), true); // s urface transform style is preserve-3d. 2787 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, identi tyMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), true); // s urface transform style is preserve-3d.
2788 setLayerPropertiesForTesting(frontFacingChildOfFrontFacingSurface.get(), ide ntityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100 , 100), false); 2788 setLayerPropertiesForTesting(frontFacingChildOfFrontFacingSurface.get(), ide ntityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100 , 100), false);
2789 setLayerPropertiesForTesting(backFacingChildOfFrontFacingSurface.get(), back faceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2789 setLayerPropertiesForTesting(backFacingChildOfFrontFacingSurface.get(), back faceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2790 setLayerPropertiesForTesting(frontFacingChildOfBackFacingSurface.get(), iden tityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2790 setLayerPropertiesForTesting(frontFacingChildOfBackFacingSurface.get(), iden tityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2791 setLayerPropertiesForTesting(backFacingChildOfBackFacingSurface.get(), backf aceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2791 setLayerPropertiesForTesting(backFacingChildOfBackFacingSurface.get(), backf aceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2792 2792
2793 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 2793 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
2794 int dummyMaxTextureSize = 512; 2794 int dummyMaxTextureSize = 512;
2795 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 2795 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
2796 2796
2797 // Verify which renderSurfaces were created. 2797 // Verify which renderSurfaces were created.
2798 EXPECT_FALSE(frontFacingChild->render_surface()); 2798 EXPECT_FALSE(frontFacingChild->render_surface());
2799 EXPECT_FALSE(backFacingChild->render_surface()); 2799 EXPECT_FALSE(backFacingChild->render_surface());
2800 EXPECT_TRUE(frontFacingSurface->render_surface()); 2800 EXPECT_TRUE(frontFacingSurface->render_surface());
2801 EXPECT_FALSE(backFacingSurface->render_surface()); 2801 EXPECT_FALSE(backFacingSurface->render_surface());
2802 EXPECT_FALSE(frontFacingChildOfFrontFacingSurface->render_surface()); 2802 EXPECT_FALSE(frontFacingChildOfFrontFacingSurface->render_surface());
2803 EXPECT_FALSE(backFacingChildOfFrontFacingSurface->render_surface()); 2803 EXPECT_FALSE(backFacingChildOfFrontFacingSurface->render_surface());
2804 EXPECT_FALSE(frontFacingChildOfBackFacingSurface->render_surface()); 2804 EXPECT_FALSE(frontFacingChildOfBackFacingSurface->render_surface());
2805 EXPECT_FALSE(backFacingChildOfBackFacingSurface->render_surface()); 2805 EXPECT_FALSE(backFacingChildOfBackFacingSurface->render_surface());
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
2865 2865
2866 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2866 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2867 setLayerPropertiesForTesting(child.get(), backfaceMatrix, identityMatrix, gf x::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2867 setLayerPropertiesForTesting(child.get(), backfaceMatrix, identityMatrix, gf x::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2868 setLayerPropertiesForTesting(animatingSurface.get(), backfaceMatrix, identit yMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2868 setLayerPropertiesForTesting(animatingSurface.get(), backfaceMatrix, identit yMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2869 setLayerPropertiesForTesting(childOfAnimatingSurface.get(), backfaceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false ); 2869 setLayerPropertiesForTesting(childOfAnimatingSurface.get(), backfaceMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false );
2870 setLayerPropertiesForTesting(animatingChild.get(), backfaceMatrix, identityM atrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2870 setLayerPropertiesForTesting(animatingChild.get(), backfaceMatrix, identityM atrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2871 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2871 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2872 2872
2873 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 2873 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
2874 int dummyMaxTextureSize = 512; 2874 int dummyMaxTextureSize = 512;
2875 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 2875 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
2876 2876
2877 EXPECT_FALSE(child->render_surface()); 2877 EXPECT_FALSE(child->render_surface());
2878 EXPECT_TRUE(animatingSurface->render_surface()); 2878 EXPECT_TRUE(animatingSurface->render_surface());
2879 EXPECT_FALSE(childOfAnimatingSurface->render_surface()); 2879 EXPECT_FALSE(childOfAnimatingSurface->render_surface());
2880 EXPECT_FALSE(animatingChild->render_surface()); 2880 EXPECT_FALSE(animatingChild->render_surface());
2881 EXPECT_FALSE(child2->render_surface()); 2881 EXPECT_FALSE(child2->render_surface());
2882 2882
2883 // Verify that the animatingChild and childOfAnimatingSurface were not culle d, but that child was. 2883 // Verify that the animatingChild and childOfAnimatingSurface were not culle d, but that child was.
2884 ASSERT_EQ(2u, renderSurfaceLayerList.size()); 2884 ASSERT_EQ(2u, renderSurfaceLayerList.size());
2885 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 2885 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2931 backfaceMatrix.Translate(-50, -50); 2931 backfaceMatrix.Translate(-50, -50);
2932 2932
2933 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), true); // parent trans form style is preserve3d. 2933 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), true); // parent trans form style is preserve3d.
2934 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); // surface transform style is flat. 2934 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); // surface transform style is flat.
2935 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, ident ityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); // surface transform style is flat. 2935 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, ident ityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); // surface transform style is flat.
2936 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2936 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2937 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); 2937 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false);
2938 2938
2939 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 2939 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
2940 int dummyMaxTextureSize = 512; 2940 int dummyMaxTextureSize = 512;
2941 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 2941 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
2942 2942
2943 // Verify which renderSurfaces were created. 2943 // Verify which renderSurfaces were created.
2944 EXPECT_TRUE(frontFacingSurface->render_surface()); 2944 EXPECT_TRUE(frontFacingSurface->render_surface());
2945 EXPECT_FALSE(backFacingSurface->render_surface()); // because it should be c ulled 2945 EXPECT_FALSE(backFacingSurface->render_surface()); // because it should be c ulled
2946 EXPECT_FALSE(child1->render_surface()); 2946 EXPECT_FALSE(child1->render_surface());
2947 EXPECT_FALSE(child2->render_surface()); 2947 EXPECT_FALSE(child2->render_surface());
2948 2948
2949 // Verify the renderSurfaceLayerList. The back-facing surface should be cull ed. 2949 // Verify the renderSurfaceLayerList. The back-facing surface should be cull ed.
2950 ASSERT_EQ(2u, renderSurfaceLayerList.size()); 2950 ASSERT_EQ(2u, renderSurfaceLayerList.size());
2951 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 2951 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
2952 EXPECT_EQ(frontFacingSurface->id(), renderSurfaceLayerList[1]->id()); 2952 EXPECT_EQ(frontFacingSurface->id(), renderSurfaceLayerList[1]->id());
2953 2953
2954 // Verify root surface's layerList. 2954 // Verify root surface's layerList.
2955 ASSERT_EQ(1u, renderSurfaceLayerList[0]->render_surface()->layer_list().size ()); 2955 ASSERT_EQ(1u, renderSurfaceLayerList[0]->render_surface()->layer_list().size ());
2956 EXPECT_EQ(frontFacingSurface->id(), renderSurfaceLayerList[0]->render_surfac e()->layer_list()[0]->id()); 2956 EXPECT_EQ(frontFacingSurface->id(), renderSurfaceLayerList[0]->render_surfac e()->layer_list()[0]->id());
2957 2957
2958 // Verify frontFacingSurface's layerList. 2958 // Verify frontFacingSurface's layerList.
2959 ASSERT_EQ(2u, renderSurfaceLayerList[1]->render_surface()->layer_list().size ()); 2959 ASSERT_EQ(2u, renderSurfaceLayerList[1]->render_surface()->layer_list().size ());
2960 EXPECT_EQ(frontFacingSurface->id(), renderSurfaceLayerList[1]->render_surfac e()->layer_list()[0]->id()); 2960 EXPECT_EQ(frontFacingSurface->id(), renderSurfaceLayerList[1]->render_surfac e()->layer_list()[0]->id());
2961 EXPECT_EQ(child1->id(), renderSurfaceLayerList[1]->render_surface()->layer_l ist()[1]->id()); 2961 EXPECT_EQ(child1->id(), renderSurfaceLayerList[1]->render_surface()->layer_l ist()[1]->id());
2962 } 2962 }
2963 2963
2964 TEST(LayerTreeHostCommonTest, verifyHitTestingForEmptyLayerList) 2964 TEST(LayerTreeHostCommonTest, verifyHitTestingForEmptyLayerList)
2965 { 2965 {
2966 // Hit testing on an empty renderSurfaceLayerList should return a null point er. 2966 // Hit testing on an empty renderSurfaceLayerList should return a null point er.
2967 std::vector<LayerImpl*> renderSurfaceLayerList; 2967 std::vector<LayerImpl*> renderSurfaceLayerList;
2968 2968
2969 gfx::Point testPoint(0, 0); 2969 gfx::Point testPoint(0, 0);
2970 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 2970 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
2971 EXPECT_FALSE(resultLayer); 2971 EXPECT_FALSE(resultLayer);
2972 2972
2973 testPoint = gfx::Point(10, 20); 2973 testPoint = gfx::Point(10, 20);
2974 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 2974 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
2975 EXPECT_FALSE(resultLayer); 2975 EXPECT_FALSE(resultLayer);
2976 } 2976 }
2977 2977
2978 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayer) 2978 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayer)
2979 { 2979 {
2980 FakeImplProxy proxy; 2980 FakeImplProxy proxy;
2981 FakeLayerTreeHostImpl hostImpl(&proxy); 2981 FakeLayerTreeHostImpl hostImpl(&proxy);
2982 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 ); 2982 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 );
2983 2983
2984 gfx::Transform identityMatrix; 2984 gfx::Transform identityMatrix;
2985 gfx::PointF anchor(0, 0); 2985 gfx::PointF anchor(0, 0);
2986 gfx::PointF position(0, 0); 2986 gfx::PointF position(0, 0);
2987 gfx::Size bounds(100, 100); 2987 gfx::Size bounds(100, 100);
2988 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false); 2988 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false);
2989 root->SetDrawsContent(true); 2989 root->SetDrawsContent(true);
2990 2990
2991 std::vector<LayerImpl*> renderSurfaceLayerList; 2991 std::vector<LayerImpl*> renderSurfaceLayerList;
2992 int dummyMaxTextureSize = 512; 2992 int dummyMaxTextureSize = 512;
2993 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 2993 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
2994 2994
2995 // Sanity check the scenario we just created. 2995 // Sanity check the scenario we just created.
2996 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 2996 ASSERT_EQ(1u, renderSurfaceLayerList.size());
2997 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 2997 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
2998 2998
2999 // Hit testing for a point outside the layer should return a null pointer. 2999 // Hit testing for a point outside the layer should return a null pointer.
3000 gfx::Point testPoint(101, 101); 3000 gfx::Point testPoint(101, 101);
3001 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3001 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3002 EXPECT_FALSE(resultLayer); 3002 EXPECT_FALSE(resultLayer);
3003 3003
3004 testPoint = gfx::Point(-1, -1); 3004 testPoint = gfx::Point(-1, -1);
3005 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3005 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3006 EXPECT_FALSE(resultLayer); 3006 EXPECT_FALSE(resultLayer);
3007 3007
3008 // Hit testing for a point inside should return the root layer. 3008 // Hit testing for a point inside should return the root layer.
3009 testPoint = gfx::Point(1, 1); 3009 testPoint = gfx::Point(1, 1);
3010 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3010 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3011 ASSERT_TRUE(resultLayer); 3011 ASSERT_TRUE(resultLayer);
3012 EXPECT_EQ(12345, resultLayer->id()); 3012 EXPECT_EQ(12345, resultLayer->id());
3013 3013
3014 testPoint = gfx::Point(99, 99); 3014 testPoint = gfx::Point(99, 99);
3015 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3015 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3016 ASSERT_TRUE(resultLayer); 3016 ASSERT_TRUE(resultLayer);
3017 EXPECT_EQ(12345, resultLayer->id()); 3017 EXPECT_EQ(12345, resultLayer->id());
3018 } 3018 }
3019 3019
3020 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayerAndHud) 3020 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayerAndHud)
3021 { 3021 {
3022 FakeImplProxy proxy; 3022 FakeImplProxy proxy;
3023 FakeLayerTreeHostImpl hostImpl(&proxy); 3023 FakeLayerTreeHostImpl hostImpl(&proxy);
3024 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 ); 3024 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 );
3025 scoped_ptr<HeadsUpDisplayLayerImpl> hud = HeadsUpDisplayLayerImpl::Create(ho stImpl.active_tree(), 11111); 3025 scoped_ptr<HeadsUpDisplayLayerImpl> hud = HeadsUpDisplayLayerImpl::Create(ho stImpl.active_tree(), 11111);
3026 3026
3027 gfx::Transform identityMatrix; 3027 gfx::Transform identityMatrix;
3028 gfx::PointF anchor(0.f, 0.f); 3028 gfx::PointF anchor(0.f, 0.f);
3029 gfx::PointF position(0.f, 0.f); 3029 gfx::PointF position(0.f, 0.f);
3030 gfx::Size bounds(100, 100); 3030 gfx::Size bounds(100, 100);
3031 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false); 3031 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false);
3032 root->SetDrawsContent(true); 3032 root->SetDrawsContent(true);
3033 3033
3034 // Create hud and add it as a child of root. 3034 // Create hud and add it as a child of root.
3035 gfx::Size hudBounds(200, 200); 3035 gfx::Size hudBounds(200, 200);
3036 setLayerPropertiesForTesting(hud.get(), identityMatrix, identityMatrix, anch or, position, hudBounds, false); 3036 setLayerPropertiesForTesting(hud.get(), identityMatrix, identityMatrix, anch or, position, hudBounds, false);
3037 hud->SetDrawsContent(true); 3037 hud->SetDrawsContent(true);
3038 3038
3039 hostImpl.active_tree()->set_hud_layer(hud.get()); 3039 hostImpl.active_tree()->set_hud_layer(hud.get());
3040 root->AddChild(hud.PassAs<LayerImpl>()); 3040 root->AddChild(hud.PassAs<LayerImpl>());
3041 3041
3042 std::vector<LayerImpl*> renderSurfaceLayerList; 3042 std::vector<LayerImpl*> renderSurfaceLayerList;
3043 int dummyMaxTextureSize = 512; 3043 int dummyMaxTextureSize = 512;
3044 LayerTreeHostCommon::CalculateDrawProperties(root.get(), hudBounds, 1, 1, du mmyMaxTextureSize, false, &renderSurfaceLayerList, false); 3044 LayerTreeHostCommon::calculateDrawProperties(root.get(), hudBounds, 1, 1, du mmyMaxTextureSize, false, renderSurfaceLayerList, false);
3045 3045
3046 // Sanity check the scenario we just created. 3046 // Sanity check the scenario we just created.
3047 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3047 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3048 ASSERT_EQ(2u, root->render_surface()->layer_list().size()); 3048 ASSERT_EQ(2u, root->render_surface()->layer_list().size());
3049 3049
3050 // Hit testing for a point inside HUD, but outside root should return null 3050 // Hit testing for a point inside HUD, but outside root should return null
3051 gfx::Point testPoint(101, 101); 3051 gfx::Point testPoint(101, 101);
3052 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3052 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3053 EXPECT_FALSE(resultLayer); 3053 EXPECT_FALSE(resultLayer);
3054 3054
3055 testPoint = gfx::Point(-1, -1); 3055 testPoint = gfx::Point(-1, -1);
3056 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3056 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3057 EXPECT_FALSE(resultLayer); 3057 EXPECT_FALSE(resultLayer);
3058 3058
3059 // Hit testing for a point inside should return the root layer, never the HU D layer. 3059 // Hit testing for a point inside should return the root layer, never the HU D layer.
3060 testPoint = gfx::Point(1, 1); 3060 testPoint = gfx::Point(1, 1);
3061 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3061 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3062 ASSERT_TRUE(resultLayer); 3062 ASSERT_TRUE(resultLayer);
3063 EXPECT_EQ(12345, resultLayer->id()); 3063 EXPECT_EQ(12345, resultLayer->id());
3064 3064
3065 testPoint = gfx::Point(99, 99); 3065 testPoint = gfx::Point(99, 99);
3066 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3066 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3067 ASSERT_TRUE(resultLayer); 3067 ASSERT_TRUE(resultLayer);
3068 EXPECT_EQ(12345, resultLayer->id()); 3068 EXPECT_EQ(12345, resultLayer->id());
3069 } 3069 }
3070 3070
3071 TEST(LayerTreeHostCommonTest, verifyHitTestingForUninvertibleTransform) 3071 TEST(LayerTreeHostCommonTest, verifyHitTestingForUninvertibleTransform)
3072 { 3072 {
3073 FakeImplProxy proxy; 3073 FakeImplProxy proxy;
3074 FakeLayerTreeHostImpl hostImpl(&proxy); 3074 FakeLayerTreeHostImpl hostImpl(&proxy);
3075 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 ); 3075 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 );
3076 3076
3077 gfx::Transform uninvertibleTransform; 3077 gfx::Transform uninvertibleTransform;
3078 uninvertibleTransform.matrix().setDouble(0, 0, 0); 3078 uninvertibleTransform.matrix().setDouble(0, 0, 0);
3079 uninvertibleTransform.matrix().setDouble(1, 1, 0); 3079 uninvertibleTransform.matrix().setDouble(1, 1, 0);
3080 uninvertibleTransform.matrix().setDouble(2, 2, 0); 3080 uninvertibleTransform.matrix().setDouble(2, 2, 0);
3081 uninvertibleTransform.matrix().setDouble(3, 3, 0); 3081 uninvertibleTransform.matrix().setDouble(3, 3, 0);
3082 ASSERT_FALSE(uninvertibleTransform.IsInvertible()); 3082 ASSERT_FALSE(uninvertibleTransform.IsInvertible());
3083 3083
3084 gfx::Transform identityMatrix; 3084 gfx::Transform identityMatrix;
3085 gfx::PointF anchor(0, 0); 3085 gfx::PointF anchor(0, 0);
3086 gfx::PointF position(0, 0); 3086 gfx::PointF position(0, 0);
3087 gfx::Size bounds(100, 100); 3087 gfx::Size bounds(100, 100);
3088 setLayerPropertiesForTesting(root.get(), uninvertibleTransform, identityMatr ix, anchor, position, bounds, false); 3088 setLayerPropertiesForTesting(root.get(), uninvertibleTransform, identityMatr ix, anchor, position, bounds, false);
3089 root->SetDrawsContent(true); 3089 root->SetDrawsContent(true);
3090 3090
3091 std::vector<LayerImpl*> renderSurfaceLayerList; 3091 std::vector<LayerImpl*> renderSurfaceLayerList;
3092 int dummyMaxTextureSize = 512; 3092 int dummyMaxTextureSize = 512;
3093 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3093 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3094 3094
3095 // Sanity check the scenario we just created. 3095 // Sanity check the scenario we just created.
3096 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3096 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3097 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3097 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3098 ASSERT_FALSE(root->screen_space_transform().IsInvertible()); 3098 ASSERT_FALSE(root->screen_space_transform().IsInvertible());
3099 3099
3100 // Hit testing any point should not hit the layer. If the invertible matrix is 3100 // Hit testing any point should not hit the layer. If the invertible matrix is
3101 // accidentally ignored and treated like an identity, then the hit testing w ill 3101 // accidentally ignored and treated like an identity, then the hit testing w ill
3102 // incorrectly hit the layer when it shouldn't. 3102 // incorrectly hit the layer when it shouldn't.
3103 gfx::Point testPoint(1, 1); 3103 gfx::Point testPoint(1, 1);
3104 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3104 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3105 EXPECT_FALSE(resultLayer); 3105 EXPECT_FALSE(resultLayer);
3106 3106
3107 testPoint = gfx::Point(10, 10); 3107 testPoint = gfx::Point(10, 10);
3108 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3108 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3109 EXPECT_FALSE(resultLayer); 3109 EXPECT_FALSE(resultLayer);
3110 3110
3111 testPoint = gfx::Point(10, 30); 3111 testPoint = gfx::Point(10, 30);
3112 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3112 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3113 EXPECT_FALSE(resultLayer); 3113 EXPECT_FALSE(resultLayer);
3114 3114
3115 testPoint = gfx::Point(50, 50); 3115 testPoint = gfx::Point(50, 50);
3116 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3116 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3117 EXPECT_FALSE(resultLayer); 3117 EXPECT_FALSE(resultLayer);
3118 3118
3119 testPoint = gfx::Point(67, 48); 3119 testPoint = gfx::Point(67, 48);
3120 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3120 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3121 EXPECT_FALSE(resultLayer); 3121 EXPECT_FALSE(resultLayer);
3122 3122
3123 testPoint = gfx::Point(99, 99); 3123 testPoint = gfx::Point(99, 99);
3124 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3124 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3125 EXPECT_FALSE(resultLayer); 3125 EXPECT_FALSE(resultLayer);
3126 3126
3127 testPoint = gfx::Point(-1, -1); 3127 testPoint = gfx::Point(-1, -1);
3128 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3128 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3129 EXPECT_FALSE(resultLayer); 3129 EXPECT_FALSE(resultLayer);
3130 } 3130 }
3131 3131
3132 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePositionedLayer) 3132 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePositionedLayer)
3133 { 3133 {
3134 FakeImplProxy proxy; 3134 FakeImplProxy proxy;
3135 FakeLayerTreeHostImpl hostImpl(&proxy); 3135 FakeLayerTreeHostImpl hostImpl(&proxy);
3136 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 ); 3136 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 );
3137 3137
3138 gfx::Transform identityMatrix; 3138 gfx::Transform identityMatrix;
3139 gfx::PointF anchor(0, 0); 3139 gfx::PointF anchor(0, 0);
3140 gfx::PointF position(50, 50); // this layer is positioned, and hit testing s hould correctly know where the layer is located. 3140 gfx::PointF position(50, 50); // this layer is positioned, and hit testing s hould correctly know where the layer is located.
3141 gfx::Size bounds(100, 100); 3141 gfx::Size bounds(100, 100);
3142 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false); 3142 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false);
3143 root->SetDrawsContent(true); 3143 root->SetDrawsContent(true);
3144 3144
3145 std::vector<LayerImpl*> renderSurfaceLayerList; 3145 std::vector<LayerImpl*> renderSurfaceLayerList;
3146 int dummyMaxTextureSize = 512; 3146 int dummyMaxTextureSize = 512;
3147 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3147 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3148 3148
3149 // Sanity check the scenario we just created. 3149 // Sanity check the scenario we just created.
3150 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3150 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3151 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3151 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3152 3152
3153 // Hit testing for a point outside the layer should return a null pointer. 3153 // Hit testing for a point outside the layer should return a null pointer.
3154 gfx::Point testPoint(49, 49); 3154 gfx::Point testPoint(49, 49);
3155 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3155 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3156 EXPECT_FALSE(resultLayer); 3156 EXPECT_FALSE(resultLayer);
3157 3157
3158 // Even though the layer exists at (101, 101), it should not be visible ther e since the root renderSurface would clamp it. 3158 // Even though the layer exists at (101, 101), it should not be visible ther e since the root renderSurface would clamp it.
3159 testPoint = gfx::Point(101, 101); 3159 testPoint = gfx::Point(101, 101);
3160 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3160 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3161 EXPECT_FALSE(resultLayer); 3161 EXPECT_FALSE(resultLayer);
3162 3162
3163 // Hit testing for a point inside should return the root layer. 3163 // Hit testing for a point inside should return the root layer.
3164 testPoint = gfx::Point(51, 51); 3164 testPoint = gfx::Point(51, 51);
3165 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3165 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3166 ASSERT_TRUE(resultLayer); 3166 ASSERT_TRUE(resultLayer);
3167 EXPECT_EQ(12345, resultLayer->id()); 3167 EXPECT_EQ(12345, resultLayer->id());
3168 3168
3169 testPoint = gfx::Point(99, 99); 3169 testPoint = gfx::Point(99, 99);
3170 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3170 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3171 ASSERT_TRUE(resultLayer); 3171 ASSERT_TRUE(resultLayer);
3172 EXPECT_EQ(12345, resultLayer->id()); 3172 EXPECT_EQ(12345, resultLayer->id());
3173 } 3173 }
3174 3174
3175 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleRotatedLayer) 3175 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleRotatedLayer)
3176 { 3176 {
3177 FakeImplProxy proxy; 3177 FakeImplProxy proxy;
3178 FakeLayerTreeHostImpl hostImpl(&proxy); 3178 FakeLayerTreeHostImpl hostImpl(&proxy);
3179 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 ); 3179 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 );
3180 3180
3181 gfx::Transform identityMatrix; 3181 gfx::Transform identityMatrix;
3182 gfx::Transform rotation45DegreesAboutCenter; 3182 gfx::Transform rotation45DegreesAboutCenter;
3183 rotation45DegreesAboutCenter.Translate(50, 50); 3183 rotation45DegreesAboutCenter.Translate(50, 50);
3184 rotation45DegreesAboutCenter.RotateAboutZAxis(45); 3184 rotation45DegreesAboutCenter.RotateAboutZAxis(45);
3185 rotation45DegreesAboutCenter.Translate(-50, -50); 3185 rotation45DegreesAboutCenter.Translate(-50, -50);
3186 gfx::PointF anchor(0, 0); 3186 gfx::PointF anchor(0, 0);
3187 gfx::PointF position(0, 0); 3187 gfx::PointF position(0, 0);
3188 gfx::Size bounds(100, 100); 3188 gfx::Size bounds(100, 100);
3189 setLayerPropertiesForTesting(root.get(), rotation45DegreesAboutCenter, ident ityMatrix, anchor, position, bounds, false); 3189 setLayerPropertiesForTesting(root.get(), rotation45DegreesAboutCenter, ident ityMatrix, anchor, position, bounds, false);
3190 root->SetDrawsContent(true); 3190 root->SetDrawsContent(true);
3191 3191
3192 std::vector<LayerImpl*> renderSurfaceLayerList; 3192 std::vector<LayerImpl*> renderSurfaceLayerList;
3193 int dummyMaxTextureSize = 512; 3193 int dummyMaxTextureSize = 512;
3194 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3194 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3195 3195
3196 // Sanity check the scenario we just created. 3196 // Sanity check the scenario we just created.
3197 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3197 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3198 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3198 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3199 3199
3200 // Hit testing for points outside the layer. 3200 // Hit testing for points outside the layer.
3201 // These corners would have been inside the un-transformed layer, but they s hould not hit the correctly transformed layer. 3201 // These corners would have been inside the un-transformed layer, but they s hould not hit the correctly transformed layer.
3202 gfx::Point testPoint(99, 99); 3202 gfx::Point testPoint(99, 99);
3203 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3203 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3204 EXPECT_FALSE(resultLayer); 3204 EXPECT_FALSE(resultLayer);
3205 3205
3206 testPoint = gfx::Point(1, 1); 3206 testPoint = gfx::Point(1, 1);
3207 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3207 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3208 EXPECT_FALSE(resultLayer); 3208 EXPECT_FALSE(resultLayer);
3209 3209
3210 // Hit testing for a point inside should return the root layer. 3210 // Hit testing for a point inside should return the root layer.
3211 testPoint = gfx::Point(1, 50); 3211 testPoint = gfx::Point(1, 50);
3212 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3212 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3213 ASSERT_TRUE(resultLayer); 3213 ASSERT_TRUE(resultLayer);
3214 EXPECT_EQ(12345, resultLayer->id()); 3214 EXPECT_EQ(12345, resultLayer->id());
3215 3215
3216 // Hit testing the corners that would overlap the unclipped layer, but are o utside the clipped region. 3216 // Hit testing the corners that would overlap the unclipped layer, but are o utside the clipped region.
3217 testPoint = gfx::Point(50, -1); 3217 testPoint = gfx::Point(50, -1);
3218 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3218 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3219 ASSERT_FALSE(resultLayer); 3219 ASSERT_FALSE(resultLayer);
3220 3220
3221 testPoint = gfx::Point(-1, 50); 3221 testPoint = gfx::Point(-1, 50);
3222 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3222 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3223 ASSERT_FALSE(resultLayer); 3223 ASSERT_FALSE(resultLayer);
3224 } 3224 }
3225 3225
3226 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePerspectiveLayer) 3226 TEST(LayerTreeHostCommonTest, verifyHitTestingForSinglePerspectiveLayer)
3227 { 3227 {
3228 FakeImplProxy proxy; 3228 FakeImplProxy proxy;
3229 FakeLayerTreeHostImpl hostImpl(&proxy); 3229 FakeLayerTreeHostImpl hostImpl(&proxy);
3230 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 ); 3230 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 );
3231 3231
3232 gfx::Transform identityMatrix; 3232 gfx::Transform identityMatrix;
3233 3233
3234 // perspectiveProjectionAboutCenter * translationByZ is designed so that the 100 x 100 layer becomes 50 x 50, and remains centered at (50, 50). 3234 // perspectiveProjectionAboutCenter * translationByZ is designed so that the 100 x 100 layer becomes 50 x 50, and remains centered at (50, 50).
3235 gfx::Transform perspectiveProjectionAboutCenter; 3235 gfx::Transform perspectiveProjectionAboutCenter;
3236 perspectiveProjectionAboutCenter.Translate(50, 50); 3236 perspectiveProjectionAboutCenter.Translate(50, 50);
3237 perspectiveProjectionAboutCenter.ApplyPerspectiveDepth(1); 3237 perspectiveProjectionAboutCenter.ApplyPerspectiveDepth(1);
3238 perspectiveProjectionAboutCenter.Translate(-50, -50); 3238 perspectiveProjectionAboutCenter.Translate(-50, -50);
3239 gfx::Transform translationByZ; 3239 gfx::Transform translationByZ;
3240 translationByZ.Translate3d(0, 0, -1); 3240 translationByZ.Translate3d(0, 0, -1);
3241 3241
3242 gfx::PointF anchor(0, 0); 3242 gfx::PointF anchor(0, 0);
3243 gfx::PointF position(0, 0); 3243 gfx::PointF position(0, 0);
3244 gfx::Size bounds(100, 100); 3244 gfx::Size bounds(100, 100);
3245 setLayerPropertiesForTesting(root.get(), perspectiveProjectionAboutCenter * translationByZ, identityMatrix, anchor, position, bounds, false); 3245 setLayerPropertiesForTesting(root.get(), perspectiveProjectionAboutCenter * translationByZ, identityMatrix, anchor, position, bounds, false);
3246 root->SetDrawsContent(true); 3246 root->SetDrawsContent(true);
3247 3247
3248 std::vector<LayerImpl*> renderSurfaceLayerList; 3248 std::vector<LayerImpl*> renderSurfaceLayerList;
3249 int dummyMaxTextureSize = 512; 3249 int dummyMaxTextureSize = 512;
3250 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3250 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3251 3251
3252 // Sanity check the scenario we just created. 3252 // Sanity check the scenario we just created.
3253 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3253 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3254 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3254 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3255 3255
3256 // Hit testing for points outside the layer. 3256 // Hit testing for points outside the layer.
3257 // These corners would have been inside the un-transformed layer, but they s hould not hit the correctly transformed layer. 3257 // These corners would have been inside the un-transformed layer, but they s hould not hit the correctly transformed layer.
3258 gfx::Point testPoint(24, 24); 3258 gfx::Point testPoint(24, 24);
3259 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3259 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3260 EXPECT_FALSE(resultLayer); 3260 EXPECT_FALSE(resultLayer);
3261 3261
3262 testPoint = gfx::Point(76, 76); 3262 testPoint = gfx::Point(76, 76);
3263 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3263 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3264 EXPECT_FALSE(resultLayer); 3264 EXPECT_FALSE(resultLayer);
3265 3265
3266 // Hit testing for a point inside should return the root layer. 3266 // Hit testing for a point inside should return the root layer.
3267 testPoint = gfx::Point(26, 26); 3267 testPoint = gfx::Point(26, 26);
3268 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3268 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3269 ASSERT_TRUE(resultLayer); 3269 ASSERT_TRUE(resultLayer);
3270 EXPECT_EQ(12345, resultLayer->id()); 3270 EXPECT_EQ(12345, resultLayer->id());
3271 3271
3272 testPoint = gfx::Point(74, 74); 3272 testPoint = gfx::Point(74, 74);
3273 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3273 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3274 ASSERT_TRUE(resultLayer); 3274 ASSERT_TRUE(resultLayer);
3275 EXPECT_EQ(12345, resultLayer->id()); 3275 EXPECT_EQ(12345, resultLayer->id());
3276 } 3276 }
3277 3277
3278 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayerWithScaledContents) 3278 TEST(LayerTreeHostCommonTest, verifyHitTestingForSingleLayerWithScaledContents)
3279 { 3279 {
3280 // A layer's visibleContentRect is actually in the layer's content space. Th e 3280 // A layer's visibleContentRect is actually in the layer's content space. Th e
3281 // screenSpaceTransform converts from the layer's origin space to screen spa ce. This 3281 // screenSpaceTransform converts from the layer's origin space to screen spa ce. This
3282 // test makes sure that hit testing works correctly accounts for the content s scale. 3282 // test makes sure that hit testing works correctly accounts for the content s scale.
3283 // A contentsScale that is not 1 effectively forces a non-identity transform between 3283 // A contentsScale that is not 1 effectively forces a non-identity transform between
(...skipping 21 matching lines...) Expand all
3305 // override contentBounds and contentsScale 3305 // override contentBounds and contentsScale
3306 testLayer->SetContentBounds(gfx::Size(100, 100)); 3306 testLayer->SetContentBounds(gfx::Size(100, 100));
3307 testLayer->SetContentsScale(2, 2); 3307 testLayer->SetContentsScale(2, 2);
3308 3308
3309 testLayer->SetDrawsContent(true); 3309 testLayer->SetDrawsContent(true);
3310 root->AddChild(testLayer.Pass()); 3310 root->AddChild(testLayer.Pass());
3311 } 3311 }
3312 3312
3313 std::vector<LayerImpl*> renderSurfaceLayerList; 3313 std::vector<LayerImpl*> renderSurfaceLayerList;
3314 int dummyMaxTextureSize = 512; 3314 int dummyMaxTextureSize = 512;
3315 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3315 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3316 3316
3317 // Sanity check the scenario we just created. 3317 // Sanity check the scenario we just created.
3318 // The visibleContentRect for testLayer is actually 100x100, even though its layout size is 50x50, positioned at 25x25. 3318 // The visibleContentRect for testLayer is actually 100x100, even though its layout size is 50x50, positioned at 25x25.
3319 LayerImpl* testLayer = root->children()[0]; 3319 LayerImpl* testLayer = root->children()[0];
3320 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(), gfx::Size(100, 100)), testLayer->visi ble_content_rect()); 3320 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(), gfx::Size(100, 100)), testLayer->visi ble_content_rect());
3321 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3321 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3322 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3322 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3323 3323
3324 // Hit testing for a point outside the layer should return a null pointer (t he root layer does not draw content, so it will not be hit tested either). 3324 // Hit testing for a point outside the layer should return a null pointer (t he root layer does not draw content, so it will not be hit tested either).
3325 gfx::Point testPoint(101, 101); 3325 gfx::Point testPoint(101, 101);
3326 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3326 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3327 EXPECT_FALSE(resultLayer); 3327 EXPECT_FALSE(resultLayer);
3328 3328
3329 testPoint = gfx::Point(24, 24); 3329 testPoint = gfx::Point(24, 24);
3330 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3330 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3331 EXPECT_FALSE(resultLayer); 3331 EXPECT_FALSE(resultLayer);
3332 3332
3333 testPoint = gfx::Point(76, 76); 3333 testPoint = gfx::Point(76, 76);
3334 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3334 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3335 EXPECT_FALSE(resultLayer); 3335 EXPECT_FALSE(resultLayer);
3336 3336
3337 // Hit testing for a point inside should return the test layer. 3337 // Hit testing for a point inside should return the test layer.
3338 testPoint = gfx::Point(26, 26); 3338 testPoint = gfx::Point(26, 26);
3339 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3339 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3340 ASSERT_TRUE(resultLayer); 3340 ASSERT_TRUE(resultLayer);
3341 EXPECT_EQ(12345, resultLayer->id()); 3341 EXPECT_EQ(12345, resultLayer->id());
3342 3342
3343 testPoint = gfx::Point(74, 74); 3343 testPoint = gfx::Point(74, 74);
3344 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3344 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3345 ASSERT_TRUE(resultLayer); 3345 ASSERT_TRUE(resultLayer);
3346 EXPECT_EQ(12345, resultLayer->id()); 3346 EXPECT_EQ(12345, resultLayer->id());
3347 } 3347 }
3348 3348
3349 TEST(LayerTreeHostCommonTest, verifyHitTestingForSimpleClippedLayer) 3349 TEST(LayerTreeHostCommonTest, verifyHitTestingForSimpleClippedLayer)
3350 { 3350 {
3351 // Test that hit-testing will only work for the visible portion of a layer, and not 3351 // Test that hit-testing will only work for the visible portion of a layer, and not
3352 // the entire layer bounds. Here we just test the simple axis-aligned case. 3352 // the entire layer bounds. Here we just test the simple axis-aligned case.
3353 gfx::Transform identityMatrix; 3353 gfx::Transform identityMatrix;
3354 gfx::PointF anchor(0, 0); 3354 gfx::PointF anchor(0, 0);
(...skipping 14 matching lines...) Expand all
3369 position = gfx::PointF(-50, -50); 3369 position = gfx::PointF(-50, -50);
3370 bounds = gfx::Size(300, 300); 3370 bounds = gfx::Size(300, 300);
3371 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false); 3371 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false);
3372 child->SetDrawsContent(true); 3372 child->SetDrawsContent(true);
3373 clippingLayer->AddChild(child.Pass()); 3373 clippingLayer->AddChild(child.Pass());
3374 root->AddChild(clippingLayer.Pass()); 3374 root->AddChild(clippingLayer.Pass());
3375 } 3375 }
3376 3376
3377 std::vector<LayerImpl*> renderSurfaceLayerList; 3377 std::vector<LayerImpl*> renderSurfaceLayerList;
3378 int dummyMaxTextureSize = 512; 3378 int dummyMaxTextureSize = 512;
3379 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3379 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3380 3380
3381 // Sanity check the scenario we just created. 3381 // Sanity check the scenario we just created.
3382 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3382 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3383 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3383 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3384 ASSERT_EQ(456, root->render_surface()->layer_list()[0]->id()); 3384 ASSERT_EQ(456, root->render_surface()->layer_list()[0]->id());
3385 3385
3386 // Hit testing for a point outside the layer should return a null pointer. 3386 // Hit testing for a point outside the layer should return a null pointer.
3387 // Despite the child layer being very large, it should be clipped to the roo t layer's bounds. 3387 // Despite the child layer being very large, it should be clipped to the roo t layer's bounds.
3388 gfx::Point testPoint(24, 24); 3388 gfx::Point testPoint(24, 24);
3389 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3389 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3390 EXPECT_FALSE(resultLayer); 3390 EXPECT_FALSE(resultLayer);
3391 3391
3392 // Even though the layer exists at (101, 101), it should not be visible ther e since the clippingLayer would clamp it. 3392 // Even though the layer exists at (101, 101), it should not be visible ther e since the clippingLayer would clamp it.
3393 testPoint = gfx::Point(76, 76); 3393 testPoint = gfx::Point(76, 76);
3394 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3394 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3395 EXPECT_FALSE(resultLayer); 3395 EXPECT_FALSE(resultLayer);
3396 3396
3397 // Hit testing for a point inside should return the child layer. 3397 // Hit testing for a point inside should return the child layer.
3398 testPoint = gfx::Point(26, 26); 3398 testPoint = gfx::Point(26, 26);
3399 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3399 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3400 ASSERT_TRUE(resultLayer); 3400 ASSERT_TRUE(resultLayer);
3401 EXPECT_EQ(456, resultLayer->id()); 3401 EXPECT_EQ(456, resultLayer->id());
3402 3402
3403 testPoint = gfx::Point(74, 74); 3403 testPoint = gfx::Point(74, 74);
3404 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3404 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3405 ASSERT_TRUE(resultLayer); 3405 ASSERT_TRUE(resultLayer);
3406 EXPECT_EQ(456, resultLayer->id()); 3406 EXPECT_EQ(456, resultLayer->id());
3407 } 3407 }
3408 3408
3409 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultiClippedRotatedLayer) 3409 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultiClippedRotatedLayer)
3410 { 3410 {
3411 // This test checks whether hit testing correctly avoids hit testing with mu ltiple 3411 // This test checks whether hit testing correctly avoids hit testing with mu ltiple
3412 // ancestors that clip in non axis-aligned ways. To pass this test, the hit testing 3412 // ancestors that clip in non axis-aligned ways. To pass this test, the hit testing
3413 // algorithm needs to recognize that multiple parent layers may clip the lay er, and 3413 // algorithm needs to recognize that multiple parent layers may clip the lay er, and
3414 // should not actually hit those clipped areas. 3414 // should not actually hit those clipped areas.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
3459 setLayerPropertiesForTesting(rotatedLeaf.get(), rotatedLeafTransform, id entityMatrix, anchor, position, bounds, false); 3459 setLayerPropertiesForTesting(rotatedLeaf.get(), rotatedLeafTransform, id entityMatrix, anchor, position, bounds, false);
3460 rotatedLeaf->SetDrawsContent(true); 3460 rotatedLeaf->SetDrawsContent(true);
3461 3461
3462 grandChild->AddChild(rotatedLeaf.Pass()); 3462 grandChild->AddChild(rotatedLeaf.Pass());
3463 child->AddChild(grandChild.Pass()); 3463 child->AddChild(grandChild.Pass());
3464 root->AddChild(child.Pass()); 3464 root->AddChild(child.Pass());
3465 } 3465 }
3466 3466
3467 std::vector<LayerImpl*> renderSurfaceLayerList; 3467 std::vector<LayerImpl*> renderSurfaceLayerList;
3468 int dummyMaxTextureSize = 512; 3468 int dummyMaxTextureSize = 512;
3469 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3469 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3470 3470
3471 // Sanity check the scenario we just created. 3471 // Sanity check the scenario we just created.
3472 // The grandChild is expected to create a renderSurface because it masksToBo unds and is not axis aligned. 3472 // The grandChild is expected to create a renderSurface because it masksToBo unds and is not axis aligned.
3473 ASSERT_EQ(2u, renderSurfaceLayerList.size()); 3473 ASSERT_EQ(2u, renderSurfaceLayerList.size());
3474 ASSERT_EQ(1u, renderSurfaceLayerList[0]->render_surface()->layer_list().size ()); 3474 ASSERT_EQ(1u, renderSurfaceLayerList[0]->render_surface()->layer_list().size ());
3475 ASSERT_EQ(789, renderSurfaceLayerList[0]->render_surface()->layer_list()[0]- >id()); // grandChild's surface. 3475 ASSERT_EQ(789, renderSurfaceLayerList[0]->render_surface()->layer_list()[0]- >id()); // grandChild's surface.
3476 ASSERT_EQ(1u, renderSurfaceLayerList[1]->render_surface()->layer_list().size ()); 3476 ASSERT_EQ(1u, renderSurfaceLayerList[1]->render_surface()->layer_list().size ());
3477 ASSERT_EQ(2468, renderSurfaceLayerList[1]->render_surface()->layer_list()[0] ->id()); 3477 ASSERT_EQ(2468, renderSurfaceLayerList[1]->render_surface()->layer_list()[0] ->id());
3478 3478
3479 // (11, 89) is close to the the bottom left corner within the clip, but it i s not inside the layer. 3479 // (11, 89) is close to the the bottom left corner within the clip, but it i s not inside the layer.
3480 gfx::Point testPoint(11, 89); 3480 gfx::Point testPoint(11, 89);
3481 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3481 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3482 EXPECT_FALSE(resultLayer); 3482 EXPECT_FALSE(resultLayer);
3483 3483
3484 // Closer inwards from the bottom left will overlap the layer. 3484 // Closer inwards from the bottom left will overlap the layer.
3485 testPoint = gfx::Point(25, 75); 3485 testPoint = gfx::Point(25, 75);
3486 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3486 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3487 ASSERT_TRUE(resultLayer); 3487 ASSERT_TRUE(resultLayer);
3488 EXPECT_EQ(2468, resultLayer->id()); 3488 EXPECT_EQ(2468, resultLayer->id());
3489 3489
3490 // (4, 50) is inside the unclipped layer, but that corner of the layer shoul d be 3490 // (4, 50) is inside the unclipped layer, but that corner of the layer shoul d be
3491 // clipped away by the grandParent and should not get hit. If hit testing bl indly uses 3491 // clipped away by the grandParent and should not get hit. If hit testing bl indly uses
3492 // visibleContentRect without considering how parent may clip the layer, the n hit 3492 // visibleContentRect without considering how parent may clip the layer, the n hit
3493 // testing would accidentally think that the point successfully hits the lay er. 3493 // testing would accidentally think that the point successfully hits the lay er.
3494 testPoint = gfx::Point(4, 50); 3494 testPoint = gfx::Point(4, 50);
3495 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3495 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3496 EXPECT_FALSE(resultLayer); 3496 EXPECT_FALSE(resultLayer);
3497 3497
3498 // (11, 50) is inside the layer and within the clipped area. 3498 // (11, 50) is inside the layer and within the clipped area.
3499 testPoint = gfx::Point(11, 50); 3499 testPoint = gfx::Point(11, 50);
3500 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3500 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3501 ASSERT_TRUE(resultLayer); 3501 ASSERT_TRUE(resultLayer);
3502 EXPECT_EQ(2468, resultLayer->id()); 3502 EXPECT_EQ(2468, resultLayer->id());
3503 3503
3504 // Around the middle, just to the right and up, would have hit the layer exc ept that 3504 // Around the middle, just to the right and up, would have hit the layer exc ept that
3505 // that area should be clipped away by the parent. 3505 // that area should be clipped away by the parent.
3506 testPoint = gfx::Point(51, 51); 3506 testPoint = gfx::Point(51, 51);
3507 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3507 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3508 EXPECT_FALSE(resultLayer); 3508 EXPECT_FALSE(resultLayer);
3509 3509
3510 // Around the middle, just to the left and down, should successfully hit the layer. 3510 // Around the middle, just to the left and down, should successfully hit the layer.
3511 testPoint = gfx::Point(49, 51); 3511 testPoint = gfx::Point(49, 51);
3512 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3512 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3513 ASSERT_TRUE(resultLayer); 3513 ASSERT_TRUE(resultLayer);
3514 EXPECT_EQ(2468, resultLayer->id()); 3514 EXPECT_EQ(2468, resultLayer->id());
3515 } 3515 }
3516 3516
3517 TEST(LayerTreeHostCommonTest, verifyHitTestingForNonClippingIntermediateLayer) 3517 TEST(LayerTreeHostCommonTest, verifyHitTestingForNonClippingIntermediateLayer)
3518 { 3518 {
3519 // This test checks that hit testing code does not accidentally clip to laye r 3519 // This test checks that hit testing code does not accidentally clip to laye r
3520 // bounds for a layer that actually does not clip. 3520 // bounds for a layer that actually does not clip.
3521 gfx::Transform identityMatrix; 3521 gfx::Transform identityMatrix;
3522 gfx::PointF anchor(0, 0); 3522 gfx::PointF anchor(0, 0);
(...skipping 18 matching lines...) Expand all
3541 position = gfx::PointF(60, 60); // 70, 70 in screen space 3541 position = gfx::PointF(60, 60); // 70, 70 in screen space
3542 bounds = gfx::Size(20, 20); 3542 bounds = gfx::Size(20, 20);
3543 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false); 3543 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false);
3544 child->SetDrawsContent(true); 3544 child->SetDrawsContent(true);
3545 intermediateLayer->AddChild(child.Pass()); 3545 intermediateLayer->AddChild(child.Pass());
3546 root->AddChild(intermediateLayer.Pass()); 3546 root->AddChild(intermediateLayer.Pass());
3547 } 3547 }
3548 3548
3549 std::vector<LayerImpl*> renderSurfaceLayerList; 3549 std::vector<LayerImpl*> renderSurfaceLayerList;
3550 int dummyMaxTextureSize = 512; 3550 int dummyMaxTextureSize = 512;
3551 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3551 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3552 3552
3553 // Sanity check the scenario we just created. 3553 // Sanity check the scenario we just created.
3554 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3554 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3555 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3555 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3556 ASSERT_EQ(456, root->render_surface()->layer_list()[0]->id()); 3556 ASSERT_EQ(456, root->render_surface()->layer_list()[0]->id());
3557 3557
3558 // Hit testing for a point outside the layer should return a null pointer. 3558 // Hit testing for a point outside the layer should return a null pointer.
3559 gfx::Point testPoint(69, 69); 3559 gfx::Point testPoint(69, 69);
3560 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3560 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3561 EXPECT_FALSE(resultLayer); 3561 EXPECT_FALSE(resultLayer);
3562 3562
3563 testPoint = gfx::Point(91, 91); 3563 testPoint = gfx::Point(91, 91);
3564 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3564 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3565 EXPECT_FALSE(resultLayer); 3565 EXPECT_FALSE(resultLayer);
3566 3566
3567 // Hit testing for a point inside should return the child layer. 3567 // Hit testing for a point inside should return the child layer.
3568 testPoint = gfx::Point(71, 71); 3568 testPoint = gfx::Point(71, 71);
3569 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3569 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3570 ASSERT_TRUE(resultLayer); 3570 ASSERT_TRUE(resultLayer);
3571 EXPECT_EQ(456, resultLayer->id()); 3571 EXPECT_EQ(456, resultLayer->id());
3572 3572
3573 testPoint = gfx::Point(89, 89); 3573 testPoint = gfx::Point(89, 89);
3574 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3574 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3575 ASSERT_TRUE(resultLayer); 3575 ASSERT_TRUE(resultLayer);
3576 EXPECT_EQ(456, resultLayer->id()); 3576 EXPECT_EQ(456, resultLayer->id());
3577 } 3577 }
3578 3578
3579 3579
3580 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayers) 3580 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayers)
3581 { 3581 {
3582 FakeImplProxy proxy; 3582 FakeImplProxy proxy;
3583 FakeLayerTreeHostImpl hostImpl(&proxy); 3583 FakeLayerTreeHostImpl hostImpl(&proxy);
3584 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 1); 3584 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 1);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3621 root->AddChild(child1.Pass()); 3621 root->AddChild(child1.Pass());
3622 root->AddChild(child2.Pass()); 3622 root->AddChild(child2.Pass());
3623 } 3623 }
3624 3624
3625 LayerImpl* child1 = root->children()[0]; 3625 LayerImpl* child1 = root->children()[0];
3626 LayerImpl* child2 = root->children()[1]; 3626 LayerImpl* child2 = root->children()[1];
3627 LayerImpl* grandChild1 = child1->children()[0]; 3627 LayerImpl* grandChild1 = child1->children()[0];
3628 3628
3629 std::vector<LayerImpl*> renderSurfaceLayerList; 3629 std::vector<LayerImpl*> renderSurfaceLayerList;
3630 int dummyMaxTextureSize = 512; 3630 int dummyMaxTextureSize = 512;
3631 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3631 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3632 3632
3633 // Sanity check the scenario we just created. 3633 // Sanity check the scenario we just created.
3634 ASSERT_TRUE(child1); 3634 ASSERT_TRUE(child1);
3635 ASSERT_TRUE(child2); 3635 ASSERT_TRUE(child2);
3636 ASSERT_TRUE(grandChild1); 3636 ASSERT_TRUE(grandChild1);
3637 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3637 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3638 ASSERT_EQ(4u, root->render_surface()->layer_list().size()); 3638 ASSERT_EQ(4u, root->render_surface()->layer_list().size());
3639 ASSERT_EQ(1, root->render_surface()->layer_list()[0]->id()); // root layer 3639 ASSERT_EQ(1, root->render_surface()->layer_list()[0]->id()); // root layer
3640 ASSERT_EQ(2, root->render_surface()->layer_list()[1]->id()); // child1 3640 ASSERT_EQ(2, root->render_surface()->layer_list()[1]->id()); // child1
3641 ASSERT_EQ(4, root->render_surface()->layer_list()[2]->id()); // grandChild1 3641 ASSERT_EQ(4, root->render_surface()->layer_list()[2]->id()); // grandChild1
3642 ASSERT_EQ(3, root->render_surface()->layer_list()[3]->id()); // child2 3642 ASSERT_EQ(3, root->render_surface()->layer_list()[3]->id()); // child2
3643 3643
3644 // Nothing overlaps the rootLayer at (1, 1), so hit testing there should fin d the root layer. 3644 // Nothing overlaps the rootLayer at (1, 1), so hit testing there should fin d the root layer.
3645 gfx::Point testPoint = gfx::Point(1, 1); 3645 gfx::Point testPoint = gfx::Point(1, 1);
3646 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3646 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3647 ASSERT_TRUE(resultLayer); 3647 ASSERT_TRUE(resultLayer);
3648 EXPECT_EQ(1, resultLayer->id()); 3648 EXPECT_EQ(1, resultLayer->id());
3649 3649
3650 // At (15, 15), child1 and root are the only layers. child1 is expected to b e on top. 3650 // At (15, 15), child1 and root are the only layers. child1 is expected to b e on top.
3651 testPoint = gfx::Point(15, 15); 3651 testPoint = gfx::Point(15, 15);
3652 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3652 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3653 ASSERT_TRUE(resultLayer); 3653 ASSERT_TRUE(resultLayer);
3654 EXPECT_EQ(2, resultLayer->id()); 3654 EXPECT_EQ(2, resultLayer->id());
3655 3655
3656 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top. 3656 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top.
3657 testPoint = gfx::Point(51, 20); 3657 testPoint = gfx::Point(51, 20);
3658 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3658 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3659 ASSERT_TRUE(resultLayer); 3659 ASSERT_TRUE(resultLayer);
3660 EXPECT_EQ(3, resultLayer->id()); 3660 EXPECT_EQ(3, resultLayer->id());
3661 3661
3662 // At (80, 51), child2 and grandChild1 overlap. child2 is expected to be on top. 3662 // At (80, 51), child2 and grandChild1 overlap. child2 is expected to be on top.
3663 testPoint = gfx::Point(80, 51); 3663 testPoint = gfx::Point(80, 51);
3664 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3664 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3665 ASSERT_TRUE(resultLayer); 3665 ASSERT_TRUE(resultLayer);
3666 EXPECT_EQ(3, resultLayer->id()); 3666 EXPECT_EQ(3, resultLayer->id());
3667 3667
3668 // At (51, 51), all layers overlap each other. child2 is expected to be on t op of all other layers. 3668 // At (51, 51), all layers overlap each other. child2 is expected to be on t op of all other layers.
3669 testPoint = gfx::Point(51, 51); 3669 testPoint = gfx::Point(51, 51);
3670 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3670 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3671 ASSERT_TRUE(resultLayer); 3671 ASSERT_TRUE(resultLayer);
3672 EXPECT_EQ(3, resultLayer->id()); 3672 EXPECT_EQ(3, resultLayer->id());
3673 3673
3674 // At (20, 51), child1 and grandChild1 overlap. grandChild1 is expected to b e on top. 3674 // At (20, 51), child1 and grandChild1 overlap. grandChild1 is expected to b e on top.
3675 testPoint = gfx::Point(20, 51); 3675 testPoint = gfx::Point(20, 51);
3676 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3676 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3677 ASSERT_TRUE(resultLayer); 3677 ASSERT_TRUE(resultLayer);
3678 EXPECT_EQ(4, resultLayer->id()); 3678 EXPECT_EQ(4, resultLayer->id());
3679 } 3679 }
3680 3680
3681 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayerLists) 3681 TEST(LayerTreeHostCommonTest, verifyHitTestingForMultipleLayerLists)
3682 { 3682 {
3683 // 3683 //
3684 // The geometry is set up similarly to the previous case, but 3684 // The geometry is set up similarly to the previous case, but
3685 // all layers are forced to be renderSurfaces now. 3685 // all layers are forced to be renderSurfaces now.
3686 // 3686 //
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3729 root->AddChild(child1.Pass()); 3729 root->AddChild(child1.Pass());
3730 root->AddChild(child2.Pass()); 3730 root->AddChild(child2.Pass());
3731 } 3731 }
3732 3732
3733 LayerImpl* child1 = root->children()[0]; 3733 LayerImpl* child1 = root->children()[0];
3734 LayerImpl* child2 = root->children()[1]; 3734 LayerImpl* child2 = root->children()[1];
3735 LayerImpl* grandChild1 = child1->children()[0]; 3735 LayerImpl* grandChild1 = child1->children()[0];
3736 3736
3737 std::vector<LayerImpl*> renderSurfaceLayerList; 3737 std::vector<LayerImpl*> renderSurfaceLayerList;
3738 int dummyMaxTextureSize = 512; 3738 int dummyMaxTextureSize = 512;
3739 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3739 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3740 3740
3741 // Sanity check the scenario we just created. 3741 // Sanity check the scenario we just created.
3742 ASSERT_TRUE(child1); 3742 ASSERT_TRUE(child1);
3743 ASSERT_TRUE(child2); 3743 ASSERT_TRUE(child2);
3744 ASSERT_TRUE(grandChild1); 3744 ASSERT_TRUE(grandChild1);
3745 ASSERT_TRUE(child1->render_surface()); 3745 ASSERT_TRUE(child1->render_surface());
3746 ASSERT_TRUE(child2->render_surface()); 3746 ASSERT_TRUE(child2->render_surface());
3747 ASSERT_TRUE(grandChild1->render_surface()); 3747 ASSERT_TRUE(grandChild1->render_surface());
3748 ASSERT_EQ(4u, renderSurfaceLayerList.size()); 3748 ASSERT_EQ(4u, renderSurfaceLayerList.size());
3749 ASSERT_EQ(3u, root->render_surface()->layer_list().size()); // The root surf ace has the root layer, and child1's and child2's renderSurfaces. 3749 ASSERT_EQ(3u, root->render_surface()->layer_list().size()); // The root surf ace has the root layer, and child1's and child2's renderSurfaces.
3750 ASSERT_EQ(2u, child1->render_surface()->layer_list().size()); // The child1 surface has the child1 layer and grandChild1's renderSurface. 3750 ASSERT_EQ(2u, child1->render_surface()->layer_list().size()); // The child1 surface has the child1 layer and grandChild1's renderSurface.
3751 ASSERT_EQ(1u, child2->render_surface()->layer_list().size()); 3751 ASSERT_EQ(1u, child2->render_surface()->layer_list().size());
3752 ASSERT_EQ(1u, grandChild1->render_surface()->layer_list().size()); 3752 ASSERT_EQ(1u, grandChild1->render_surface()->layer_list().size());
3753 ASSERT_EQ(1, renderSurfaceLayerList[0]->id()); // root layer 3753 ASSERT_EQ(1, renderSurfaceLayerList[0]->id()); // root layer
3754 ASSERT_EQ(2, renderSurfaceLayerList[1]->id()); // child1 3754 ASSERT_EQ(2, renderSurfaceLayerList[1]->id()); // child1
3755 ASSERT_EQ(4, renderSurfaceLayerList[2]->id()); // grandChild1 3755 ASSERT_EQ(4, renderSurfaceLayerList[2]->id()); // grandChild1
3756 ASSERT_EQ(3, renderSurfaceLayerList[3]->id()); // child2 3756 ASSERT_EQ(3, renderSurfaceLayerList[3]->id()); // child2
3757 3757
3758 // Nothing overlaps the rootLayer at (1, 1), so hit testing there should fin d the root layer. 3758 // Nothing overlaps the rootLayer at (1, 1), so hit testing there should fin d the root layer.
3759 gfx::Point testPoint = gfx::Point(1, 1); 3759 gfx::Point testPoint = gfx::Point(1, 1);
3760 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(test Point, renderSurfaceLayerList); 3760 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(test Point, renderSurfaceLayerList);
3761 ASSERT_TRUE(resultLayer); 3761 ASSERT_TRUE(resultLayer);
3762 EXPECT_EQ(1, resultLayer->id()); 3762 EXPECT_EQ(1, resultLayer->id());
3763 3763
3764 // At (15, 15), child1 and root are the only layers. child1 is expected to b e on top. 3764 // At (15, 15), child1 and root are the only layers. child1 is expected to b e on top.
3765 testPoint = gfx::Point(15, 15); 3765 testPoint = gfx::Point(15, 15);
3766 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3766 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3767 ASSERT_TRUE(resultLayer); 3767 ASSERT_TRUE(resultLayer);
3768 EXPECT_EQ(2, resultLayer->id()); 3768 EXPECT_EQ(2, resultLayer->id());
3769 3769
3770 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top. 3770 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top.
3771 testPoint = gfx::Point(51, 20); 3771 testPoint = gfx::Point(51, 20);
3772 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3772 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3773 ASSERT_TRUE(resultLayer); 3773 ASSERT_TRUE(resultLayer);
3774 EXPECT_EQ(3, resultLayer->id()); 3774 EXPECT_EQ(3, resultLayer->id());
3775 3775
3776 // At (80, 51), child2 and grandChild1 overlap. child2 is expected to be on top. 3776 // At (80, 51), child2 and grandChild1 overlap. child2 is expected to be on top.
3777 testPoint = gfx::Point(80, 51); 3777 testPoint = gfx::Point(80, 51);
3778 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3778 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3779 ASSERT_TRUE(resultLayer); 3779 ASSERT_TRUE(resultLayer);
3780 EXPECT_EQ(3, resultLayer->id()); 3780 EXPECT_EQ(3, resultLayer->id());
3781 3781
3782 // At (51, 51), all layers overlap each other. child2 is expected to be on t op of all other layers. 3782 // At (51, 51), all layers overlap each other. child2 is expected to be on t op of all other layers.
3783 testPoint = gfx::Point(51, 51); 3783 testPoint = gfx::Point(51, 51);
3784 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3784 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3785 ASSERT_TRUE(resultLayer); 3785 ASSERT_TRUE(resultLayer);
3786 EXPECT_EQ(3, resultLayer->id()); 3786 EXPECT_EQ(3, resultLayer->id());
3787 3787
3788 // At (20, 51), child1 and grandChild1 overlap. grandChild1 is expected to b e on top. 3788 // At (20, 51), child1 and grandChild1 overlap. grandChild1 is expected to b e on top.
3789 testPoint = gfx::Point(20, 51); 3789 testPoint = gfx::Point(20, 51);
3790 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList); 3790 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, rend erSurfaceLayerList);
3791 ASSERT_TRUE(resultLayer); 3791 ASSERT_TRUE(resultLayer);
3792 EXPECT_EQ(4, resultLayer->id()); 3792 EXPECT_EQ(4, resultLayer->id());
3793 } 3793 }
3794 3794
3795 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForEmptyLayerL ist) 3795 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForEmptyLayerL ist)
3796 { 3796 {
3797 // Hit checking on an empty renderSurfaceLayerList should return a null poin ter. 3797 // Hit checking on an empty renderSurfaceLayerList should return a null poin ter.
3798 std::vector<LayerImpl*> renderSurfaceLayerList; 3798 std::vector<LayerImpl*> renderSurfaceLayerList;
3799 3799
3800 gfx::Point testPoint(0, 0); 3800 gfx::Point testPoint(0, 0);
3801 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList); 3801 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList);
3802 EXPECT_FALSE(resultLayer); 3802 EXPECT_FALSE(resultLayer);
3803 3803
3804 testPoint = gfx::Point(10, 20); 3804 testPoint = gfx::Point(10, 20);
3805 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3805 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3806 EXPECT_FALSE(resultLayer); 3806 EXPECT_FALSE(resultLayer);
3807 } 3807 }
3808 3808
3809 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer ) 3809 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer )
3810 { 3810 {
3811 FakeImplProxy proxy; 3811 FakeImplProxy proxy;
3812 FakeLayerTreeHostImpl hostImpl(&proxy); 3812 FakeLayerTreeHostImpl hostImpl(&proxy);
3813 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 ); 3813 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 );
3814 3814
3815 gfx::Transform identityMatrix; 3815 gfx::Transform identityMatrix;
3816 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); 3816 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50));
3817 gfx::PointF anchor(0, 0); 3817 gfx::PointF anchor(0, 0);
3818 gfx::PointF position(0, 0); 3818 gfx::PointF position(0, 0);
3819 gfx::Size bounds(100, 100); 3819 gfx::Size bounds(100, 100);
3820 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false); 3820 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false);
3821 root->SetDrawsContent(true); 3821 root->SetDrawsContent(true);
3822 3822
3823 std::vector<LayerImpl*> renderSurfaceLayerList; 3823 std::vector<LayerImpl*> renderSurfaceLayerList;
3824 int dummyMaxTextureSize = 512; 3824 int dummyMaxTextureSize = 512;
3825 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3825 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3826 3826
3827 // Sanity check the scenario we just created. 3827 // Sanity check the scenario we just created.
3828 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3828 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3829 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3829 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3830 3830
3831 // Hit checking for any point should return a null pointer for a layer witho ut any touch event handler regions. 3831 // Hit checking for any point should return a null pointer for a layer witho ut any touch event handler regions.
3832 gfx::Point testPoint(11, 11); 3832 gfx::Point testPoint(11, 11);
3833 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList); 3833 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList);
3834 EXPECT_FALSE(resultLayer); 3834 EXPECT_FALSE(resultLayer);
3835 3835
3836 root->SetTouchEventHandlerRegion(touchHandlerRegion); 3836 root->SetTouchEventHandlerRegion(touchHandlerRegion);
3837 // Hit checking for a point outside the layer should return a null pointer. 3837 // Hit checking for a point outside the layer should return a null pointer.
3838 testPoint = gfx::Point(101, 101); 3838 testPoint = gfx::Point(101, 101);
3839 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3839 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3840 EXPECT_FALSE(resultLayer); 3840 EXPECT_FALSE(resultLayer);
3841 3841
3842 testPoint = gfx::Point(-1, -1); 3842 testPoint = gfx::Point(-1, -1);
3843 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3843 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3844 EXPECT_FALSE(resultLayer); 3844 EXPECT_FALSE(resultLayer);
3845 3845
3846 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer. 3846 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer.
3847 testPoint = gfx::Point(1, 1); 3847 testPoint = gfx::Point(1, 1);
3848 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3848 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3849 EXPECT_FALSE(resultLayer); 3849 EXPECT_FALSE(resultLayer);
3850 3850
3851 testPoint = gfx::Point(99, 99); 3851 testPoint = gfx::Point(99, 99);
3852 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3852 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3853 EXPECT_FALSE(resultLayer); 3853 EXPECT_FALSE(resultLayer);
3854 3854
3855 // Hit checking for a point inside the touch event handler region should ret urn the root layer. 3855 // Hit checking for a point inside the touch event handler region should ret urn the root layer.
3856 testPoint = gfx::Point(11, 11); 3856 testPoint = gfx::Point(11, 11);
3857 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3857 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3858 ASSERT_TRUE(resultLayer); 3858 ASSERT_TRUE(resultLayer);
3859 EXPECT_EQ(12345, resultLayer->id()); 3859 EXPECT_EQ(12345, resultLayer->id());
3860 3860
3861 testPoint = gfx::Point(59, 59); 3861 testPoint = gfx::Point(59, 59);
3862 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3862 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3863 ASSERT_TRUE(resultLayer); 3863 ASSERT_TRUE(resultLayer);
3864 EXPECT_EQ(12345, resultLayer->id()); 3864 EXPECT_EQ(12345, resultLayer->id());
3865 } 3865 }
3866 3866
3867 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForUninvertibl eTransform) 3867 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForUninvertibl eTransform)
3868 { 3868 {
3869 FakeImplProxy proxy; 3869 FakeImplProxy proxy;
3870 FakeLayerTreeHostImpl hostImpl(&proxy); 3870 FakeLayerTreeHostImpl hostImpl(&proxy);
3871 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 ); 3871 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 );
3872 3872
3873 gfx::Transform uninvertibleTransform; 3873 gfx::Transform uninvertibleTransform;
3874 uninvertibleTransform.matrix().setDouble(0, 0, 0); 3874 uninvertibleTransform.matrix().setDouble(0, 0, 0);
3875 uninvertibleTransform.matrix().setDouble(1, 1, 0); 3875 uninvertibleTransform.matrix().setDouble(1, 1, 0);
3876 uninvertibleTransform.matrix().setDouble(2, 2, 0); 3876 uninvertibleTransform.matrix().setDouble(2, 2, 0);
3877 uninvertibleTransform.matrix().setDouble(3, 3, 0); 3877 uninvertibleTransform.matrix().setDouble(3, 3, 0);
3878 ASSERT_FALSE(uninvertibleTransform.IsInvertible()); 3878 ASSERT_FALSE(uninvertibleTransform.IsInvertible());
3879 3879
3880 gfx::Transform identityMatrix; 3880 gfx::Transform identityMatrix;
3881 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); 3881 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50));
3882 gfx::PointF anchor(0, 0); 3882 gfx::PointF anchor(0, 0);
3883 gfx::PointF position(0, 0); 3883 gfx::PointF position(0, 0);
3884 gfx::Size bounds(100, 100); 3884 gfx::Size bounds(100, 100);
3885 setLayerPropertiesForTesting(root.get(), uninvertibleTransform, identityMatr ix, anchor, position, bounds, false); 3885 setLayerPropertiesForTesting(root.get(), uninvertibleTransform, identityMatr ix, anchor, position, bounds, false);
3886 root->SetDrawsContent(true); 3886 root->SetDrawsContent(true);
3887 root->SetTouchEventHandlerRegion(touchHandlerRegion); 3887 root->SetTouchEventHandlerRegion(touchHandlerRegion);
3888 3888
3889 std::vector<LayerImpl*> renderSurfaceLayerList; 3889 std::vector<LayerImpl*> renderSurfaceLayerList;
3890 int dummyMaxTextureSize = 512; 3890 int dummyMaxTextureSize = 512;
3891 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3891 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3892 3892
3893 // Sanity check the scenario we just created. 3893 // Sanity check the scenario we just created.
3894 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3894 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3895 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3895 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3896 ASSERT_FALSE(root->screen_space_transform().IsInvertible()); 3896 ASSERT_FALSE(root->screen_space_transform().IsInvertible());
3897 3897
3898 // Hit checking any point should not hit the touch handler region on the lay er. If the invertible matrix is 3898 // Hit checking any point should not hit the touch handler region on the lay er. If the invertible matrix is
3899 // accidentally ignored and treated like an identity, then the hit testing w ill 3899 // accidentally ignored and treated like an identity, then the hit testing w ill
3900 // incorrectly hit the layer when it shouldn't. 3900 // incorrectly hit the layer when it shouldn't.
3901 gfx::Point testPoint(1, 1); 3901 gfx::Point testPoint(1, 1);
3902 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList); 3902 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList);
3903 EXPECT_FALSE(resultLayer); 3903 EXPECT_FALSE(resultLayer);
3904 3904
3905 testPoint = gfx::Point(10, 10); 3905 testPoint = gfx::Point(10, 10);
3906 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3906 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3907 EXPECT_FALSE(resultLayer); 3907 EXPECT_FALSE(resultLayer);
3908 3908
3909 testPoint = gfx::Point(10, 30); 3909 testPoint = gfx::Point(10, 30);
3910 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3910 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3911 EXPECT_FALSE(resultLayer); 3911 EXPECT_FALSE(resultLayer);
3912 3912
3913 testPoint = gfx::Point(50, 50); 3913 testPoint = gfx::Point(50, 50);
3914 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3914 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3915 EXPECT_FALSE(resultLayer); 3915 EXPECT_FALSE(resultLayer);
3916 3916
3917 testPoint = gfx::Point(67, 48); 3917 testPoint = gfx::Point(67, 48);
3918 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3918 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3919 EXPECT_FALSE(resultLayer); 3919 EXPECT_FALSE(resultLayer);
3920 3920
3921 testPoint = gfx::Point(99, 99); 3921 testPoint = gfx::Point(99, 99);
3922 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3922 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3923 EXPECT_FALSE(resultLayer); 3923 EXPECT_FALSE(resultLayer);
3924 3924
3925 testPoint = gfx::Point(-1, -1); 3925 testPoint = gfx::Point(-1, -1);
3926 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3926 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3927 EXPECT_FALSE(resultLayer); 3927 EXPECT_FALSE(resultLayer);
3928 } 3928 }
3929 3929
3930 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSinglePosit ionedLayer) 3930 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSinglePosit ionedLayer)
3931 { 3931 {
3932 FakeImplProxy proxy; 3932 FakeImplProxy proxy;
3933 FakeLayerTreeHostImpl hostImpl(&proxy); 3933 FakeLayerTreeHostImpl hostImpl(&proxy);
3934 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 ); 3934 scoped_ptr<LayerImpl> root = LayerImpl::Create(hostImpl.active_tree(), 12345 );
3935 3935
3936 gfx::Transform identityMatrix; 3936 gfx::Transform identityMatrix;
3937 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50)); 3937 Region touchHandlerRegion(gfx::Rect(10, 10, 50, 50));
3938 gfx::PointF anchor(0, 0); 3938 gfx::PointF anchor(0, 0);
3939 gfx::PointF position(50, 50); // this layer is positioned, and hit testing s hould correctly know where the layer is located. 3939 gfx::PointF position(50, 50); // this layer is positioned, and hit testing s hould correctly know where the layer is located.
3940 gfx::Size bounds(100, 100); 3940 gfx::Size bounds(100, 100);
3941 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false); 3941 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false);
3942 root->SetDrawsContent(true); 3942 root->SetDrawsContent(true);
3943 root->SetTouchEventHandlerRegion(touchHandlerRegion); 3943 root->SetTouchEventHandlerRegion(touchHandlerRegion);
3944 3944
3945 std::vector<LayerImpl*> renderSurfaceLayerList; 3945 std::vector<LayerImpl*> renderSurfaceLayerList;
3946 int dummyMaxTextureSize = 512; 3946 int dummyMaxTextureSize = 512;
3947 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 3947 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
3948 3948
3949 // Sanity check the scenario we just created. 3949 // Sanity check the scenario we just created.
3950 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3950 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3951 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 3951 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
3952 3952
3953 // Hit checking for a point outside the layer should return a null pointer. 3953 // Hit checking for a point outside the layer should return a null pointer.
3954 gfx::Point testPoint(49, 49); 3954 gfx::Point testPoint(49, 49);
3955 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList); 3955 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList);
3956 EXPECT_FALSE(resultLayer); 3956 EXPECT_FALSE(resultLayer);
3957 3957
3958 // Even though the layer has a touch handler region containing (101, 101), i t should not be visible there since the root renderSurface would clamp it. 3958 // Even though the layer has a touch handler region containing (101, 101), i t should not be visible there since the root renderSurface would clamp it.
3959 testPoint = gfx::Point(101, 101); 3959 testPoint = gfx::Point(101, 101);
3960 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3960 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3961 EXPECT_FALSE(resultLayer); 3961 EXPECT_FALSE(resultLayer);
3962 3962
3963 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer. 3963 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer.
3964 testPoint = gfx::Point(51, 51); 3964 testPoint = gfx::Point(51, 51);
3965 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3965 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3966 EXPECT_FALSE(resultLayer); 3966 EXPECT_FALSE(resultLayer);
3967 3967
3968 // Hit checking for a point inside the touch event handler region should ret urn the root layer. 3968 // Hit checking for a point inside the touch event handler region should ret urn the root layer.
3969 testPoint = gfx::Point(61, 61); 3969 testPoint = gfx::Point(61, 61);
3970 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3970 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3971 ASSERT_TRUE(resultLayer); 3971 ASSERT_TRUE(resultLayer);
3972 EXPECT_EQ(12345, resultLayer->id()); 3972 EXPECT_EQ(12345, resultLayer->id());
3973 3973
3974 testPoint = gfx::Point(99, 99); 3974 testPoint = gfx::Point(99, 99);
3975 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 3975 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
3976 ASSERT_TRUE(resultLayer); 3976 ASSERT_TRUE(resultLayer);
3977 EXPECT_EQ(12345, resultLayer->id()); 3977 EXPECT_EQ(12345, resultLayer->id());
3978 } 3978 }
3979 3979
3980 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer WithScaledContents) 3980 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer WithScaledContents)
3981 { 3981 {
3982 // A layer's visibleContentRect is actually in the layer's content space. Th e 3982 // A layer's visibleContentRect is actually in the layer's content space. Th e
3983 // screenSpaceTransform converts from the layer's origin space to screen spa ce. This 3983 // screenSpaceTransform converts from the layer's origin space to screen spa ce. This
3984 // test makes sure that hit testing works correctly accounts for the content s scale. 3984 // test makes sure that hit testing works correctly accounts for the content s scale.
3985 // A contentsScale that is not 1 effectively forces a non-identity transform between 3985 // A contentsScale that is not 1 effectively forces a non-identity transform between
(...skipping 23 matching lines...) Expand all
4009 testLayer->SetContentBounds(gfx::Size(100, 100)); 4009 testLayer->SetContentBounds(gfx::Size(100, 100));
4010 testLayer->SetContentsScale(2, 2); 4010 testLayer->SetContentsScale(2, 2);
4011 4011
4012 testLayer->SetDrawsContent(true); 4012 testLayer->SetDrawsContent(true);
4013 testLayer->SetTouchEventHandlerRegion(touchHandlerRegion); 4013 testLayer->SetTouchEventHandlerRegion(touchHandlerRegion);
4014 root->AddChild(testLayer.Pass()); 4014 root->AddChild(testLayer.Pass());
4015 } 4015 }
4016 4016
4017 std::vector<LayerImpl*> renderSurfaceLayerList; 4017 std::vector<LayerImpl*> renderSurfaceLayerList;
4018 int dummyMaxTextureSize = 512; 4018 int dummyMaxTextureSize = 512;
4019 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 4019 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
4020 4020
4021 // Sanity check the scenario we just created. 4021 // Sanity check the scenario we just created.
4022 // The visibleContentRect for testLayer is actually 100x100, even though its layout size is 50x50, positioned at 25x25. 4022 // The visibleContentRect for testLayer is actually 100x100, even though its layout size is 50x50, positioned at 25x25.
4023 LayerImpl* testLayer = root->children()[0]; 4023 LayerImpl* testLayer = root->children()[0];
4024 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(), gfx::Size(100, 100)), testLayer->visi ble_content_rect()); 4024 EXPECT_RECT_EQ(gfx::Rect(gfx::Point(), gfx::Size(100, 100)), testLayer->visi ble_content_rect());
4025 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 4025 ASSERT_EQ(1u, renderSurfaceLayerList.size());
4026 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 4026 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
4027 4027
4028 // Hit checking for a point outside the layer should return a null pointer ( the root layer does not draw content, so it will not be tested either). 4028 // Hit checking for a point outside the layer should return a null pointer ( the root layer does not draw content, so it will not be tested either).
4029 gfx::Point testPoint(76, 76); 4029 gfx::Point testPoint(76, 76);
4030 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList); 4030 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList);
4031 EXPECT_FALSE(resultLayer); 4031 EXPECT_FALSE(resultLayer);
4032 4032
4033 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer. 4033 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer.
4034 testPoint = gfx::Point(26, 26); 4034 testPoint = gfx::Point(26, 26);
4035 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4035 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4036 EXPECT_FALSE(resultLayer); 4036 EXPECT_FALSE(resultLayer);
4037 4037
4038 testPoint = gfx::Point(34, 34); 4038 testPoint = gfx::Point(34, 34);
4039 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4039 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4040 EXPECT_FALSE(resultLayer); 4040 EXPECT_FALSE(resultLayer);
4041 4041
4042 testPoint = gfx::Point(65, 65); 4042 testPoint = gfx::Point(65, 65);
4043 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4043 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4044 EXPECT_FALSE(resultLayer); 4044 EXPECT_FALSE(resultLayer);
4045 4045
4046 testPoint = gfx::Point(74, 74); 4046 testPoint = gfx::Point(74, 74);
4047 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4047 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4048 EXPECT_FALSE(resultLayer); 4048 EXPECT_FALSE(resultLayer);
4049 4049
4050 // Hit checking for a point inside the touch event handler region should ret urn the root layer. 4050 // Hit checking for a point inside the touch event handler region should ret urn the root layer.
4051 testPoint = gfx::Point(35, 35); 4051 testPoint = gfx::Point(35, 35);
4052 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4052 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4053 ASSERT_TRUE(resultLayer); 4053 ASSERT_TRUE(resultLayer);
4054 EXPECT_EQ(12345, resultLayer->id()); 4054 EXPECT_EQ(12345, resultLayer->id());
4055 4055
4056 testPoint = gfx::Point(64, 64); 4056 testPoint = gfx::Point(64, 64);
4057 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4057 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4058 ASSERT_TRUE(resultLayer); 4058 ASSERT_TRUE(resultLayer);
4059 EXPECT_EQ(12345, resultLayer->id()); 4059 EXPECT_EQ(12345, resultLayer->id());
4060 } 4060 }
4061 4061
4062 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer WithDeviceScale) 4062 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSingleLayer WithDeviceScale)
4063 { 4063 {
4064 // The layer's deviceScalefactor and pageScaleFactor should scale the conten tRect and we should 4064 // The layer's deviceScalefactor and pageScaleFactor should scale the conten tRect and we should
4065 // be able to hit the touch handler region by scaling the points accordingly . 4065 // be able to hit the touch handler region by scaling the points accordingly .
4066 FakeImplProxy proxy; 4066 FakeImplProxy proxy;
4067 FakeLayerTreeHostImpl hostImpl(&proxy); 4067 FakeLayerTreeHostImpl hostImpl(&proxy);
(...skipping 17 matching lines...) Expand all
4085 } 4085 }
4086 4086
4087 std::vector<LayerImpl*> renderSurfaceLayerList; 4087 std::vector<LayerImpl*> renderSurfaceLayerList;
4088 int dummyMaxTextureSize = 512; 4088 int dummyMaxTextureSize = 512;
4089 float deviceScaleFactor = 3.0f; 4089 float deviceScaleFactor = 3.0f;
4090 float pageScaleFactor = 5.0f; 4090 float pageScaleFactor = 5.0f;
4091 gfx::Transform pageScaleTransform; 4091 gfx::Transform pageScaleTransform;
4092 pageScaleTransform.Scale(pageScaleFactor, pageScaleFactor); 4092 pageScaleTransform.Scale(pageScaleFactor, pageScaleFactor);
4093 root->SetImplTransform(pageScaleTransform); // Applying the pageScaleFactor through implTransform. 4093 root->SetImplTransform(pageScaleTransform); // Applying the pageScaleFactor through implTransform.
4094 gfx::Size scaledBoundsForRoot = gfx::ToCeiledSize(gfx::ScaleSize(root->bound s(), deviceScaleFactor * pageScaleFactor)); 4094 gfx::Size scaledBoundsForRoot = gfx::ToCeiledSize(gfx::ScaleSize(root->bound s(), deviceScaleFactor * pageScaleFactor));
4095 LayerTreeHostCommon::CalculateDrawProperties(root.get(), scaledBoundsForRoot , deviceScaleFactor, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, fal se); 4095 LayerTreeHostCommon::calculateDrawProperties(root.get(), scaledBoundsForRoot , deviceScaleFactor, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, fals e);
4096 4096
4097 // Sanity check the scenario we just created. 4097 // Sanity check the scenario we just created.
4098 // The visibleContentRect for testLayer is actually 100x100, even though its layout size is 50x50, positioned at 25x25. 4098 // The visibleContentRect for testLayer is actually 100x100, even though its layout size is 50x50, positioned at 25x25.
4099 LayerImpl* testLayer = root->children()[0]; 4099 LayerImpl* testLayer = root->children()[0];
4100 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 4100 ASSERT_EQ(1u, renderSurfaceLayerList.size());
4101 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 4101 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
4102 4102
4103 // Check whether the child layer fits into the root after scaled. 4103 // Check whether the child layer fits into the root after scaled.
4104 EXPECT_RECT_EQ(gfx::Rect(testLayer->content_bounds()), testLayer->visible_co ntent_rect());; 4104 EXPECT_RECT_EQ(gfx::Rect(testLayer->content_bounds()), testLayer->visible_co ntent_rect());;
4105 4105
4106 // Hit checking for a point outside the layer should return a null pointer ( the root layer does not draw content, so it will not be tested either). 4106 // Hit checking for a point outside the layer should return a null pointer ( the root layer does not draw content, so it will not be tested either).
4107 gfx::PointF testPoint(76, 76); 4107 gfx::PointF testPoint(76, 76);
4108 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor); 4108 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor);
4109 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList); 4109 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList);
4110 EXPECT_FALSE(resultLayer); 4110 EXPECT_FALSE(resultLayer);
4111 4111
4112 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer. 4112 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer.
4113 testPoint = gfx::Point(26, 26); 4113 testPoint = gfx::Point(26, 26);
4114 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor); 4114 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor);
4115 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4115 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4116 EXPECT_FALSE(resultLayer); 4116 EXPECT_FALSE(resultLayer);
4117 4117
4118 testPoint = gfx::Point(34, 34); 4118 testPoint = gfx::Point(34, 34);
4119 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor); 4119 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor);
4120 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4120 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4121 EXPECT_FALSE(resultLayer); 4121 EXPECT_FALSE(resultLayer);
4122 4122
4123 testPoint = gfx::Point(65, 65); 4123 testPoint = gfx::Point(65, 65);
4124 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor); 4124 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor);
4125 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4125 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4126 EXPECT_FALSE(resultLayer); 4126 EXPECT_FALSE(resultLayer);
4127 4127
4128 testPoint = gfx::Point(74, 74); 4128 testPoint = gfx::Point(74, 74);
4129 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor); 4129 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor);
4130 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4130 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4131 EXPECT_FALSE(resultLayer); 4131 EXPECT_FALSE(resultLayer);
4132 4132
4133 // Hit checking for a point inside the touch event handler region should ret urn the root layer. 4133 // Hit checking for a point inside the touch event handler region should ret urn the root layer.
4134 testPoint = gfx::Point(35, 35); 4134 testPoint = gfx::Point(35, 35);
4135 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor); 4135 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor);
4136 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4136 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4137 ASSERT_TRUE(resultLayer); 4137 ASSERT_TRUE(resultLayer);
4138 EXPECT_EQ(12345, resultLayer->id()); 4138 EXPECT_EQ(12345, resultLayer->id());
4139 4139
4140 testPoint = gfx::Point(64, 64); 4140 testPoint = gfx::Point(64, 64);
4141 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor); 4141 testPoint = gfx::ScalePoint(testPoint, deviceScaleFactor * pageScaleFactor);
4142 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4142 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4143 ASSERT_TRUE(resultLayer); 4143 ASSERT_TRUE(resultLayer);
4144 EXPECT_EQ(12345, resultLayer->id()); 4144 EXPECT_EQ(12345, resultLayer->id());
4145 } 4145 }
4146 4146
4147 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSimpleClipp edLayer) 4147 TEST(LayerTreeHostCommonTest, verifyHitCheckingTouchHandlerRegionsForSimpleClipp edLayer)
4148 { 4148 {
4149 // Test that hit-checking will only work for the visible portion of a layer, and not 4149 // Test that hit-checking will only work for the visible portion of a layer, and not
4150 // the entire layer bounds. Here we just test the simple axis-aligned case. 4150 // the entire layer bounds. Here we just test the simple axis-aligned case.
4151 gfx::Transform identityMatrix; 4151 gfx::Transform identityMatrix;
4152 gfx::PointF anchor(0, 0); 4152 gfx::PointF anchor(0, 0);
(...skipping 16 matching lines...) Expand all
4169 bounds = gfx::Size(300, 300); 4169 bounds = gfx::Size(300, 300);
4170 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false); 4170 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false);
4171 child->SetDrawsContent(true); 4171 child->SetDrawsContent(true);
4172 child->SetTouchEventHandlerRegion(touchHandlerRegion); 4172 child->SetTouchEventHandlerRegion(touchHandlerRegion);
4173 clippingLayer->AddChild(child.Pass()); 4173 clippingLayer->AddChild(child.Pass());
4174 root->AddChild(clippingLayer.Pass()); 4174 root->AddChild(clippingLayer.Pass());
4175 } 4175 }
4176 4176
4177 std::vector<LayerImpl*> renderSurfaceLayerList; 4177 std::vector<LayerImpl*> renderSurfaceLayerList;
4178 int dummyMaxTextureSize = 512; 4178 int dummyMaxTextureSize = 512;
4179 LayerTreeHostCommon::CalculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList, false); 4179 LayerTreeHostCommon::calculateDrawProperties(root.get(), root->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList, false);
4180 4180
4181 // Sanity check the scenario we just created. 4181 // Sanity check the scenario we just created.
4182 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 4182 ASSERT_EQ(1u, renderSurfaceLayerList.size());
4183 ASSERT_EQ(1u, root->render_surface()->layer_list().size()); 4183 ASSERT_EQ(1u, root->render_surface()->layer_list().size());
4184 ASSERT_EQ(456, root->render_surface()->layer_list()[0]->id()); 4184 ASSERT_EQ(456, root->render_surface()->layer_list()[0]->id());
4185 4185
4186 // Hit checking for a point outside the layer should return a null pointer. 4186 // Hit checking for a point outside the layer should return a null pointer.
4187 // Despite the child layer being very large, it should be clipped to the roo t layer's bounds. 4187 // Despite the child layer being very large, it should be clipped to the roo t layer's bounds.
4188 gfx::Point testPoint(24, 24); 4188 gfx::Point testPoint(24, 24);
4189 LayerImpl* resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList); 4189 LayerImpl* resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTou chHandlerRegion(testPoint, renderSurfaceLayerList);
4190 EXPECT_FALSE(resultLayer); 4190 EXPECT_FALSE(resultLayer);
4191 4191
4192 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer. 4192 // Hit checking for a point inside the layer, but outside the touch handler region should return a null pointer.
4193 testPoint = gfx::Point(35, 35); 4193 testPoint = gfx::Point(35, 35);
4194 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4194 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4195 EXPECT_FALSE(resultLayer); 4195 EXPECT_FALSE(resultLayer);
4196 4196
4197 testPoint = gfx::Point(74, 74); 4197 testPoint = gfx::Point(74, 74);
4198 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4198 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4199 EXPECT_FALSE(resultLayer); 4199 EXPECT_FALSE(resultLayer);
4200 4200
4201 // Hit checking for a point inside the touch event handler region should ret urn the root layer. 4201 // Hit checking for a point inside the touch event handler region should ret urn the root layer.
4202 testPoint = gfx::Point(25, 25); 4202 testPoint = gfx::Point(25, 25);
4203 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4203 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4204 ASSERT_TRUE(resultLayer); 4204 ASSERT_TRUE(resultLayer);
4205 EXPECT_EQ(456, resultLayer->id()); 4205 EXPECT_EQ(456, resultLayer->id());
4206 4206
4207 testPoint = gfx::Point(34, 34); 4207 testPoint = gfx::Point(34, 34);
4208 resultLayer = LayerTreeHostCommon::FindLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList); 4208 resultLayer = LayerTreeHostCommon::findLayerThatIsHitByPointInTouchHandlerRe gion(testPoint, renderSurfaceLayerList);
4209 ASSERT_TRUE(resultLayer); 4209 ASSERT_TRUE(resultLayer);
4210 EXPECT_EQ(456, resultLayer->id()); 4210 EXPECT_EQ(456, resultLayer->id());
4211 } 4211 }
4212 4212
4213 class NoScaleContentLayer : public ContentLayer 4213 class NoScaleContentLayer : public ContentLayer
4214 { 4214 {
4215 public: 4215 public:
4216 static scoped_refptr<NoScaleContentLayer> Create(ContentLayerClient* client) { return make_scoped_refptr(new NoScaleContentLayer(client)); } 4216 static scoped_refptr<NoScaleContentLayer> Create(ContentLayerClient* client) { return make_scoped_refptr(new NoScaleContentLayer(client)); }
4217 4217
4218 virtual void CalculateContentsScale( 4218 virtual void CalculateContentsScale(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
4264 parent->AddChild(child); 4264 parent->AddChild(child);
4265 parent->AddChild(childEmpty); 4265 parent->AddChild(childEmpty);
4266 parent->AddChild(childNoScale); 4266 parent->AddChild(childNoScale);
4267 4267
4268 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 4268 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
4269 int dummyMaxTextureSize = 512; 4269 int dummyMaxTextureSize = 512;
4270 4270
4271 const double deviceScaleFactor = 2.5; 4271 const double deviceScaleFactor = 2.5;
4272 const double pageScaleFactor = 1; 4272 const double pageScaleFactor = 1;
4273 4273
4274 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4274 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4275 4275
4276 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, parent); 4276 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, parent);
4277 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, child); 4277 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, child);
4278 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childEmpty); 4278 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childEmpty);
4279 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale); 4279 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale);
4280 4280
4281 EXPECT_EQ(1u, renderSurfaceLayerList.size()); 4281 EXPECT_EQ(1u, renderSurfaceLayerList.size());
4282 4282
4283 // Verify parent transforms 4283 // Verify parent transforms
4284 gfx::Transform expectedParentTransform; 4284 gfx::Transform expectedParentTransform;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
4359 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 4359 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
4360 int dummyMaxTextureSize = 512; 4360 int dummyMaxTextureSize = 512;
4361 4361
4362 const double deviceScaleFactor = 2.5; 4362 const double deviceScaleFactor = 2.5;
4363 const double pageScaleFactor = 3; 4363 const double pageScaleFactor = 3;
4364 4364
4365 gfx::Transform pageScaleTransform; 4365 gfx::Transform pageScaleTransform;
4366 pageScaleTransform.Scale(pageScaleFactor, pageScaleFactor); 4366 pageScaleTransform.Scale(pageScaleFactor, pageScaleFactor);
4367 parent->SetImplTransform(pageScaleTransform); 4367 parent->SetImplTransform(pageScaleTransform);
4368 4368
4369 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4369 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4370 4370
4371 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, parent); 4371 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, parent);
4372 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, perspectiveSur face); 4372 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, perspectiveSur face);
4373 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, scaleSurface); 4373 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, scaleSurface);
4374 4374
4375 EXPECT_EQ(3u, renderSurfaceLayerList.size()); 4375 EXPECT_EQ(3u, renderSurfaceLayerList.size());
4376 4376
4377 gfx::Transform expectedParentDrawTransform; 4377 gfx::Transform expectedParentDrawTransform;
4378 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentDrawTransform, parent->draw_tr ansform()); 4378 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentDrawTransform, parent->draw_tr ansform());
4379 4379
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4418 4418
4419 parent->AddChild(child); 4419 parent->AddChild(child);
4420 parent->AddChild(childNoScale); 4420 parent->AddChild(childNoScale);
4421 4421
4422 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 4422 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
4423 int dummyMaxTextureSize = 512; 4423 int dummyMaxTextureSize = 512;
4424 4424
4425 const float deviceScaleFactor = 1.7f; 4425 const float deviceScaleFactor = 1.7f;
4426 const float pageScaleFactor = 1; 4426 const float pageScaleFactor = 1;
4427 4427
4428 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4428 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4429 4429
4430 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, parent); 4430 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, parent);
4431 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, child); 4431 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, child);
4432 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale); 4432 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale);
4433 4433
4434 EXPECT_EQ(1u, renderSurfaceLayerList.size()); 4434 EXPECT_EQ(1u, renderSurfaceLayerList.size());
4435 4435
4436 // Verify parent transforms 4436 // Verify parent transforms
4437 gfx::Transform expectedParentTransform; 4437 gfx::Transform expectedParentTransform;
4438 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->screen_spac e_transform()); 4438 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->screen_spac e_transform());
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
4523 int dummyMaxTextureSize = 512; 4523 int dummyMaxTextureSize = 512;
4524 4524
4525 double deviceScaleFactor = 2.5; 4525 double deviceScaleFactor = 2.5;
4526 double pageScaleFactor = 1.5; 4526 double pageScaleFactor = 1.5;
4527 4527
4528 // FIXME: Remove this when pageScaleFactor is applied in the compositor. 4528 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
4529 gfx::Transform pageScaleMatrix; 4529 gfx::Transform pageScaleMatrix;
4530 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor); 4530 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor);
4531 parent->SetSublayerTransform(pageScaleMatrix); 4531 parent->SetSublayerTransform(pageScaleMatrix);
4532 4532
4533 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4533 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4534 4534
4535 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); 4535 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent);
4536 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, childScale); 4536 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, childScale);
4537 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, childEmpty); 4537 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, childEmpty);
4538 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale); 4538 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale);
4539 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * fixedRasterSc ale, childNoAutoScale); 4539 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * fixedRasterSc ale, childNoAutoScale);
4540 4540
4541 // The parent is scaled up and shouldn't need to scale during draw. The chil d that can scale its contents should 4541 // The parent is scaled up and shouldn't need to scale during draw. The chil d that can scale its contents should
4542 // also not need to scale during draw. This shouldn't change if the child ha s empty bounds. The other children should. 4542 // also not need to scale during draw. This shouldn't change if the child ha s empty bounds. The other children should.
4543 EXPECT_FLOAT_EQ(1, parent->draw_transform().matrix().getDouble(0, 0)); 4543 EXPECT_FLOAT_EQ(1, parent->draw_transform().matrix().getDouble(0, 0));
(...skipping 10 matching lines...) Expand all
4554 // If the deviceScaleFactor or pageScaleFactor changes, then it should be up dated using the initial transform as the rasterScale. 4554 // If the deviceScaleFactor or pageScaleFactor changes, then it should be up dated using the initial transform as the rasterScale.
4555 deviceScaleFactor = 2.25; 4555 deviceScaleFactor = 2.25;
4556 pageScaleFactor = 1.25; 4556 pageScaleFactor = 1.25;
4557 4557
4558 // FIXME: Remove this when pageScaleFactor is applied in the compositor. 4558 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
4559 pageScaleMatrix = identityMatrix; 4559 pageScaleMatrix = identityMatrix;
4560 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor); 4560 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor);
4561 parent->SetSublayerTransform(pageScaleMatrix); 4561 parent->SetSublayerTransform(pageScaleMatrix);
4562 4562
4563 renderSurfaceLayerList.clear(); 4563 renderSurfaceLayerList.clear();
4564 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4564 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4565 4565
4566 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); 4566 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent);
4567 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, childScale); 4567 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, childScale);
4568 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, childEmpty); 4568 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, childEmpty);
4569 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale); 4569 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale);
4570 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * fixedRasterSc ale, childNoAutoScale); 4570 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * fixedRasterSc ale, childNoAutoScale);
4571 4571
4572 // If the transform changes, we expect the rasterScale to be reset to 1.0. 4572 // If the transform changes, we expect the rasterScale to be reset to 1.0.
4573 const double secondChildScale = 1.75; 4573 const double secondChildScale = 1.75;
4574 childScaleMatrix.Scale(secondChildScale / initialChildScale, secondChildScal e / initialChildScale); 4574 childScaleMatrix.Scale(secondChildScale / initialChildScale, secondChildScal e / initialChildScale);
4575 childScale->SetTransform(childScaleMatrix); 4575 childScale->SetTransform(childScaleMatrix);
4576 childEmpty->SetTransform(childScaleMatrix); 4576 childEmpty->SetTransform(childScaleMatrix);
4577 4577
4578 renderSurfaceLayerList.clear(); 4578 renderSurfaceLayerList.clear();
4579 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4579 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4580 4580
4581 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); 4581 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent);
4582 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childScale); 4582 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childScale);
4583 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childEmpty); 4583 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childEmpty);
4584 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale); 4584 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale);
4585 4585
4586 // If the deviceScaleFactor or pageScaleFactor changes, then it should be up dated, but still using 1.0 as the rasterScale. 4586 // If the deviceScaleFactor or pageScaleFactor changes, then it should be up dated, but still using 1.0 as the rasterScale.
4587 deviceScaleFactor = 2.75; 4587 deviceScaleFactor = 2.75;
4588 pageScaleFactor = 1.75; 4588 pageScaleFactor = 1.75;
4589 4589
4590 // FIXME: Remove this when pageScaleFactor is applied in the compositor. 4590 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
4591 pageScaleMatrix = identityMatrix; 4591 pageScaleMatrix = identityMatrix;
4592 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor); 4592 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor);
4593 parent->SetSublayerTransform(pageScaleMatrix); 4593 parent->SetSublayerTransform(pageScaleMatrix);
4594 4594
4595 renderSurfaceLayerList.clear(); 4595 renderSurfaceLayerList.clear();
4596 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4596 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4597 4597
4598 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); 4598 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent);
4599 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childScale); 4599 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childScale);
4600 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childEmpty); 4600 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor, childEmpty);
4601 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale); 4601 EXPECT_CONTENTS_SCALE_EQ(1, childNoScale);
4602 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * fixedRasterSc ale, childNoAutoScale); 4602 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * fixedRasterSc ale, childNoAutoScale);
4603 } 4603 }
4604 4604
4605 TEST(LayerTreeHostCommonTest, verifySmallContentsScale) 4605 TEST(LayerTreeHostCommonTest, verifySmallContentsScale)
4606 { 4606 {
(...skipping 24 matching lines...) Expand all
4631 int dummyMaxTextureSize = 512; 4631 int dummyMaxTextureSize = 512;
4632 4632
4633 double deviceScaleFactor = 2.5; 4633 double deviceScaleFactor = 2.5;
4634 double pageScaleFactor = 0.01; 4634 double pageScaleFactor = 0.01;
4635 4635
4636 // FIXME: Remove this when pageScaleFactor is applied in the compositor. 4636 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
4637 gfx::Transform pageScaleMatrix; 4637 gfx::Transform pageScaleMatrix;
4638 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor); 4638 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor);
4639 parent->SetSublayerTransform(pageScaleMatrix); 4639 parent->SetSublayerTransform(pageScaleMatrix);
4640 4640
4641 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4641 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4642 4642
4643 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); 4643 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent);
4644 // The child's scale is < 1, so we should not save and use that scale factor . 4644 // The child's scale is < 1, so we should not save and use that scale factor .
4645 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * 1, childScale ); 4645 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * 1, childScale );
4646 4646
4647 // When chilld's total scale becomes >= 1, we should save and use that scale factor. 4647 // When chilld's total scale becomes >= 1, we should save and use that scale factor.
4648 childScaleMatrix.MakeIdentity(); 4648 childScaleMatrix.MakeIdentity();
4649 const double finalChildScale = 0.75; 4649 const double finalChildScale = 0.75;
4650 childScaleMatrix.Scale(finalChildScale, finalChildScale); 4650 childScaleMatrix.Scale(finalChildScale, finalChildScale);
4651 childScale->SetTransform(childScaleMatrix); 4651 childScale->SetTransform(childScaleMatrix);
4652 4652
4653 renderSurfaceLayerList.clear(); 4653 renderSurfaceLayerList.clear();
4654 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4654 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4655 4655
4656 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); 4656 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent);
4657 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * finalChildScale, childScale); 4657 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * finalChildScale, childScale);
4658 } 4658 }
4659 4659
4660 TEST(LayerTreeHostCommonTest, verifyContentsScaleForSurfaces) 4660 TEST(LayerTreeHostCommonTest, verifyContentsScaleForSurfaces)
4661 { 4661 {
4662 MockContentLayerClient delegate; 4662 MockContentLayerClient delegate;
4663 gfx::Transform identityMatrix; 4663 gfx::Transform identityMatrix;
4664 4664
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
4728 int dummyMaxTextureSize = 512; 4728 int dummyMaxTextureSize = 512;
4729 4729
4730 double deviceScaleFactor = 5; 4730 double deviceScaleFactor = 5;
4731 double pageScaleFactor = 7; 4731 double pageScaleFactor = 7;
4732 4732
4733 // FIXME: Remove this when pageScaleFactor is applied in the compositor. 4733 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
4734 gfx::Transform pageScaleMatrix; 4734 gfx::Transform pageScaleMatrix;
4735 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor); 4735 pageScaleMatrix.Scale(pageScaleFactor, pageScaleFactor);
4736 parent->SetSublayerTransform(pageScaleMatrix); 4736 parent->SetSublayerTransform(pageScaleMatrix);
4737 4737
4738 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, &renderSurfaceL ayerList); 4738 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, false, renderSurfaceLa yerList);
4739 4739
4740 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent); 4740 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * initialParentScale, parent);
4741 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, surfaceScale); 4741 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale, surfaceScale);
4742 EXPECT_CONTENTS_SCALE_EQ(1, surfaceNoScale); 4742 EXPECT_CONTENTS_SCALE_EQ(1, surfaceNoScale);
4743 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * fixedRasterSc ale, surfaceNoAutoScale); 4743 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * fixedRasterSc ale, surfaceNoAutoScale);
4744 4744
4745 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale * initialChildScale, surfaceScaleChildScale); 4745 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale * initialChildScale, surfaceScaleChildScale);
4746 EXPECT_CONTENTS_SCALE_EQ(1, surfaceScaleChildNoScale); 4746 EXPECT_CONTENTS_SCALE_EQ(1, surfaceScaleChildNoScale);
4747 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale * initialChildScale, surfaceNoScaleChildScale); 4747 EXPECT_CONTENTS_SCALE_EQ(deviceScaleFactor * pageScaleFactor * initialParent Scale * initialChildScale * initialChildScale, surfaceNoScaleChildScale);
4748 EXPECT_CONTENTS_SCALE_EQ(1, surfaceNoScaleChildNoScale); 4748 EXPECT_CONTENTS_SCALE_EQ(1, surfaceNoScaleChildNoScale);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
4822 setLayerPropertiesForTesting(childScale.get(), childScaleMatrix, identityMat rix, gfx::PointF(0, 0), gfx::PointF(2, 2), gfx::Size(10, 10), true); 4822 setLayerPropertiesForTesting(childScale.get(), childScaleMatrix, identityMat rix, gfx::PointF(0, 0), gfx::PointF(2, 2), gfx::Size(10, 10), true);
4823 4823
4824 parent->AddChild(childScale); 4824 parent->AddChild(childScale);
4825 4825
4826 // Now put an animating transform on child. 4826 // Now put an animating transform on child.
4827 int animationId = AddAnimatedTransformToController(childScale->layer_animati on_controller(), 10, 30, 0); 4827 int animationId = AddAnimatedTransformToController(childScale->layer_animati on_controller(), 10, 30, 0);
4828 4828
4829 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 4829 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
4830 int dummyMaxTextureSize = 512; 4830 int dummyMaxTextureSize = 512;
4831 4831
4832 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 4832 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
4833 4833
4834 EXPECT_CONTENTS_SCALE_EQ(initialParentScale, parent); 4834 EXPECT_CONTENTS_SCALE_EQ(initialParentScale, parent);
4835 // The layers with animating transforms should not compute a contentsScale o ther than 1 until they finish animating. 4835 // The layers with animating transforms should not compute a contentsScale o ther than 1 until they finish animating.
4836 EXPECT_CONTENTS_SCALE_EQ(1, childScale); 4836 EXPECT_CONTENTS_SCALE_EQ(1, childScale);
4837 4837
4838 // Remove the animation, now it can save a raster scale. 4838 // Remove the animation, now it can save a raster scale.
4839 childScale->layer_animation_controller()->RemoveAnimation(animationId); 4839 childScale->layer_animation_controller()->RemoveAnimation(animationId);
4840 4840
4841 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 4841 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
4842 4842
4843 EXPECT_CONTENTS_SCALE_EQ(initialParentScale, parent); 4843 EXPECT_CONTENTS_SCALE_EQ(initialParentScale, parent);
4844 // The layers with animating transforms should not compute a contentsScale o ther than 1 until they finish animating. 4844 // The layers with animating transforms should not compute a contentsScale o ther than 1 until they finish animating.
4845 EXPECT_CONTENTS_SCALE_EQ(initialParentScale * initialChildScale, childScale) ; 4845 EXPECT_CONTENTS_SCALE_EQ(initialParentScale * initialChildScale, childScale) ;
4846 } 4846 }
4847 4847
4848 4848
4849 TEST(LayerTreeHostCommonTest, verifyRenderSurfaceTransformsInHighDPI) 4849 TEST(LayerTreeHostCommonTest, verifyRenderSurfaceTransformsInHighDPI)
4850 { 4850 {
4851 MockContentLayerClient delegate; 4851 MockContentLayerClient delegate;
(...skipping 16 matching lines...) Expand all
4868 setLayerPropertiesForTesting(duplicateChildNonOwner.get(), identityMatrix, i dentityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), true); 4868 setLayerPropertiesForTesting(duplicateChildNonOwner.get(), identityMatrix, i dentityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), true);
4869 4869
4870 parent->AddChild(child); 4870 parent->AddChild(child);
4871 child->AddChild(duplicateChildNonOwner); 4871 child->AddChild(duplicateChildNonOwner);
4872 child->SetReplicaLayer(replica.get()); 4872 child->SetReplicaLayer(replica.get());
4873 4873
4874 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 4874 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
4875 int dummyMaxTextureSize = 512; 4875 int dummyMaxTextureSize = 512;
4876 4876
4877 const double deviceScaleFactor = 1.5; 4877 const double deviceScaleFactor = 1.5;
4878 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 4878 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
4879 4879
4880 // We should have two render surfaces. The root's render surface and child's 4880 // We should have two render surfaces. The root's render surface and child's
4881 // render surface (it needs one because it has a replica layer). 4881 // render surface (it needs one because it has a replica layer).
4882 EXPECT_EQ(2u, renderSurfaceLayerList.size()); 4882 EXPECT_EQ(2u, renderSurfaceLayerList.size());
4883 4883
4884 gfx::Transform expectedParentTransform; 4884 gfx::Transform expectedParentTransform;
4885 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->screen_spac e_transform()); 4885 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->screen_spac e_transform());
4886 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->draw_transf orm()); 4886 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->draw_transf orm());
4887 4887
4888 gfx::Transform expectedDrawTransform; 4888 gfx::Transform expectedDrawTransform;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
4946 setLayerPropertiesForTesting(duplicateChildNonOwner.get(), identityMatrix, i dentityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(13, 11), true); 4946 setLayerPropertiesForTesting(duplicateChildNonOwner.get(), identityMatrix, i dentityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(13, 11), true);
4947 4947
4948 parent->AddChild(child); 4948 parent->AddChild(child);
4949 child->AddChild(duplicateChildNonOwner); 4949 child->AddChild(duplicateChildNonOwner);
4950 child->SetReplicaLayer(replica.get()); 4950 child->SetReplicaLayer(replica.get());
4951 4951
4952 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; 4952 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList;
4953 int dummyMaxTextureSize = 512; 4953 int dummyMaxTextureSize = 512;
4954 4954
4955 const float deviceScaleFactor = 1.7f; 4955 const float deviceScaleFactor = 1.7f;
4956 LayerTreeHostCommon::CalculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, 1, dummyMaxTextureSize, false, &renderSurfaceLayerList); 4956 LayerTreeHostCommon::calculateDrawProperties(parent.get(), parent->bounds(), deviceScaleFactor, 1, dummyMaxTextureSize, false, renderSurfaceLayerList);
4957 4957
4958 // We should have two render surfaces. The root's render surface and child's 4958 // We should have two render surfaces. The root's render surface and child's
4959 // render surface (it needs one because it has a replica layer). 4959 // render surface (it needs one because it has a replica layer).
4960 EXPECT_EQ(2u, renderSurfaceLayerList.size()); 4960 EXPECT_EQ(2u, renderSurfaceLayerList.size());
4961 4961
4962 gfx::Transform identityTransform; 4962 gfx::Transform identityTransform;
4963 4963
4964 EXPECT_TRANSFORMATION_MATRIX_EQ(identityTransform, parent->screen_space_tran sform()); 4964 EXPECT_TRANSFORMATION_MATRIX_EQ(identityTransform, parent->screen_space_tran sform());
4965 EXPECT_TRANSFORMATION_MATRIX_EQ(identityTransform, parent->draw_transform()) ; 4965 EXPECT_TRANSFORMATION_MATRIX_EQ(identityTransform, parent->draw_transform()) ;
4966 EXPECT_TRANSFORMATION_MATRIX_EQ(identityTransform, child->draw_transform()); 4966 EXPECT_TRANSFORMATION_MATRIX_EQ(identityTransform, child->draw_transform());
(...skipping 23 matching lines...) Expand all
4990 scoped_refptr<Layer> grandChild = Layer::Create(); 4990 scoped_refptr<Layer> grandChild = Layer::Create();
4991 scoped_refptr<Layer> maskLayer = Layer::Create(); 4991 scoped_refptr<Layer> maskLayer = Layer::Create();
4992 scoped_refptr<Layer> replicaLayer = Layer::Create(); 4992 scoped_refptr<Layer> replicaLayer = Layer::Create();
4993 4993
4994 grandChild->SetReplicaLayer(replicaLayer.get()); 4994 grandChild->SetReplicaLayer(replicaLayer.get());
4995 child->AddChild(grandChild.get()); 4995 child->AddChild(grandChild.get());
4996 child->SetMaskLayer(maskLayer.get()); 4996 child->SetMaskLayer(maskLayer.get());
4997 root->AddChild(child.get()); 4997 root->AddChild(child.get());
4998 4998
4999 int nonexistentId = -1; 4999 int nonexistentId = -1;
5000 EXPECT_EQ(root, LayerTreeHostCommon::FindLayerInSubtree(root.get(), root->id ())); 5000 EXPECT_EQ(root, LayerTreeHostCommon::findLayerInSubtree(root.get(), root->id ()));
5001 EXPECT_EQ(child, LayerTreeHostCommon::FindLayerInSubtree(root.get(), child-> id())); 5001 EXPECT_EQ(child, LayerTreeHostCommon::findLayerInSubtree(root.get(), child-> id()));
5002 EXPECT_EQ(grandChild, LayerTreeHostCommon::FindLayerInSubtree(root.get(), gr andChild->id())); 5002 EXPECT_EQ(grandChild, LayerTreeHostCommon::findLayerInSubtree(root.get(), gr andChild->id()));
5003 EXPECT_EQ(maskLayer, LayerTreeHostCommon::FindLayerInSubtree(root.get(), mas kLayer->id())); 5003 EXPECT_EQ(maskLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(), mas kLayer->id()));
5004 EXPECT_EQ(replicaLayer, LayerTreeHostCommon::FindLayerInSubtree(root.get(), replicaLayer->id())); 5004 EXPECT_EQ(replicaLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(), replicaLayer->id()));
5005 EXPECT_EQ(0, LayerTreeHostCommon::FindLayerInSubtree(root.get(), nonexistent Id)); 5005 EXPECT_EQ(0, LayerTreeHostCommon::findLayerInSubtree(root.get(), nonexistent Id));
5006 } 5006 }
5007 5007
5008 TEST(LayerTreeHostCommonTest, verifyTransparentChildRenderSurfaceCreation) 5008 TEST(LayerTreeHostCommonTest, verifyTransparentChildRenderSurfaceCreation)
5009 { 5009 {
5010 scoped_refptr<Layer> root = Layer::Create(); 5010 scoped_refptr<Layer> root = Layer::Create();
5011 scoped_refptr<Layer> child = Layer::Create(); 5011 scoped_refptr<Layer> child = Layer::Create();
5012 scoped_refptr<LayerWithForcedDrawsContent> grandChild = make_scoped_refptr(n ew LayerWithForcedDrawsContent()); 5012 scoped_refptr<LayerWithForcedDrawsContent> grandChild = make_scoped_refptr(n ew LayerWithForcedDrawsContent());
5013 5013
5014 const gfx::Transform identityMatrix; 5014 const gfx::Transform identityMatrix;
5015 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, gfx ::PointF(), gfx::PointF(), gfx::Size(100, 100), false); 5015 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, gfx ::PointF(), gfx::PointF(), gfx::Size(100, 100), false);
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
5143 EXPECT_EQ(m_canUseLCDText, m_grandChild->can_use_lcd_text()); 5143 EXPECT_EQ(m_canUseLCDText, m_grandChild->can_use_lcd_text());
5144 } 5144 }
5145 5145
5146 INSTANTIATE_TEST_CASE_P(LayerTreeHostCommonTest, 5146 INSTANTIATE_TEST_CASE_P(LayerTreeHostCommonTest,
5147 LCDTextTest, 5147 LCDTextTest,
5148 testing::Combine(testing::Bool(), 5148 testing::Combine(testing::Bool(),
5149 testing::Bool())); 5149 testing::Bool()));
5150 5150
5151 } // namespace 5151 } // namespace
5152 } // namespace cc 5152 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_common.cc ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698