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

Side by Side Diff: cc/CCLayerTreeHostCommonTest.cpp

Issue 10915313: cc: Apply the layer's initial CSS scale to the contentsScale to render text at the right resolution. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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
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 "config.h" 5 #include "config.h"
6 6
7 #include "CCLayerTreeHostCommon.h" 7 #include "CCLayerTreeHostCommon.h"
8 8
9 #include "CCAnimationTestCommon.h" 9 #include "CCAnimationTestCommon.h"
10 #include "CCGeometryTestUtils.h" 10 #include "CCGeometryTestUtils.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 { 44 {
45 setLayerPropertiesForTesting<LayerChromium>(layer, transform, sublayerTransf orm, anchor, position, bounds, preserves3D); 45 setLayerPropertiesForTesting<LayerChromium>(layer, transform, sublayerTransf orm, anchor, position, bounds, preserves3D);
46 } 46 }
47 47
48 void setLayerPropertiesForTesting(CCLayerImpl* layer, const WebTransformationMat rix& transform, const WebTransformationMatrix& sublayerTransform, const FloatPoi nt& anchor, const FloatPoint& position, const IntSize& bounds, bool preserves3D) 48 void setLayerPropertiesForTesting(CCLayerImpl* layer, const WebTransformationMat rix& transform, const WebTransformationMatrix& sublayerTransform, const FloatPoi nt& anchor, const FloatPoint& position, const IntSize& bounds, bool preserves3D)
49 { 49 {
50 setLayerPropertiesForTesting<CCLayerImpl>(layer, transform, sublayerTransfor m, anchor, position, bounds, preserves3D); 50 setLayerPropertiesForTesting<CCLayerImpl>(layer, transform, sublayerTransfor m, anchor, position, bounds, preserves3D);
51 layer->setContentBounds(bounds); 51 layer->setContentBounds(bounds);
52 } 52 }
53 53
54 void executeCalculateDrawTransformsAndVisibility(LayerChromium* rootLayer, float deviceScaleFactor = 1) 54 void executeCalculateDrawTransformsAndVisibility(LayerChromium* rootLayer, float deviceScaleFactor = 1, float pageScaleFactor = 1)
55 { 55 {
56 WebTransformationMatrix identityMatrix; 56 WebTransformationMatrix identityMatrix;
57 Vector<RefPtr<LayerChromium> > dummyRenderSurfaceLayerList; 57 Vector<RefPtr<LayerChromium> > dummyRenderSurfaceLayerList;
58 int dummyMaxTextureSize = 512; 58 int dummyMaxTextureSize = 512;
59 IntSize deviceViewportSize = IntSize(rootLayer->bounds().width() * deviceSca leFactor, rootLayer->bounds().height() * deviceScaleFactor); 59 IntSize deviceViewportSize = IntSize(rootLayer->bounds().width() * deviceSca leFactor, 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 ASSERT(!rootLayer->bounds().isEmpty()); 62 ASSERT(!rootLayer->bounds().isEmpty());
63 CCLayerTreeHostCommon::calculateDrawTransforms(rootLayer, deviceViewportSize , deviceScaleFactor, dummyMaxTextureSize, dummyRenderSurfaceLayerList); 63 CCLayerTreeHostCommon::calculateDrawTransforms(rootLayer, deviceViewportSize , deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, dummyRenderSurfaceLay erList);
64 CCLayerTreeHostCommon::calculateVisibleRects(dummyRenderSurfaceLayerList); 64 CCLayerTreeHostCommon::calculateVisibleRects(dummyRenderSurfaceLayerList);
65 } 65 }
66 66
67 void executeCalculateDrawTransformsAndVisibility(CCLayerImpl* rootLayer, float d eviceScaleFactor = 1) 67 void executeCalculateDrawTransformsAndVisibility(CCLayerImpl* rootLayer, float d eviceScaleFactor = 1, float pageScaleFactor = 1)
68 { 68 {
69 // Note: this version skips layer sorting. 69 // Note: this version skips layer sorting.
70 70
71 WebTransformationMatrix identityMatrix; 71 WebTransformationMatrix identityMatrix;
72 Vector<CCLayerImpl*> dummyRenderSurfaceLayerList; 72 Vector<CCLayerImpl*> dummyRenderSurfaceLayerList;
73 int dummyMaxTextureSize = 512; 73 int dummyMaxTextureSize = 512;
74 IntSize deviceViewportSize = IntSize(rootLayer->bounds().width() * deviceSca leFactor, rootLayer->bounds().height() * deviceScaleFactor); 74 IntSize deviceViewportSize = IntSize(rootLayer->bounds().width() * deviceSca leFactor, rootLayer->bounds().height() * deviceScaleFactor);
75 75
76 // We are probably not testing what is intended if the rootLayer bounds are empty. 76 // We are probably not testing what is intended if the rootLayer bounds are empty.
77 ASSERT(!rootLayer->bounds().isEmpty()); 77 ASSERT(!rootLayer->bounds().isEmpty());
78 CCLayerTreeHostCommon::calculateDrawTransforms(rootLayer, deviceViewportSize , deviceScaleFactor, 0, dummyMaxTextureSize, dummyRenderSurfaceLayerList); 78 CCLayerTreeHostCommon::calculateDrawTransforms(rootLayer, deviceViewportSize , deviceScaleFactor, pageScaleFactor, 0, dummyMaxTextureSize, dummyRenderSurface LayerList);
79 CCLayerTreeHostCommon::calculateVisibleRects(dummyRenderSurfaceLayerList); 79 CCLayerTreeHostCommon::calculateVisibleRects(dummyRenderSurfaceLayerList);
80 } 80 }
81 81
82 WebTransformationMatrix remove3DComponentOfMatrix(const WebTransformationMatrix& mat) 82 WebTransformationMatrix remove3DComponentOfMatrix(const WebTransformationMatrix& mat)
83 { 83 {
84 WebTransformationMatrix ret = mat; 84 WebTransformationMatrix ret = mat;
85 ret.setM13(0); 85 ret.setM13(0);
86 ret.setM23(0); 86 ret.setM23(0);
87 ret.setM31(0); 87 ret.setM31(0);
88 ret.setM32(0); 88 ret.setM32(0);
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 setLayerPropertiesForTesting(renderSurface1.get(), identityMatrix, identityM atrix, FloatPoint::zero(), FloatPoint::zero(), IntSize(10, 10), false); 647 setLayerPropertiesForTesting(renderSurface1.get(), identityMatrix, identityM atrix, FloatPoint::zero(), FloatPoint::zero(), IntSize(10, 10), false);
648 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint::zero(), FloatPoint(30, 30), IntSize(10, 10), false); 648 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint::zero(), FloatPoint(30, 30), IntSize(10, 10), false);
649 649
650 parent->addChild(renderSurface1); 650 parent->addChild(renderSurface1);
651 parent->setMasksToBounds(true); 651 parent->setMasksToBounds(true);
652 renderSurface1->addChild(child); 652 renderSurface1->addChild(child);
653 renderSurface1->setForceRenderSurface(true); 653 renderSurface1->setForceRenderSurface(true);
654 654
655 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 655 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
656 int dummyMaxTextureSize = 512; 656 int dummyMaxTextureSize = 512;
657 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 657 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
658 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 658 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
659 659
660 // The child layer's content is entirely outside the parent's clip rect, so the intermediate 660 // The child layer's content is entirely outside the parent's clip rect, so the intermediate
661 // render surface should not be listed here, even if it was forced to be cre ated. Render surfaces without children or visible 661 // render surface should not be listed here, even if it was forced to be cre ated. Render surfaces without children or visible
662 // content are unexpected at draw time (e.g. we might try to create a conten t texture of size 0). 662 // content are unexpected at draw time (e.g. we might try to create a conten t texture of size 0).
663 ASSERT_TRUE(parent->renderSurface()); 663 ASSERT_TRUE(parent->renderSurface());
664 ASSERT_FALSE(renderSurface1->renderSurface()); 664 ASSERT_FALSE(renderSurface1->renderSurface());
665 EXPECT_EQ(1U, renderSurfaceLayerList.size()); 665 EXPECT_EQ(1U, renderSurfaceLayerList.size());
666 } 666 }
667 667
668 TEST(CCLayerTreeHostCommonTest, verifyRenderSurfaceListForTransparentChild) 668 TEST(CCLayerTreeHostCommonTest, verifyRenderSurfaceListForTransparentChild)
669 { 669 {
670 RefPtr<LayerChromium> parent = LayerChromium::create(); 670 RefPtr<LayerChromium> parent = LayerChromium::create();
671 RefPtr<LayerChromium> renderSurface1 = LayerChromium::create(); 671 RefPtr<LayerChromium> renderSurface1 = LayerChromium::create();
672 RefPtr<LayerChromiumWithForcedDrawsContent> child = adoptRef(new LayerChromi umWithForcedDrawsContent()); 672 RefPtr<LayerChromiumWithForcedDrawsContent> child = adoptRef(new LayerChromi umWithForcedDrawsContent());
673 673
674 const WebTransformationMatrix identityMatrix; 674 const WebTransformationMatrix identityMatrix;
675 setLayerPropertiesForTesting(renderSurface1.get(), identityMatrix, identityM atrix, FloatPoint::zero(), FloatPoint::zero(), IntSize(10, 10), false); 675 setLayerPropertiesForTesting(renderSurface1.get(), identityMatrix, identityM atrix, FloatPoint::zero(), FloatPoint::zero(), IntSize(10, 10), false);
676 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint::zero(), FloatPoint::zero(), IntSize(10, 10), false); 676 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint::zero(), FloatPoint::zero(), IntSize(10, 10), false);
677 677
678 parent->addChild(renderSurface1); 678 parent->addChild(renderSurface1);
679 renderSurface1->addChild(child); 679 renderSurface1->addChild(child);
680 renderSurface1->setForceRenderSurface(true); 680 renderSurface1->setForceRenderSurface(true);
681 renderSurface1->setOpacity(0); 681 renderSurface1->setOpacity(0);
682 682
683 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 683 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
684 int dummyMaxTextureSize = 512; 684 int dummyMaxTextureSize = 512;
685 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 685 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
686 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 686 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
687 687
688 // Since the layer is transparent, renderSurface1->renderSurface() should no t have gotten added anywhere. 688 // Since the layer is transparent, renderSurface1->renderSurface() should no t have gotten added anywhere.
689 // Also, the drawable content rect should not have been extended by the chil dren. 689 // Also, the drawable content rect should not have been extended by the chil dren.
690 ASSERT_TRUE(parent->renderSurface()); 690 ASSERT_TRUE(parent->renderSurface());
691 EXPECT_EQ(0U, parent->renderSurface()->layerList().size()); 691 EXPECT_EQ(0U, parent->renderSurface()->layerList().size());
692 EXPECT_EQ(1U, renderSurfaceLayerList.size()); 692 EXPECT_EQ(1U, renderSurfaceLayerList.size());
693 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 693 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
694 EXPECT_EQ(IntRect(), parent->drawableContentRect()); 694 EXPECT_EQ(IntRect(), parent->drawableContentRect());
695 } 695 }
(...skipping 12 matching lines...) Expand all
708 708
709 parent->addChild(renderSurface1); 709 parent->addChild(renderSurface1);
710 renderSurface1->addChild(child); 710 renderSurface1->addChild(child);
711 711
712 // Sanity check before the actual test 712 // Sanity check before the actual test
713 EXPECT_FALSE(parent->renderSurface()); 713 EXPECT_FALSE(parent->renderSurface());
714 EXPECT_FALSE(renderSurface1->renderSurface()); 714 EXPECT_FALSE(renderSurface1->renderSurface());
715 715
716 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 716 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
717 int dummyMaxTextureSize = 512; 717 int dummyMaxTextureSize = 512;
718 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 718 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
719 719
720 // The root layer always creates a renderSurface 720 // The root layer always creates a renderSurface
721 EXPECT_TRUE(parent->renderSurface()); 721 EXPECT_TRUE(parent->renderSurface());
722 EXPECT_TRUE(renderSurface1->renderSurface()); 722 EXPECT_TRUE(renderSurface1->renderSurface());
723 EXPECT_EQ(2U, renderSurfaceLayerList.size()); 723 EXPECT_EQ(2U, renderSurfaceLayerList.size());
724 724
725 renderSurfaceLayerList.clear(); 725 renderSurfaceLayerList.clear();
726 renderSurface1->setForceRenderSurface(false); 726 renderSurface1->setForceRenderSurface(false);
727 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 727 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
728 EXPECT_TRUE(parent->renderSurface()); 728 EXPECT_TRUE(parent->renderSurface());
729 EXPECT_FALSE(renderSurface1->renderSurface()); 729 EXPECT_FALSE(renderSurface1->renderSurface());
730 EXPECT_EQ(1U, renderSurfaceLayerList.size()); 730 EXPECT_EQ(1U, renderSurfaceLayerList.size());
731 } 731 }
732 732
733 TEST(CCLayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWit hDirectContainer) 733 TEST(CCLayerTreeHostCommonTest, verifyScrollCompensationForFixedPositionLayerWit hDirectContainer)
734 { 734 {
735 // This test checks for correct scroll compensation when the fixed-position container 735 // This test checks for correct scroll compensation when the fixed-position container
736 // is the direct parent of the fixed-position layer. 736 // is the direct parent of the fixed-position layer.
737 737
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after
1331 setLayerPropertiesForTesting(leafNode1.get(), identityMatrix, identityMatrix , FloatPoint(0, 0), FloatPoint(0, 0), IntSize(500, 500), false); 1331 setLayerPropertiesForTesting(leafNode1.get(), identityMatrix, identityMatrix , FloatPoint(0, 0), FloatPoint(0, 0), IntSize(500, 500), false);
1332 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , FloatPoint(0, 0), FloatPoint(0, 0), IntSize(20, 20), false); 1332 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , FloatPoint(0, 0), FloatPoint(0, 0), IntSize(20, 20), false);
1333 1333
1334 child->setMasksToBounds(true); 1334 child->setMasksToBounds(true);
1335 child->setOpacity(0.4f); 1335 child->setOpacity(0.4f);
1336 grandChild->setOpacity(0.5); 1336 grandChild->setOpacity(0.5);
1337 greatGrandChild->setOpacity(0.4f); 1337 greatGrandChild->setOpacity(0.4f);
1338 1338
1339 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 1339 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
1340 int dummyMaxTextureSize = 512; 1340 int dummyMaxTextureSize = 512;
1341 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 1341 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
1342 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 1342 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
1343 1343
1344 1344
1345 ASSERT_EQ(2U, renderSurfaceLayerList.size()); 1345 ASSERT_EQ(2U, renderSurfaceLayerList.size());
1346 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 1346 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
1347 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id()); 1347 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id());
1348 } 1348 }
1349 1349
1350 TEST(CCLayerTreeHostCommonTest, verifyClipRectCullsSurfaceWithoutVisibleContent) 1350 TEST(CCLayerTreeHostCommonTest, verifyClipRectCullsSurfaceWithoutVisibleContent)
1351 { 1351 {
(...skipping 26 matching lines...) Expand all
1378 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint(0, 0), FloatPoint(0, 0), IntSize(20, 20), false); 1378 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint(0, 0), FloatPoint(0, 0), IntSize(20, 20), false);
1379 setLayerPropertiesForTesting(grandChild.get(), identityMatrix, identityMatri x, FloatPoint(0, 0), FloatPoint(200, 200), IntSize(10, 10), false); 1379 setLayerPropertiesForTesting(grandChild.get(), identityMatrix, identityMatri x, FloatPoint(0, 0), FloatPoint(200, 200), IntSize(10, 10), false);
1380 setLayerPropertiesForTesting(leafNode.get(), identityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(10, 10), false); 1380 setLayerPropertiesForTesting(leafNode.get(), identityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(10, 10), false);
1381 1381
1382 parent->setMasksToBounds(true); 1382 parent->setMasksToBounds(true);
1383 child->setOpacity(0.4f); 1383 child->setOpacity(0.4f);
1384 grandChild->setOpacity(0.4f); 1384 grandChild->setOpacity(0.4f);
1385 1385
1386 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 1386 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
1387 int dummyMaxTextureSize = 512; 1387 int dummyMaxTextureSize = 512;
1388 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 1388 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
1389 1389
1390 // Without an animation, we should cull child and grandChild from the render SurfaceLayerList. 1390 // Without an animation, we should cull child and grandChild from the render SurfaceLayerList.
1391 ASSERT_EQ(1U, renderSurfaceLayerList.size()); 1391 ASSERT_EQ(1U, renderSurfaceLayerList.size());
1392 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 1392 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
1393 1393
1394 // Now put an animating transform on child. 1394 // Now put an animating transform on child.
1395 addAnimatedTransformToController(*child->layerAnimationController(), 10, 30, 0); 1395 addAnimatedTransformToController(*child->layerAnimationController(), 10, 30, 0);
1396 1396
1397 parent->clearRenderSurface(); 1397 parent->clearRenderSurface();
1398 child->clearRenderSurface(); 1398 child->clearRenderSurface();
1399 grandChild->clearRenderSurface(); 1399 grandChild->clearRenderSurface();
1400 renderSurfaceLayerList.clear(); 1400 renderSurfaceLayerList.clear();
1401 1401
1402 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 1402 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
1403 1403
1404 // With an animating transform, we should keep child and grandChild in the r enderSurfaceLayerList. 1404 // With an animating transform, we should keep child and grandChild in the r enderSurfaceLayerList.
1405 ASSERT_EQ(3U, renderSurfaceLayerList.size()); 1405 ASSERT_EQ(3U, renderSurfaceLayerList.size());
1406 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 1406 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
1407 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id()); 1407 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id());
1408 EXPECT_EQ(grandChild->id(), renderSurfaceLayerList[2]->id()); 1408 EXPECT_EQ(grandChild->id(), renderSurfaceLayerList[2]->id());
1409 } 1409 }
1410 1410
1411 TEST(CCLayerTreeHostCommonTest, verifyDrawableContentRectForLayers) 1411 TEST(CCLayerTreeHostCommonTest, verifyDrawableContentRectForLayers)
1412 { 1412 {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 1444
1445 // Force everyone to be a render surface. 1445 // Force everyone to be a render surface.
1446 child->setOpacity(0.4f); 1446 child->setOpacity(0.4f);
1447 grandChild1->setOpacity(0.5); 1447 grandChild1->setOpacity(0.5);
1448 grandChild2->setOpacity(0.5); 1448 grandChild2->setOpacity(0.5);
1449 grandChild3->setOpacity(0.5); 1449 grandChild3->setOpacity(0.5);
1450 grandChild4->setOpacity(0.5); 1450 grandChild4->setOpacity(0.5);
1451 1451
1452 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 1452 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
1453 int dummyMaxTextureSize = 512; 1453 int dummyMaxTextureSize = 512;
1454 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 1454 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
1455 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 1455 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
1456 1456
1457 EXPECT_RECT_EQ(IntRect(IntPoint(5, 5), IntSize(10, 10)), grandChild1->drawab leContentRect()); 1457 EXPECT_RECT_EQ(IntRect(IntPoint(5, 5), IntSize(10, 10)), grandChild1->drawab leContentRect());
1458 EXPECT_RECT_EQ(IntRect(IntPoint(15, 15), IntSize(5, 5)), grandChild3->drawab leContentRect()); 1458 EXPECT_RECT_EQ(IntRect(IntPoint(15, 15), IntSize(5, 5)), grandChild3->drawab leContentRect());
1459 EXPECT_RECT_EQ(IntRect(IntPoint(15, 15), IntSize(5, 5)), grandChild3->drawab leContentRect()); 1459 EXPECT_RECT_EQ(IntRect(IntPoint(15, 15), IntSize(5, 5)), grandChild3->drawab leContentRect());
1460 EXPECT_TRUE(grandChild4->drawableContentRect().isEmpty()); 1460 EXPECT_TRUE(grandChild4->drawableContentRect().isEmpty());
1461 } 1461 }
1462 1462
1463 TEST(CCLayerTreeHostCommonTest, verifyClipRectIsPropagatedCorrectlyToSurfaces) 1463 TEST(CCLayerTreeHostCommonTest, verifyClipRectIsPropagatedCorrectlyToSurfaces)
1464 { 1464 {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1510 1510
1511 // Force everyone to be a render surface. 1511 // Force everyone to be a render surface.
1512 child->setOpacity(0.4f); 1512 child->setOpacity(0.4f);
1513 grandChild1->setOpacity(0.5); 1513 grandChild1->setOpacity(0.5);
1514 grandChild2->setOpacity(0.5); 1514 grandChild2->setOpacity(0.5);
1515 grandChild3->setOpacity(0.5); 1515 grandChild3->setOpacity(0.5);
1516 grandChild4->setOpacity(0.5); 1516 grandChild4->setOpacity(0.5);
1517 1517
1518 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 1518 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
1519 int dummyMaxTextureSize = 512; 1519 int dummyMaxTextureSize = 512;
1520 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 1520 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
1521 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 1521 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
1522 1522
1523 ASSERT_TRUE(grandChild1->renderSurface()); 1523 ASSERT_TRUE(grandChild1->renderSurface());
1524 ASSERT_TRUE(grandChild2->renderSurface()); 1524 ASSERT_TRUE(grandChild2->renderSurface());
1525 ASSERT_TRUE(grandChild3->renderSurface()); 1525 ASSERT_TRUE(grandChild3->renderSurface());
1526 EXPECT_FALSE(grandChild4->renderSurface()); // Because grandChild4 is entire ly clipped, it is expected to not have a renderSurface. 1526 EXPECT_FALSE(grandChild4->renderSurface()); // Because grandChild4 is entire ly clipped, it is expected to not have a renderSurface.
1527 1527
1528 // Surfaces are clipped by their parent, but un-affected by the owning layer 's masksToBounds. 1528 // Surfaces are clipped by their parent, but un-affected by the owning layer 's masksToBounds.
1529 EXPECT_RECT_EQ(IntRect(IntPoint(0, 0), IntSize(20, 20)), grandChild1->render Surface()->clipRect()); 1529 EXPECT_RECT_EQ(IntRect(IntPoint(0, 0), IntSize(20, 20)), grandChild1->render Surface()->clipRect());
1530 EXPECT_RECT_EQ(IntRect(IntPoint(0, 0), IntSize(20, 20)), grandChild2->render Surface()->clipRect()); 1530 EXPECT_RECT_EQ(IntRect(IntPoint(0, 0), IntSize(20, 20)), grandChild2->render Surface()->clipRect());
(...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after
2353 setLayerPropertiesForTesting(backFacingChild.get(), backfaceMatrix, identity Matrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2353 setLayerPropertiesForTesting(backFacingChild.get(), backfaceMatrix, identity Matrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2354 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2354 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2355 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, identi tyMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2355 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, identi tyMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2356 setLayerPropertiesForTesting(frontFacingChildOfFrontFacingSurface.get(), ide ntityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 10 0), false); 2356 setLayerPropertiesForTesting(frontFacingChildOfFrontFacingSurface.get(), ide ntityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 10 0), false);
2357 setLayerPropertiesForTesting(backFacingChildOfFrontFacingSurface.get(), back faceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100 ), false); 2357 setLayerPropertiesForTesting(backFacingChildOfFrontFacingSurface.get(), back faceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100 ), false);
2358 setLayerPropertiesForTesting(frontFacingChildOfBackFacingSurface.get(), iden tityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100 ), false); 2358 setLayerPropertiesForTesting(frontFacingChildOfBackFacingSurface.get(), iden tityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100 ), false);
2359 setLayerPropertiesForTesting(backFacingChildOfBackFacingSurface.get(), backf aceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100) , false); 2359 setLayerPropertiesForTesting(backFacingChildOfBackFacingSurface.get(), backf aceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100) , false);
2360 2360
2361 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 2361 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
2362 int dummyMaxTextureSize = 512; 2362 int dummyMaxTextureSize = 512;
2363 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 2363 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
2364 2364
2365 // Verify which renderSurfaces were created. 2365 // Verify which renderSurfaces were created.
2366 EXPECT_FALSE(frontFacingChild->renderSurface()); 2366 EXPECT_FALSE(frontFacingChild->renderSurface());
2367 EXPECT_FALSE(backFacingChild->renderSurface()); 2367 EXPECT_FALSE(backFacingChild->renderSurface());
2368 EXPECT_TRUE(frontFacingSurface->renderSurface()); 2368 EXPECT_TRUE(frontFacingSurface->renderSurface());
2369 EXPECT_TRUE(backFacingSurface->renderSurface()); 2369 EXPECT_TRUE(backFacingSurface->renderSurface());
2370 EXPECT_FALSE(frontFacingChildOfFrontFacingSurface->renderSurface()); 2370 EXPECT_FALSE(frontFacingChildOfFrontFacingSurface->renderSurface());
2371 EXPECT_FALSE(backFacingChildOfFrontFacingSurface->renderSurface()); 2371 EXPECT_FALSE(backFacingChildOfFrontFacingSurface->renderSurface());
2372 EXPECT_FALSE(frontFacingChildOfBackFacingSurface->renderSurface()); 2372 EXPECT_FALSE(frontFacingChildOfBackFacingSurface->renderSurface());
2373 EXPECT_FALSE(backFacingChildOfBackFacingSurface->renderSurface()); 2373 EXPECT_FALSE(backFacingChildOfBackFacingSurface->renderSurface());
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2452 setLayerPropertiesForTesting(backFacingChild.get(), backfaceMatrix, identity Matrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2452 setLayerPropertiesForTesting(backFacingChild.get(), backfaceMatrix, identity Matrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2453 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true); // surf ace transform style is preserve-3d. 2453 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true); // surf ace transform style is preserve-3d.
2454 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, identi tyMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true); // surfa ce transform style is preserve-3d. 2454 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, identi tyMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true); // surfa ce transform style is preserve-3d.
2455 setLayerPropertiesForTesting(frontFacingChildOfFrontFacingSurface.get(), ide ntityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 10 0), false); 2455 setLayerPropertiesForTesting(frontFacingChildOfFrontFacingSurface.get(), ide ntityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 10 0), false);
2456 setLayerPropertiesForTesting(backFacingChildOfFrontFacingSurface.get(), back faceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100 ), false); 2456 setLayerPropertiesForTesting(backFacingChildOfFrontFacingSurface.get(), back faceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100 ), false);
2457 setLayerPropertiesForTesting(frontFacingChildOfBackFacingSurface.get(), iden tityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100 ), false); 2457 setLayerPropertiesForTesting(frontFacingChildOfBackFacingSurface.get(), iden tityMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100 ), false);
2458 setLayerPropertiesForTesting(backFacingChildOfBackFacingSurface.get(), backf aceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100) , false); 2458 setLayerPropertiesForTesting(backFacingChildOfBackFacingSurface.get(), backf aceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100) , false);
2459 2459
2460 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 2460 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
2461 int dummyMaxTextureSize = 512; 2461 int dummyMaxTextureSize = 512;
2462 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 2462 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
2463 2463
2464 // Verify which renderSurfaces were created. 2464 // Verify which renderSurfaces were created.
2465 EXPECT_FALSE(frontFacingChild->renderSurface()); 2465 EXPECT_FALSE(frontFacingChild->renderSurface());
2466 EXPECT_FALSE(backFacingChild->renderSurface()); 2466 EXPECT_FALSE(backFacingChild->renderSurface());
2467 EXPECT_TRUE(frontFacingSurface->renderSurface()); 2467 EXPECT_TRUE(frontFacingSurface->renderSurface());
2468 EXPECT_FALSE(backFacingSurface->renderSurface()); 2468 EXPECT_FALSE(backFacingSurface->renderSurface());
2469 EXPECT_FALSE(frontFacingChildOfFrontFacingSurface->renderSurface()); 2469 EXPECT_FALSE(frontFacingChildOfFrontFacingSurface->renderSurface());
2470 EXPECT_FALSE(backFacingChildOfFrontFacingSurface->renderSurface()); 2470 EXPECT_FALSE(backFacingChildOfFrontFacingSurface->renderSurface());
2471 EXPECT_FALSE(frontFacingChildOfBackFacingSurface->renderSurface()); 2471 EXPECT_FALSE(frontFacingChildOfBackFacingSurface->renderSurface());
2472 EXPECT_FALSE(backFacingChildOfBackFacingSurface->renderSurface()); 2472 EXPECT_FALSE(backFacingChildOfBackFacingSurface->renderSurface());
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
2532 2532
2533 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2533 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2534 setLayerPropertiesForTesting(child.get(), backfaceMatrix, identityMatrix, Fl oatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2534 setLayerPropertiesForTesting(child.get(), backfaceMatrix, identityMatrix, Fl oatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2535 setLayerPropertiesForTesting(animatingSurface.get(), backfaceMatrix, identit yMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2535 setLayerPropertiesForTesting(animatingSurface.get(), backfaceMatrix, identit yMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2536 setLayerPropertiesForTesting(childOfAnimatingSurface.get(), backfaceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2536 setLayerPropertiesForTesting(childOfAnimatingSurface.get(), backfaceMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2537 setLayerPropertiesForTesting(animatingChild.get(), backfaceMatrix, identityM atrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2537 setLayerPropertiesForTesting(animatingChild.get(), backfaceMatrix, identityM atrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2538 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2538 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2539 2539
2540 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 2540 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
2541 int dummyMaxTextureSize = 512; 2541 int dummyMaxTextureSize = 512;
2542 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 2542 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
2543 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 2543 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
2544 2544
2545 EXPECT_FALSE(child->renderSurface()); 2545 EXPECT_FALSE(child->renderSurface());
2546 EXPECT_TRUE(animatingSurface->renderSurface()); 2546 EXPECT_TRUE(animatingSurface->renderSurface());
2547 EXPECT_FALSE(childOfAnimatingSurface->renderSurface()); 2547 EXPECT_FALSE(childOfAnimatingSurface->renderSurface());
2548 EXPECT_FALSE(animatingChild->renderSurface()); 2548 EXPECT_FALSE(animatingChild->renderSurface());
2549 EXPECT_FALSE(child2->renderSurface()); 2549 EXPECT_FALSE(child2->renderSurface());
2550 2550
2551 // Verify that the animatingChild and childOfAnimatingSurface were not culle d, but that child was. 2551 // Verify that the animatingChild and childOfAnimatingSurface were not culle d, but that child was.
2552 ASSERT_EQ(2u, renderSurfaceLayerList.size()); 2552 ASSERT_EQ(2u, renderSurfaceLayerList.size());
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2599 backfaceMatrix.translate(-50, -50); 2599 backfaceMatrix.translate(-50, -50);
2600 2600
2601 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true); // parent transform style is preserve3d. 2601 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true); // parent transform style is preserve3d.
2602 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); // sur face transform style is flat. 2602 setLayerPropertiesForTesting(frontFacingSurface.get(), identityMatrix, ident ityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); // sur face transform style is flat.
2603 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, ident ityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); // sur face transform style is flat. 2603 setLayerPropertiesForTesting(backFacingSurface.get(), backfaceMatrix, ident ityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); // sur face transform style is flat.
2604 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2604 setLayerPropertiesForTesting(child1.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2605 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false); 2605 setLayerPropertiesForTesting(child2.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), false);
2606 2606
2607 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 2607 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
2608 int dummyMaxTextureSize = 512; 2608 int dummyMaxTextureSize = 512;
2609 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, dummyMaxTextureSize, renderSurfaceLayerList); 2609 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList);
2610 2610
2611 // Verify which renderSurfaces were created. 2611 // Verify which renderSurfaces were created.
2612 EXPECT_TRUE(frontFacingSurface->renderSurface()); 2612 EXPECT_TRUE(frontFacingSurface->renderSurface());
2613 EXPECT_FALSE(backFacingSurface->renderSurface()); // because it should be cu lled 2613 EXPECT_FALSE(backFacingSurface->renderSurface()); // because it should be cu lled
2614 EXPECT_FALSE(child1->renderSurface()); 2614 EXPECT_FALSE(child1->renderSurface());
2615 EXPECT_FALSE(child2->renderSurface()); 2615 EXPECT_FALSE(child2->renderSurface());
2616 2616
2617 // Verify the renderSurfaceLayerList. The back-facing surface should be cull ed. 2617 // Verify the renderSurfaceLayerList. The back-facing surface should be cull ed.
2618 ASSERT_EQ(2u, renderSurfaceLayerList.size()); 2618 ASSERT_EQ(2u, renderSurfaceLayerList.size());
2619 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); 2619 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2653 2653
2654 WebTransformationMatrix identityMatrix; 2654 WebTransformationMatrix identityMatrix;
2655 FloatPoint anchor(0, 0); 2655 FloatPoint anchor(0, 0);
2656 FloatPoint position(0, 0); 2656 FloatPoint position(0, 0);
2657 IntSize bounds(100, 100); 2657 IntSize bounds(100, 100);
2658 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false); 2658 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false);
2659 root->setDrawsContent(true); 2659 root->setDrawsContent(true);
2660 2660
2661 Vector<CCLayerImpl*> renderSurfaceLayerList; 2661 Vector<CCLayerImpl*> renderSurfaceLayerList;
2662 int dummyMaxTextureSize = 512; 2662 int dummyMaxTextureSize = 512;
2663 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 2663 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
2664 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 2664 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
2665 2665
2666 // Sanity check the scenario we just created. 2666 // Sanity check the scenario we just created.
2667 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 2667 ASSERT_EQ(1u, renderSurfaceLayerList.size());
2668 ASSERT_EQ(1u, root->renderSurface()->layerList().size()); 2668 ASSERT_EQ(1u, root->renderSurface()->layerList().size());
2669 2669
2670 // Hit testing for a point outside the layer should return a null pointer. 2670 // Hit testing for a point outside the layer should return a null pointer.
2671 IntPoint testPoint(101, 101); 2671 IntPoint testPoint(101, 101);
2672 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList); 2672 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList);
2673 EXPECT_FALSE(resultLayer); 2673 EXPECT_FALSE(resultLayer);
(...skipping 29 matching lines...) Expand all
2703 2703
2704 WebTransformationMatrix identityMatrix; 2704 WebTransformationMatrix identityMatrix;
2705 FloatPoint anchor(0, 0); 2705 FloatPoint anchor(0, 0);
2706 FloatPoint position(0, 0); 2706 FloatPoint position(0, 0);
2707 IntSize bounds(100, 100); 2707 IntSize bounds(100, 100);
2708 setLayerPropertiesForTesting(root.get(), uninvertibleTransform, identityMatr ix, anchor, position, bounds, false); 2708 setLayerPropertiesForTesting(root.get(), uninvertibleTransform, identityMatr ix, anchor, position, bounds, false);
2709 root->setDrawsContent(true); 2709 root->setDrawsContent(true);
2710 2710
2711 Vector<CCLayerImpl*> renderSurfaceLayerList; 2711 Vector<CCLayerImpl*> renderSurfaceLayerList;
2712 int dummyMaxTextureSize = 512; 2712 int dummyMaxTextureSize = 512;
2713 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 2713 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
2714 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 2714 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
2715 2715
2716 // Sanity check the scenario we just created. 2716 // Sanity check the scenario we just created.
2717 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 2717 ASSERT_EQ(1u, renderSurfaceLayerList.size());
2718 ASSERT_EQ(1u, root->renderSurface()->layerList().size()); 2718 ASSERT_EQ(1u, root->renderSurface()->layerList().size());
2719 ASSERT_FALSE(root->screenSpaceTransform().isInvertible()); 2719 ASSERT_FALSE(root->screenSpaceTransform().isInvertible());
2720 2720
2721 // Hit testing any point should not hit the layer. If the invertible matrix is 2721 // Hit testing any point should not hit the layer. If the invertible matrix is
2722 // accidentally ignored and treated like an identity, then the hit testing w ill 2722 // accidentally ignored and treated like an identity, then the hit testing w ill
2723 // incorrectly hit the layer when it shouldn't. 2723 // incorrectly hit the layer when it shouldn't.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2758 2758
2759 WebTransformationMatrix identityMatrix; 2759 WebTransformationMatrix identityMatrix;
2760 FloatPoint anchor(0, 0); 2760 FloatPoint anchor(0, 0);
2761 FloatPoint position(50, 50); // this layer is positioned, and hit testing sh ould correctly know where the layer is located. 2761 FloatPoint position(50, 50); // this layer is positioned, and hit testing sh ould correctly know where the layer is located.
2762 IntSize bounds(100, 100); 2762 IntSize bounds(100, 100);
2763 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false); 2763 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, anc hor, position, bounds, false);
2764 root->setDrawsContent(true); 2764 root->setDrawsContent(true);
2765 2765
2766 Vector<CCLayerImpl*> renderSurfaceLayerList; 2766 Vector<CCLayerImpl*> renderSurfaceLayerList;
2767 int dummyMaxTextureSize = 512; 2767 int dummyMaxTextureSize = 512;
2768 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 2768 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
2769 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 2769 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
2770 2770
2771 // Sanity check the scenario we just created. 2771 // Sanity check the scenario we just created.
2772 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 2772 ASSERT_EQ(1u, renderSurfaceLayerList.size());
2773 ASSERT_EQ(1u, root->renderSurface()->layerList().size()); 2773 ASSERT_EQ(1u, root->renderSurface()->layerList().size());
2774 2774
2775 // Hit testing for a point outside the layer should return a null pointer. 2775 // Hit testing for a point outside the layer should return a null pointer.
2776 IntPoint testPoint(49, 49); 2776 IntPoint testPoint(49, 49);
2777 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList); 2777 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList);
2778 EXPECT_FALSE(resultLayer); 2778 EXPECT_FALSE(resultLayer);
(...skipping 27 matching lines...) Expand all
2806 rotation45DegreesAboutCenter.rotate3d(0, 0, 45); 2806 rotation45DegreesAboutCenter.rotate3d(0, 0, 45);
2807 rotation45DegreesAboutCenter.translate(-50, -50); 2807 rotation45DegreesAboutCenter.translate(-50, -50);
2808 FloatPoint anchor(0, 0); 2808 FloatPoint anchor(0, 0);
2809 FloatPoint position(0, 0); 2809 FloatPoint position(0, 0);
2810 IntSize bounds(100, 100); 2810 IntSize bounds(100, 100);
2811 setLayerPropertiesForTesting(root.get(), rotation45DegreesAboutCenter, ident ityMatrix, anchor, position, bounds, false); 2811 setLayerPropertiesForTesting(root.get(), rotation45DegreesAboutCenter, ident ityMatrix, anchor, position, bounds, false);
2812 root->setDrawsContent(true); 2812 root->setDrawsContent(true);
2813 2813
2814 Vector<CCLayerImpl*> renderSurfaceLayerList; 2814 Vector<CCLayerImpl*> renderSurfaceLayerList;
2815 int dummyMaxTextureSize = 512; 2815 int dummyMaxTextureSize = 512;
2816 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 2816 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
2817 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 2817 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
2818 2818
2819 // Sanity check the scenario we just created. 2819 // Sanity check the scenario we just created.
2820 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 2820 ASSERT_EQ(1u, renderSurfaceLayerList.size());
2821 ASSERT_EQ(1u, root->renderSurface()->layerList().size()); 2821 ASSERT_EQ(1u, root->renderSurface()->layerList().size());
2822 2822
2823 // Hit testing for points outside the layer. 2823 // Hit testing for points outside the layer.
2824 // These corners would have been inside the un-transformed layer, but they s hould not hit the correctly transformed layer. 2824 // These corners would have been inside the un-transformed layer, but they s hould not hit the correctly transformed layer.
2825 IntPoint testPoint(99, 99); 2825 IntPoint testPoint(99, 99);
2826 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList); 2826 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2863 translationByZ.translate3d(0, 0, -1); 2863 translationByZ.translate3d(0, 0, -1);
2864 2864
2865 FloatPoint anchor(0, 0); 2865 FloatPoint anchor(0, 0);
2866 FloatPoint position(0, 0); 2866 FloatPoint position(0, 0);
2867 IntSize bounds(100, 100); 2867 IntSize bounds(100, 100);
2868 setLayerPropertiesForTesting(root.get(), perspectiveProjectionAboutCenter * translationByZ, identityMatrix, anchor, position, bounds, false); 2868 setLayerPropertiesForTesting(root.get(), perspectiveProjectionAboutCenter * translationByZ, identityMatrix, anchor, position, bounds, false);
2869 root->setDrawsContent(true); 2869 root->setDrawsContent(true);
2870 2870
2871 Vector<CCLayerImpl*> renderSurfaceLayerList; 2871 Vector<CCLayerImpl*> renderSurfaceLayerList;
2872 int dummyMaxTextureSize = 512; 2872 int dummyMaxTextureSize = 512;
2873 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 2873 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
2874 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 2874 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
2875 2875
2876 // Sanity check the scenario we just created. 2876 // Sanity check the scenario we just created.
2877 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 2877 ASSERT_EQ(1u, renderSurfaceLayerList.size());
2878 ASSERT_EQ(1u, root->renderSurface()->layerList().size()); 2878 ASSERT_EQ(1u, root->renderSurface()->layerList().size());
2879 2879
2880 // Hit testing for points outside the layer. 2880 // Hit testing for points outside the layer.
2881 // These corners would have been inside the un-transformed layer, but they s hould not hit the correctly transformed layer. 2881 // These corners would have been inside the un-transformed layer, but they s hould not hit the correctly transformed layer.
2882 IntPoint testPoint(24, 24); 2882 IntPoint testPoint(24, 24);
2883 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList); 2883 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2928 2928
2929 // override contentBounds 2929 // override contentBounds
2930 testLayer->setContentBounds(IntSize(100, 100)); 2930 testLayer->setContentBounds(IntSize(100, 100));
2931 2931
2932 testLayer->setDrawsContent(true); 2932 testLayer->setDrawsContent(true);
2933 root->addChild(testLayer.release()); 2933 root->addChild(testLayer.release());
2934 } 2934 }
2935 2935
2936 Vector<CCLayerImpl*> renderSurfaceLayerList; 2936 Vector<CCLayerImpl*> renderSurfaceLayerList;
2937 int dummyMaxTextureSize = 512; 2937 int dummyMaxTextureSize = 512;
2938 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 2938 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
2939 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 2939 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
2940 2940
2941 // Sanity check the scenario we just created. 2941 // Sanity check the scenario we just created.
2942 // The visibleContentRect for testLayer is actually 100x100, even though its layout size is 50x50, positioned at 25x25. 2942 // The visibleContentRect for testLayer is actually 100x100, even though its layout size is 50x50, positioned at 25x25.
2943 CCLayerImpl* testLayer = root->children()[0]; 2943 CCLayerImpl* testLayer = root->children()[0];
2944 EXPECT_RECT_EQ(IntRect(IntPoint::zero(), IntSize(100, 100)), testLayer->visi bleContentRect()); 2944 EXPECT_RECT_EQ(IntRect(IntPoint::zero(), IntSize(100, 100)), testLayer->visi bleContentRect());
2945 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 2945 ASSERT_EQ(1u, renderSurfaceLayerList.size());
2946 ASSERT_EQ(1u, root->renderSurface()->layerList().size()); 2946 ASSERT_EQ(1u, root->renderSurface()->layerList().size());
2947 2947
2948 // 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). 2948 // 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).
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2993 position = FloatPoint(-50, -50); 2993 position = FloatPoint(-50, -50);
2994 bounds = IntSize(300, 300); 2994 bounds = IntSize(300, 300);
2995 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false); 2995 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false);
2996 child->setDrawsContent(true); 2996 child->setDrawsContent(true);
2997 clippingLayer->addChild(child.release()); 2997 clippingLayer->addChild(child.release());
2998 root->addChild(clippingLayer.release()); 2998 root->addChild(clippingLayer.release());
2999 } 2999 }
3000 3000
3001 Vector<CCLayerImpl*> renderSurfaceLayerList; 3001 Vector<CCLayerImpl*> renderSurfaceLayerList;
3002 int dummyMaxTextureSize = 512; 3002 int dummyMaxTextureSize = 512;
3003 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 3003 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
3004 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 3004 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
3005 3005
3006 // Sanity check the scenario we just created. 3006 // Sanity check the scenario we just created.
3007 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3007 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3008 ASSERT_EQ(1u, root->renderSurface()->layerList().size()); 3008 ASSERT_EQ(1u, root->renderSurface()->layerList().size());
3009 ASSERT_EQ(456, root->renderSurface()->layerList()[0]->id()); 3009 ASSERT_EQ(456, root->renderSurface()->layerList()[0]->id());
3010 3010
3011 // Hit testing for a point outside the layer should return a null pointer. 3011 // Hit testing for a point outside the layer should return a null pointer.
3012 // Despite the child layer being very large, it should be clipped to the roo t layer's bounds. 3012 // Despite the child layer being very large, it should be clipped to the roo t layer's bounds.
3013 IntPoint testPoint(24, 24); 3013 IntPoint testPoint(24, 24);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3084 setLayerPropertiesForTesting(rotatedLeaf.get(), rotatedLeafTransform, id entityMatrix, anchor, position, bounds, false); 3084 setLayerPropertiesForTesting(rotatedLeaf.get(), rotatedLeafTransform, id entityMatrix, anchor, position, bounds, false);
3085 rotatedLeaf->setDrawsContent(true); 3085 rotatedLeaf->setDrawsContent(true);
3086 3086
3087 grandChild->addChild(rotatedLeaf.release()); 3087 grandChild->addChild(rotatedLeaf.release());
3088 child->addChild(grandChild.release()); 3088 child->addChild(grandChild.release());
3089 root->addChild(child.release()); 3089 root->addChild(child.release());
3090 } 3090 }
3091 3091
3092 Vector<CCLayerImpl*> renderSurfaceLayerList; 3092 Vector<CCLayerImpl*> renderSurfaceLayerList;
3093 int dummyMaxTextureSize = 512; 3093 int dummyMaxTextureSize = 512;
3094 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 3094 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
3095 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 3095 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
3096 3096
3097 // Sanity check the scenario we just created. 3097 // Sanity check the scenario we just created.
3098 // The grandChild is expected to create a renderSurface because it masksToBo unds and is not axis aligned. 3098 // The grandChild is expected to create a renderSurface because it masksToBo unds and is not axis aligned.
3099 ASSERT_EQ(2u, renderSurfaceLayerList.size()); 3099 ASSERT_EQ(2u, renderSurfaceLayerList.size());
3100 ASSERT_EQ(1u, renderSurfaceLayerList[0]->renderSurface()->layerList().size() ); 3100 ASSERT_EQ(1u, renderSurfaceLayerList[0]->renderSurface()->layerList().size() );
3101 ASSERT_EQ(789, renderSurfaceLayerList[0]->renderSurface()->layerList()[0]->i d()); // grandChild's surface. 3101 ASSERT_EQ(789, renderSurfaceLayerList[0]->renderSurface()->layerList()[0]->i d()); // grandChild's surface.
3102 ASSERT_EQ(1u, renderSurfaceLayerList[1]->renderSurface()->layerList().size() ); 3102 ASSERT_EQ(1u, renderSurfaceLayerList[1]->renderSurface()->layerList().size() );
3103 ASSERT_EQ(2468, renderSurfaceLayerList[1]->renderSurface()->layerList()[0]-> id()); 3103 ASSERT_EQ(2468, renderSurfaceLayerList[1]->renderSurface()->layerList()[0]-> id());
3104 3104
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
3167 position = FloatPoint(60, 60); // 70, 70 in screen space 3167 position = FloatPoint(60, 60); // 70, 70 in screen space
3168 bounds = IntSize(20, 20); 3168 bounds = IntSize(20, 20);
3169 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false); 3169 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix , anchor, position, bounds, false);
3170 child->setDrawsContent(true); 3170 child->setDrawsContent(true);
3171 intermediateLayer->addChild(child.release()); 3171 intermediateLayer->addChild(child.release());
3172 root->addChild(intermediateLayer.release()); 3172 root->addChild(intermediateLayer.release());
3173 } 3173 }
3174 3174
3175 Vector<CCLayerImpl*> renderSurfaceLayerList; 3175 Vector<CCLayerImpl*> renderSurfaceLayerList;
3176 int dummyMaxTextureSize = 512; 3176 int dummyMaxTextureSize = 512;
3177 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 3177 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
3178 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 3178 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
3179 3179
3180 // Sanity check the scenario we just created. 3180 // Sanity check the scenario we just created.
3181 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3181 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3182 ASSERT_EQ(1u, root->renderSurface()->layerList().size()); 3182 ASSERT_EQ(1u, root->renderSurface()->layerList().size());
3183 ASSERT_EQ(456, root->renderSurface()->layerList()[0]->id()); 3183 ASSERT_EQ(456, root->renderSurface()->layerList()[0]->id());
3184 3184
3185 // Hit testing for a point outside the layer should return a null pointer. 3185 // Hit testing for a point outside the layer should return a null pointer.
3186 IntPoint testPoint(69, 69); 3186 IntPoint testPoint(69, 69);
3187 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList); 3187 CCLayerImpl* resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint( testPoint, renderSurfaceLayerList);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
3248 root->addChild(child1.release()); 3248 root->addChild(child1.release());
3249 root->addChild(child2.release()); 3249 root->addChild(child2.release());
3250 } 3250 }
3251 3251
3252 CCLayerImpl* child1 = root->children()[0]; 3252 CCLayerImpl* child1 = root->children()[0];
3253 CCLayerImpl* child2 = root->children()[1]; 3253 CCLayerImpl* child2 = root->children()[1];
3254 CCLayerImpl* grandChild1 = child1->children()[0]; 3254 CCLayerImpl* grandChild1 = child1->children()[0];
3255 3255
3256 Vector<CCLayerImpl*> renderSurfaceLayerList; 3256 Vector<CCLayerImpl*> renderSurfaceLayerList;
3257 int dummyMaxTextureSize = 512; 3257 int dummyMaxTextureSize = 512;
3258 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 3258 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
3259 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 3259 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
3260 3260
3261 // Sanity check the scenario we just created. 3261 // Sanity check the scenario we just created.
3262 ASSERT_TRUE(child1); 3262 ASSERT_TRUE(child1);
3263 ASSERT_TRUE(child2); 3263 ASSERT_TRUE(child2);
3264 ASSERT_TRUE(grandChild1); 3264 ASSERT_TRUE(grandChild1);
3265 ASSERT_EQ(1u, renderSurfaceLayerList.size()); 3265 ASSERT_EQ(1u, renderSurfaceLayerList.size());
3266 ASSERT_EQ(4u, root->renderSurface()->layerList().size()); 3266 ASSERT_EQ(4u, root->renderSurface()->layerList().size());
3267 ASSERT_EQ(1, root->renderSurface()->layerList()[0]->id()); // root layer 3267 ASSERT_EQ(1, root->renderSurface()->layerList()[0]->id()); // root layer
3268 ASSERT_EQ(2, root->renderSurface()->layerList()[1]->id()); // child1 3268 ASSERT_EQ(2, root->renderSurface()->layerList()[1]->id()); // child1
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
3357 root->addChild(child1.release()); 3357 root->addChild(child1.release());
3358 root->addChild(child2.release()); 3358 root->addChild(child2.release());
3359 } 3359 }
3360 3360
3361 CCLayerImpl* child1 = root->children()[0]; 3361 CCLayerImpl* child1 = root->children()[0];
3362 CCLayerImpl* child2 = root->children()[1]; 3362 CCLayerImpl* child2 = root->children()[1];
3363 CCLayerImpl* grandChild1 = child1->children()[0]; 3363 CCLayerImpl* grandChild1 = child1->children()[0];
3364 3364
3365 Vector<CCLayerImpl*> renderSurfaceLayerList; 3365 Vector<CCLayerImpl*> renderSurfaceLayerList;
3366 int dummyMaxTextureSize = 512; 3366 int dummyMaxTextureSize = 512;
3367 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 0, dummyMaxTextureSize, renderSurfaceLayerList); 3367 CCLayerTreeHostCommon::calculateDrawTransforms(root.get(), root->bounds(), 1 , 1, 0, dummyMaxTextureSize, renderSurfaceLayerList);
3368 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList); 3368 CCLayerTreeHostCommon::calculateVisibleRects(renderSurfaceLayerList);
3369 3369
3370 // Sanity check the scenario we just created. 3370 // Sanity check the scenario we just created.
3371 ASSERT_TRUE(child1); 3371 ASSERT_TRUE(child1);
3372 ASSERT_TRUE(child2); 3372 ASSERT_TRUE(child2);
3373 ASSERT_TRUE(grandChild1); 3373 ASSERT_TRUE(grandChild1);
3374 ASSERT_TRUE(child1->renderSurface()); 3374 ASSERT_TRUE(child1->renderSurface());
3375 ASSERT_TRUE(child2->renderSurface()); 3375 ASSERT_TRUE(child2->renderSurface());
3376 ASSERT_TRUE(grandChild1->renderSurface()); 3376 ASSERT_TRUE(grandChild1->renderSurface());
3377 ASSERT_EQ(4u, renderSurfaceLayerList.size()); 3377 ASSERT_EQ(4u, renderSurfaceLayerList.size());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
3414 ASSERT_TRUE(resultLayer); 3414 ASSERT_TRUE(resultLayer);
3415 EXPECT_EQ(3, resultLayer->id()); 3415 EXPECT_EQ(3, resultLayer->id());
3416 3416
3417 // At (20, 51), child1 and grandChild1 overlap. grandChild1 is expected to b e on top. 3417 // At (20, 51), child1 and grandChild1 overlap. grandChild1 is expected to b e on top.
3418 testPoint = IntPoint(20, 51); 3418 testPoint = IntPoint(20, 51);
3419 resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, re nderSurfaceLayerList); 3419 resultLayer = CCLayerTreeHostCommon::findLayerThatIsHitByPoint(testPoint, re nderSurfaceLayerList);
3420 ASSERT_TRUE(resultLayer); 3420 ASSERT_TRUE(resultLayer);
3421 EXPECT_EQ(4, resultLayer->id()); 3421 EXPECT_EQ(4, resultLayer->id());
3422 } 3422 }
3423 3423
3424 class NoScaleContentLayerChromium : public ContentLayerChromium
3425 {
3426 public:
3427 static PassRefPtr<NoScaleContentLayerChromium> create(ContentLayerChromiumCl ient* client) { return adoptRef(new NoScaleContentLayerChromium(client)); }
3428 virtual ~NoScaleContentLayerChromium() { }
3429
3430 virtual bool needsContentsScale() const OVERRIDE { return false; }
3431
3432 protected:
3433 explicit NoScaleContentLayerChromium(ContentLayerChromiumClient* client) : C ontentLayerChromium(client) { }
3434 };
3435
3436 PassRefPtr<NoScaleContentLayerChromium> createNoScaleDrawableContentLayerChromiu m(ContentLayerChromiumClient* delegate)
3437 {
3438 RefPtr<NoScaleContentLayerChromium> toReturn = NoScaleContentLayerChromium:: create(delegate);
3439 toReturn->setIsDrawable(true);
3440 return toReturn.release();
3441 }
3442
3424 TEST(CCLayerTreeHostCommonTest, verifyLayerTransformsInHighDPI) 3443 TEST(CCLayerTreeHostCommonTest, verifyLayerTransformsInHighDPI)
3425 { 3444 {
3426 // Verify draw and screen space transforms of layers not in a surface. 3445 // Verify draw and screen space transforms of layers not in a surface.
3427 MockContentLayerChromiumClient delegate; 3446 MockContentLayerChromiumClient delegate;
3428 WebTransformationMatrix identityMatrix; 3447 WebTransformationMatrix identityMatrix;
3429 3448
3430 RefPtr<ContentLayerChromium> parent = createDrawableContentLayerChromium(&de legate); 3449 RefPtr<ContentLayerChromium> parent = createDrawableContentLayerChromium(&de legate);
3431 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true); 3450 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true);
3432 3451
3433 RefPtr<ContentLayerChromium> child = createDrawableContentLayerChromium(&del egate); 3452 RefPtr<ContentLayerChromium> child = createDrawableContentLayerChromium(&del egate);
3434 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint(0, 0), FloatPoint(2, 2), IntSize(10, 10), true); 3453 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint(0, 0), FloatPoint(2, 2), IntSize(10, 10), true);
3435 3454
3436 RefPtr<ContentLayerChromium> childNoScale = createDrawableContentLayerChromi um(&delegate); 3455 RefPtr<NoScaleContentLayerChromium> childNoScale = createNoScaleDrawableCont entLayerChromium(&delegate);
3437 setLayerPropertiesForTesting(childNoScale.get(), identityMatrix, identityMat rix, FloatPoint(0, 0), FloatPoint(2, 2), IntSize(10, 10), true); 3456 setLayerPropertiesForTesting(childNoScale.get(), identityMatrix, identityMat rix, FloatPoint(0, 0), FloatPoint(2, 2), IntSize(10, 10), true);
3438 3457
3439 parent->addChild(child); 3458 parent->addChild(child);
3440 parent->addChild(childNoScale); 3459 parent->addChild(childNoScale);
3441 3460
3442 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 3461 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
3443 int dummyMaxTextureSize = 512; 3462 int dummyMaxTextureSize = 512;
3444 3463
3445 const double deviceScaleFactor = 2.5; 3464 const double deviceScaleFactor = 2.5;
3446 parent->setContentsScale(deviceScaleFactor); 3465 const double pageScaleFactor = 1;
3447 child->setContentsScale(deviceScaleFactor);
3448 EXPECT_EQ(childNoScale->contentsScale(), 1);
3449 3466
3450 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), deviceScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); 3467 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerLi st);
3468
3469 EXPECT_EQ(deviceScaleFactor * pageScaleFactor, parent->contentsScale());
3470 EXPECT_EQ(deviceScaleFactor * pageScaleFactor, child->contentsScale());
3471 EXPECT_EQ(1, childNoScale->contentsScale());
3451 3472
3452 EXPECT_EQ(1u, renderSurfaceLayerList.size()); 3473 EXPECT_EQ(1u, renderSurfaceLayerList.size());
3453 3474
3454 // Verify parent transforms 3475 // Verify parent transforms
3455 WebTransformationMatrix expectedParentTransform; 3476 WebTransformationMatrix expectedParentTransform;
3456 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->screenSpace Transform()); 3477 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->screenSpace Transform());
3457 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->drawTransfo rm()); 3478 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->drawTransfo rm());
3458 3479
3459 // Verify results of transformed parent rects 3480 // Verify results of transformed parent rects
3460 FloatRect parentContentBounds(FloatPoint(), FloatSize(parent->contentBounds( ))); 3481 FloatRect parentContentBounds(FloatPoint(), FloatSize(parent->contentBounds( )));
(...skipping 26 matching lines...) Expand all
3487 3508
3488 // Verify childNoScale transforms 3509 // Verify childNoScale transforms
3489 WebTransformationMatrix expectedChildNoScaleTransform = child->drawTransform (); 3510 WebTransformationMatrix expectedChildNoScaleTransform = child->drawTransform ();
3490 // All transforms operate on content rects. The child's content rect 3511 // All transforms operate on content rects. The child's content rect
3491 // incorporates device scale, but the childNoScale does not; add it here. 3512 // incorporates device scale, but the childNoScale does not; add it here.
3492 expectedChildNoScaleTransform.scale(deviceScaleFactor); 3513 expectedChildNoScaleTransform.scale(deviceScaleFactor);
3493 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildNoScaleTransform, childNoScale- >drawTransform()); 3514 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildNoScaleTransform, childNoScale- >drawTransform());
3494 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildNoScaleTransform, childNoScale- >screenSpaceTransform()); 3515 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedChildNoScaleTransform, childNoScale- >screenSpaceTransform());
3495 } 3516 }
3496 3517
3518 TEST(CCLayerTreeHostCommonTest, verifyContentsScale)
3519 {
3520 MockContentLayerChromiumClient delegate;
3521 WebTransformationMatrix identityMatrix;
3522
3523 WebTransformationMatrix parentScaleMatrix;
3524 const double initialParentScale = 1.75;
3525 parentScaleMatrix.scale(initialParentScale);
3526
3527 WebTransformationMatrix childScaleMatrix;
3528 const double initialChildScale = 1.25;
3529 childScaleMatrix.scale(initialChildScale);
3530
3531 RefPtr<ContentLayerChromium> parent = createDrawableContentLayerChromium(&de legate);
3532 setLayerPropertiesForTesting(parent.get(), parentScaleMatrix, identityMatrix , FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true);
3533
3534 RefPtr<ContentLayerChromium> childScale = createDrawableContentLayerChromium (&delegate);
3535 setLayerPropertiesForTesting(childScale.get(), childScaleMatrix, identityMat rix, FloatPoint(0, 0), FloatPoint(2, 2), IntSize(10, 10), true);
3536
3537 RefPtr<NoScaleContentLayerChromium> childNoScale = createNoScaleDrawableCont entLayerChromium(&delegate);
3538 setLayerPropertiesForTesting(childNoScale.get(), childScaleMatrix, identityM atrix, FloatPoint(0, 0), FloatPoint(12, 12), IntSize(10, 10), true);
3539
3540 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
3541 // Page scale should not apply to the parent.
3542 parent->setBoundsContainPageScale(true);
3543
3544 parent->addChild(childScale);
3545 parent->addChild(childNoScale);
3546
3547 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
3548 int dummyMaxTextureSize = 512;
3549
3550 double deviceScaleFactor = 2.5;
3551 double pageScaleFactor = 1.5;
3552
3553 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
3554 WebTransformationMatrix pageScaleMatrix;
3555 pageScaleMatrix.scale(pageScaleFactor);
3556 parent->setSublayerTransform(pageScaleMatrix);
3557
3558 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerLi st);
3559
3560 EXPECT_FLOAT_EQ(deviceScaleFactor * initialParentScale, parent->contentsScal e());
3561 EXPECT_FLOAT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * i nitialChildScale, childScale->contentsScale());
3562 EXPECT_FLOAT_EQ(1, childNoScale->contentsScale());
3563
3564 // The parent is scaled up and shouldn't need to scale during draw. The chil d that can scale its contents should
3565 // also not need to scale during draw. The other should.
3566 // There is some rounding error due to contentBounds being a rounded integer .
3567 EXPECT_NEAR(parent->drawTransform().m11(), 1, 0.01);
3568 EXPECT_NEAR(parent->drawTransform().m22(), 1, 0.01);
3569 EXPECT_NEAR(childScale->drawTransform().m11(), 1, 0.01);
3570 EXPECT_NEAR(childScale->drawTransform().m22(), 1, 0.01);
3571 EXPECT_FLOAT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * i nitialChildScale, childNoScale->drawTransform().m11());
3572 EXPECT_FLOAT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * i nitialChildScale, childNoScale->drawTransform().m22());
3573
3574 // If the transform changes, we expect the contentsScale to remain unchanged .
3575 childScale->setTransform(identityMatrix);
3576
3577 renderSurfaceLayerList.clear();
3578 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerLi st);
3579
3580 EXPECT_FLOAT_EQ(deviceScaleFactor * initialParentScale, parent->contentsScal e());
3581 EXPECT_FLOAT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * i nitialChildScale, childScale->contentsScale());
3582 EXPECT_FLOAT_EQ(1, childNoScale->contentsScale());
3583
3584 // But if the deviceScaleFactor or pageScaleFactor changes, then it should b e updated, but using the initial transform.
3585 deviceScaleFactor = 2.25;
3586 pageScaleFactor = 1.25;
3587
3588 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
3589 pageScaleMatrix = identityMatrix;
3590 pageScaleMatrix.scale(pageScaleFactor);
3591 parent->setSublayerTransform(pageScaleMatrix);
3592
3593 renderSurfaceLayerList.clear();
3594 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerLi st);
3595
3596 EXPECT_FLOAT_EQ(deviceScaleFactor * initialParentScale, parent->contentsScal e());
3597 EXPECT_FLOAT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * i nitialChildScale, childScale->contentsScale());
3598 EXPECT_FLOAT_EQ(1, childNoScale->contentsScale());
3599 }
3600
3601 TEST(CCLayerTreeHostCommonTest, verifyContentsScaleForSurfaces)
3602 {
3603 MockContentLayerChromiumClient delegate;
3604 WebTransformationMatrix identityMatrix;
3605
3606 WebTransformationMatrix parentScaleMatrix;
3607 const double initialParentScale = 2;
3608 parentScaleMatrix.scale(initialParentScale);
3609
3610 WebTransformationMatrix childScaleMatrix;
3611 const double initialChildScale = 3;
3612 childScaleMatrix.scale(initialChildScale);
3613
3614 RefPtr<ContentLayerChromium> parent = createDrawableContentLayerChromium(&de legate);
3615 setLayerPropertiesForTesting(parent.get(), parentScaleMatrix, identityMatrix , FloatPoint(0, 0), FloatPoint(0, 0), IntSize(100, 100), true);
3616
3617 RefPtr<ContentLayerChromium> surfaceScale = createDrawableContentLayerChromi um(&delegate);
3618 setLayerPropertiesForTesting(surfaceScale.get(), childScaleMatrix, identityM atrix, FloatPoint(0, 0), FloatPoint(2, 2), IntSize(10, 10), true);
3619
3620 RefPtr<ContentLayerChromium> surfaceScaleChildScale = createDrawableContentL ayerChromium(&delegate);
3621 setLayerPropertiesForTesting(surfaceScaleChildScale.get(), childScaleMatrix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(10, 10), true);
3622
3623 RefPtr<NoScaleContentLayerChromium> surfaceScaleChildNoScale = createNoScale DrawableContentLayerChromium(&delegate);
3624 setLayerPropertiesForTesting(surfaceScaleChildNoScale.get(), childScaleMatri x, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(10, 10), true);
3625
3626 RefPtr<NoScaleContentLayerChromium> surfaceNoScale = createNoScaleDrawableCo ntentLayerChromium(&delegate);
3627 setLayerPropertiesForTesting(surfaceNoScale.get(), childScaleMatrix, identit yMatrix, FloatPoint(0, 0), FloatPoint(12, 12), IntSize(10, 10), true);
3628
3629 RefPtr<ContentLayerChromium> surfaceNoScaleChildScale = createDrawableConten tLayerChromium(&delegate);
3630 setLayerPropertiesForTesting(surfaceNoScaleChildScale.get(), childScaleMatri x, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(10, 10), true);
3631
3632 RefPtr<NoScaleContentLayerChromium> surfaceNoScaleChildNoScale = createNoSca leDrawableContentLayerChromium(&delegate);
3633 setLayerPropertiesForTesting(surfaceNoScaleChildNoScale.get(), childScaleMat rix, identityMatrix, FloatPoint(0, 0), FloatPoint(0, 0), IntSize(10, 10), true);
3634
3635 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
3636 // Page scale should not apply to the parent.
3637 parent->setBoundsContainPageScale(true);
3638
3639 parent->addChild(surfaceScale);
3640 parent->addChild(surfaceNoScale);
3641
3642 surfaceScale->setForceRenderSurface(true);
3643 surfaceScale->addChild(surfaceScaleChildScale);
3644 surfaceScale->addChild(surfaceScaleChildNoScale);
3645
3646 surfaceNoScale->setForceRenderSurface(true);
3647 surfaceNoScale->addChild(surfaceNoScaleChildScale);
3648 surfaceNoScale->addChild(surfaceNoScaleChildNoScale);
3649
3650 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
3651 int dummyMaxTextureSize = 512;
3652
3653 double deviceScaleFactor = 5;
3654 double pageScaleFactor = 7;
3655
3656 // FIXME: Remove this when pageScaleFactor is applied in the compositor.
3657 WebTransformationMatrix pageScaleMatrix;
3658 pageScaleMatrix.scale(pageScaleFactor);
3659 parent->setSublayerTransform(pageScaleMatrix);
3660
3661 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), deviceScaleFactor, pageScaleFactor, dummyMaxTextureSize, renderSurfaceLayerLi st);
3662
3663 EXPECT_EQ(deviceScaleFactor * initialParentScale, parent->contentsScale());
3664 EXPECT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * initial ChildScale, surfaceScale->contentsScale());
3665 EXPECT_EQ(1, surfaceNoScale->contentsScale());
3666 // If the surface it draws into is scaling, then the contents scale should r eflect both the layer's scale plus the surface's scale.
3667 EXPECT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * initial ChildScale * initialChildScale, surfaceScaleChildScale->contentsScale());
3668 EXPECT_EQ(1, surfaceScaleChildNoScale->contentsScale());
3669 // If the surface it draws into won't scale, then the contents scale should just reflect the size it will appear in its target surface.
3670 EXPECT_EQ(initialChildScale, surfaceNoScaleChildScale->contentsScale());
3671 EXPECT_EQ(1, surfaceNoScaleChildNoScale->contentsScale());
3672
3673 // The parent is scaled up and shouldn't need to scale during draw.
3674 EXPECT_FLOAT_EQ(1, parent->drawTransform().m11());
3675 EXPECT_FLOAT_EQ(1, parent->drawTransform().m22());
3676
3677 // The surfaceScale can apply contents scale so it's owned RenderSurface is scaled also, and the layer shouldn't need to scale during draw.
3678 EXPECT_FLOAT_EQ(1, surfaceScale->drawTransform().m11());
3679 EXPECT_FLOAT_EQ(1, surfaceScale->drawTransform().m22());
3680
3681 // The surfaceScale RenderSurface will be scaled by its owning layer's conte ntsScale, so it shouldn't need to scale during draw.
3682 EXPECT_FLOAT_EQ(1, surfaceScale->renderSurface()->drawTransform().m11());
3683 EXPECT_FLOAT_EQ(1, surfaceScale->renderSurface()->drawTransform().m22());
3684
3685 // The surfaceScaleChildScale can apply contents scale so it shouldn't need to scale during draw.
3686 EXPECT_FLOAT_EQ(1, surfaceScaleChildScale->drawTransform().m11());
3687 EXPECT_FLOAT_EQ(1, surfaceScaleChildScale->drawTransform().m22());
3688
3689 // The surfaceScaleChildNoScale can not apply contents scale, so it needs to be scaled during draw.
3690 // It will be scaled to draw at the scale of its target surface, along with its own scale.
3691 EXPECT_FLOAT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * i nitialChildScale * initialChildScale, surfaceScaleChildNoScale->drawTransform(). m11());
3692 EXPECT_FLOAT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * i nitialChildScale * initialChildScale, surfaceScaleChildNoScale->drawTransform(). m22());
3693
3694 // The surfaceNoScale can not apply contents scale so it's owned RenderSurfa ce is not scaled. So the layer should not be scaled while drawing to its surface .
3695 EXPECT_FLOAT_EQ(1, surfaceNoScale->drawTransform().m11());
3696 EXPECT_FLOAT_EQ(1, surfaceNoScale->drawTransform().m22());
3697
3698 // The surfaceScale RenderSurface will not be scaled by its owning layer's c ontentsScale, so it should be scaled during draw.
3699 EXPECT_FLOAT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * i nitialChildScale, surfaceNoScale->renderSurface()->drawTransform().m11());
3700 EXPECT_FLOAT_EQ(deviceScaleFactor * pageScaleFactor * initialParentScale * i nitialChildScale, surfaceNoScale->renderSurface()->drawTransform().m22());
3701
3702 // The surfaceScaleChildScale can apply contents scale so it shouldn't need to scale during draw.
3703 EXPECT_FLOAT_EQ(1, surfaceNoScaleChildScale->drawTransform().m11());
3704 EXPECT_FLOAT_EQ(1, surfaceNoScaleChildScale->drawTransform().m22());
3705
3706 // The surfaceScaleChildNoScale can not apply contents scale, so it needs to be scaled during draw.
3707 // Since its target surface is not scaled, it should only be scaled by its o wn scale.
3708 EXPECT_FLOAT_EQ(initialChildScale, surfaceNoScaleChildNoScale->drawTransform ().m11());
3709 EXPECT_FLOAT_EQ(initialChildScale, surfaceNoScaleChildNoScale->drawTransform ().m22());
3710
3711 }
3712
3497 TEST(CCLayerTreeHostCommonTest, verifyRenderSurfaceTransformsInHighDPI) 3713 TEST(CCLayerTreeHostCommonTest, verifyRenderSurfaceTransformsInHighDPI)
3498 { 3714 {
3499 MockContentLayerChromiumClient delegate; 3715 MockContentLayerChromiumClient delegate;
3500 WebTransformationMatrix identityMatrix; 3716 WebTransformationMatrix identityMatrix;
3501 3717
3502 RefPtr<ContentLayerChromium> parent = createDrawableContentLayerChromium(&de legate); 3718 RefPtr<ContentLayerChromium> parent = createDrawableContentLayerChromium(&de legate);
3503 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(30, 30), true); 3719 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, F loatPoint(0, 0), FloatPoint(0, 0), IntSize(30, 30), true);
3504 3720
3505 RefPtr<ContentLayerChromium> child = createDrawableContentLayerChromium(&del egate); 3721 RefPtr<ContentLayerChromium> child = createDrawableContentLayerChromium(&del egate);
3506 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint(0, 0), FloatPoint(2, 2), IntSize(10, 10), true); 3722 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, Fl oatPoint(0, 0), FloatPoint(2, 2), IntSize(10, 10), true);
(...skipping 14 matching lines...) Expand all
3521 3737
3522 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList; 3738 Vector<RefPtr<LayerChromium> > renderSurfaceLayerList;
3523 int dummyMaxTextureSize = 512; 3739 int dummyMaxTextureSize = 512;
3524 3740
3525 const double deviceScaleFactor = 1.5; 3741 const double deviceScaleFactor = 1.5;
3526 parent->setContentsScale(deviceScaleFactor); 3742 parent->setContentsScale(deviceScaleFactor);
3527 child->setContentsScale(deviceScaleFactor); 3743 child->setContentsScale(deviceScaleFactor);
3528 duplicateChildNonOwner->setContentsScale(deviceScaleFactor); 3744 duplicateChildNonOwner->setContentsScale(deviceScaleFactor);
3529 replica->setContentsScale(deviceScaleFactor); 3745 replica->setContentsScale(deviceScaleFactor);
3530 3746
3531 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), deviceScaleFactor, dummyMaxTextureSize, renderSurfaceLayerList); 3747 CCLayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds( ), deviceScaleFactor, 1, dummyMaxTextureSize, renderSurfaceLayerList);
3532 3748
3533 // We should have two render surfaces. The root's render surface and child's 3749 // We should have two render surfaces. The root's render surface and child's
3534 // render surface (it needs one because it has a replica layer). 3750 // render surface (it needs one because it has a replica layer).
3535 EXPECT_EQ(2u, renderSurfaceLayerList.size()); 3751 EXPECT_EQ(2u, renderSurfaceLayerList.size());
3536 3752
3537 WebTransformationMatrix expectedParentTransform; 3753 WebTransformationMatrix expectedParentTransform;
3538 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->screenSpace Transform()); 3754 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->screenSpace Transform());
3539 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->drawTransfo rm()); 3755 EXPECT_TRANSFORMATION_MATRIX_EQ(expectedParentTransform, parent->drawTransfo rm());
3540 3756
3541 WebTransformationMatrix expectedDrawTransform; 3757 WebTransformationMatrix expectedDrawTransform;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
3592 int nonexistentId = -1; 3808 int nonexistentId = -1;
3593 EXPECT_EQ(root, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), root-> id())); 3809 EXPECT_EQ(root, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), root-> id()));
3594 EXPECT_EQ(child, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), child ->id())); 3810 EXPECT_EQ(child, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), child ->id()));
3595 EXPECT_EQ(grandChild, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), grandChild->id())); 3811 EXPECT_EQ(grandChild, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), grandChild->id()));
3596 EXPECT_EQ(maskLayer, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), m askLayer->id())); 3812 EXPECT_EQ(maskLayer, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), m askLayer->id()));
3597 EXPECT_EQ(replicaLayer, CCLayerTreeHostCommon::findLayerInSubtree(root.get() , replicaLayer->id())); 3813 EXPECT_EQ(replicaLayer, CCLayerTreeHostCommon::findLayerInSubtree(root.get() , replicaLayer->id()));
3598 EXPECT_EQ(0, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), nonexiste ntId)); 3814 EXPECT_EQ(0, CCLayerTreeHostCommon::findLayerInSubtree(root.get(), nonexiste ntId));
3599 } 3815 }
3600 3816
3601 } // namespace 3817 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698