Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/layer_tree_host_common.h" | 5 #include "cc/layer_tree_host_common.h" |
| 6 | 6 |
| 7 #include "cc/content_layer.h" | 7 #include "cc/content_layer.h" |
| 8 #include "cc/content_layer_client.h" | 8 #include "cc/content_layer_client.h" |
| 9 #include "cc/layer.h" | 9 #include "cc/layer.h" |
| 10 #include "cc/layer_animation_controller.h" | 10 #include "cc/layer_animation_controller.h" |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 334 root->addChild(parent); | 334 root->addChild(parent); |
| 335 parent->addChild(child); | 335 parent->addChild(child); |
| 336 child->addChild(grandChild); | 336 child->addChild(grandChild); |
| 337 | 337 |
| 338 // One-time setup of root layer | 338 // One-time setup of root layer |
| 339 WebTransformationMatrix identityMatrix; | 339 WebTransformationMatrix identityMatrix; |
| 340 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(1, 2), false); | 340 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, gfx ::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(1, 2), false); |
| 341 | 341 |
| 342 // Child is set up so that a new render surface should be created. | 342 // Child is set up so that a new render surface should be created. |
| 343 child->setOpacity(0.5); | 343 child->setOpacity(0.5); |
| 344 child->setForceRenderSurface(true); | |
| 344 | 345 |
| 345 WebTransformationMatrix parentLayerTransform; | 346 WebTransformationMatrix parentLayerTransform; |
| 346 parentLayerTransform.scale3d(1, 0.9, 1); | 347 parentLayerTransform.scale3d(1, 0.9, 1); |
| 347 WebTransformationMatrix parentTranslationToAnchor; | 348 WebTransformationMatrix parentTranslationToAnchor; |
| 348 parentTranslationToAnchor.translate(25, 30); | 349 parentTranslationToAnchor.translate(25, 30); |
| 349 WebTransformationMatrix parentSublayerMatrix; | 350 WebTransformationMatrix parentSublayerMatrix; |
| 350 parentSublayerMatrix.scale3d(0.9, 1, 3.3); | 351 parentSublayerMatrix.scale3d(0.9, 1, 3.3); |
| 351 WebTransformationMatrix parentTranslationToCenter; | 352 WebTransformationMatrix parentTranslationToCenter; |
| 352 parentTranslationToCenter.translate(50, 60); | 353 parentTranslationToCenter.translate(50, 60); |
| 353 WebTransformationMatrix parentCompositeTransform = parentTranslationToAnchor * parentLayerTransform * parentTranslationToAnchor.inverse() | 354 WebTransformationMatrix parentCompositeTransform = parentTranslationToAnchor * parentLayerTransform * parentTranslationToAnchor.inverse() |
| (...skipping 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1362 | 1363 |
| 1363 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(500, 500), false); | 1364 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(500, 500), false); |
| 1364 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gf x::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(20, 20), false); | 1365 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gf x::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(20, 20), false); |
| 1365 setLayerPropertiesForTesting(grandChild.get(), identityMatrix, identityMatri x, gfx::PointF(0, 0), gfx::PointF(45, 45), gfx::Size(10, 10), false); | 1366 setLayerPropertiesForTesting(grandChild.get(), identityMatrix, identityMatri x, gfx::PointF(0, 0), gfx::PointF(45, 45), gfx::Size(10, 10), false); |
| 1366 setLayerPropertiesForTesting(greatGrandChild.get(), identityMatrix, identity Matrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); | 1367 setLayerPropertiesForTesting(greatGrandChild.get(), identityMatrix, identity Matrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); |
| 1367 setLayerPropertiesForTesting(leafNode1.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(500, 500), false); | 1368 setLayerPropertiesForTesting(leafNode1.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(500, 500), false); |
| 1368 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(20, 20), false); | 1369 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(20, 20), false); |
| 1369 | 1370 |
| 1370 child->setMasksToBounds(true); | 1371 child->setMasksToBounds(true); |
| 1371 child->setOpacity(0.4f); | 1372 child->setOpacity(0.4f); |
| 1373 child->setForceRenderSurface(true); | |
| 1372 grandChild->setOpacity(0.5); | 1374 grandChild->setOpacity(0.5); |
| 1373 greatGrandChild->setOpacity(0.4f); | 1375 greatGrandChild->setOpacity(0.4f); |
| 1374 | 1376 |
| 1375 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; | 1377 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| 1376 int dummyMaxTextureSize = 512; | 1378 int dummyMaxTextureSize = 512; |
| 1377 LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); | 1379 LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| 1378 | 1380 |
| 1379 ASSERT_EQ(2U, renderSurfaceLayerList.size()); | 1381 ASSERT_EQ(2U, renderSurfaceLayerList.size()); |
| 1380 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); | 1382 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); |
| 1381 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id()); | 1383 EXPECT_EQ(child->id(), renderSurfaceLayerList[1]->id()); |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 1408 child->addChild(grandChild); | 1410 child->addChild(grandChild); |
| 1409 grandChild->addChild(leafNode); | 1411 grandChild->addChild(leafNode); |
| 1410 | 1412 |
| 1411 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); | 1413 setLayerPropertiesForTesting(parent.get(), identityMatrix, identityMatrix, g fx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(100, 100), false); |
| 1412 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gf x::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(20, 20), false); | 1414 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gf x::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(20, 20), false); |
| 1413 setLayerPropertiesForTesting(grandChild.get(), identityMatrix, identityMatri x, gfx::PointF(0, 0), gfx::PointF(200, 200), gfx::Size(10, 10), false); | 1415 setLayerPropertiesForTesting(grandChild.get(), identityMatrix, identityMatri x, gfx::PointF(0, 0), gfx::PointF(200, 200), gfx::Size(10, 10), false); |
| 1414 setLayerPropertiesForTesting(leafNode.get(), identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); | 1416 setLayerPropertiesForTesting(leafNode.get(), identityMatrix, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); |
| 1415 | 1417 |
| 1416 parent->setMasksToBounds(true); | 1418 parent->setMasksToBounds(true); |
| 1417 child->setOpacity(0.4f); | 1419 child->setOpacity(0.4f); |
| 1420 child->setForceRenderSurface(true); | |
| 1418 grandChild->setOpacity(0.4f); | 1421 grandChild->setOpacity(0.4f); |
| 1422 grandChild->setForceRenderSurface(true); | |
| 1419 | 1423 |
| 1420 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; | 1424 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| 1421 int dummyMaxTextureSize = 512; | 1425 int dummyMaxTextureSize = 512; |
| 1422 LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); | 1426 LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| 1423 | 1427 |
| 1424 // Without an animation, we should cull child and grandChild from the render SurfaceLayerList. | 1428 // Without an animation, we should cull child and grandChild from the render SurfaceLayerList. |
| 1425 ASSERT_EQ(1U, renderSurfaceLayerList.size()); | 1429 ASSERT_EQ(1U, renderSurfaceLayerList.size()); |
| 1426 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); | 1430 EXPECT_EQ(parent->id(), renderSurfaceLayerList[0]->id()); |
| 1427 | 1431 |
| 1428 // Now put an animating transform on child. | 1432 // Now put an animating transform on child. |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1636 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); | 1640 setLayerPropertiesForTesting(leafNode2.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); |
| 1637 setLayerPropertiesForTesting(leafNode3.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); | 1641 setLayerPropertiesForTesting(leafNode3.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); |
| 1638 setLayerPropertiesForTesting(leafNode4.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); | 1642 setLayerPropertiesForTesting(leafNode4.get(), identityMatrix, identityMatrix , gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 10), false); |
| 1639 | 1643 |
| 1640 child->setMasksToBounds(true); | 1644 child->setMasksToBounds(true); |
| 1641 grandChild3->setMasksToBounds(true); | 1645 grandChild3->setMasksToBounds(true); |
| 1642 grandChild4->setMasksToBounds(true); | 1646 grandChild4->setMasksToBounds(true); |
| 1643 | 1647 |
| 1644 // Force everyone to be a render surface. | 1648 // Force everyone to be a render surface. |
| 1645 child->setOpacity(0.4f); | 1649 child->setOpacity(0.4f); |
| 1650 child->setForceRenderSurface(true); | |
| 1646 grandChild1->setOpacity(0.5); | 1651 grandChild1->setOpacity(0.5); |
| 1652 grandChild1->setForceRenderSurface(true); | |
| 1647 grandChild2->setOpacity(0.5); | 1653 grandChild2->setOpacity(0.5); |
| 1654 grandChild2->setForceRenderSurface(true); | |
| 1648 grandChild3->setOpacity(0.5); | 1655 grandChild3->setOpacity(0.5); |
| 1656 grandChild3->setForceRenderSurface(true); | |
| 1649 grandChild4->setOpacity(0.5); | 1657 grandChild4->setOpacity(0.5); |
| 1658 grandChild4->setForceRenderSurface(true); | |
| 1650 | 1659 |
| 1651 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; | 1660 std::vector<scoped_refptr<Layer> > renderSurfaceLayerList; |
| 1652 int dummyMaxTextureSize = 512; | 1661 int dummyMaxTextureSize = 512; |
| 1653 LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); | 1662 LayerTreeHostCommon::calculateDrawTransforms(parent.get(), parent->bounds(), 1, 1, dummyMaxTextureSize, renderSurfaceLayerList); |
| 1654 | 1663 |
| 1655 ASSERT_TRUE(grandChild1->renderSurface()); | 1664 ASSERT_TRUE(grandChild1->renderSurface()); |
| 1656 ASSERT_TRUE(grandChild2->renderSurface()); | 1665 ASSERT_TRUE(grandChild2->renderSurface()); |
| 1657 ASSERT_TRUE(grandChild3->renderSurface()); | 1666 ASSERT_TRUE(grandChild3->renderSurface()); |
| 1658 EXPECT_FALSE(grandChild4->renderSurface()); // Because grandChild4 is entire ly clipped, it is expected to not have a renderSurface. | 1667 EXPECT_FALSE(grandChild4->renderSurface()); // Because grandChild4 is entire ly clipped, it is expected to not have a renderSurface. |
| 1659 | 1668 |
| (...skipping 2958 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4618 | 4627 |
| 4619 int nonexistentId = -1; | 4628 int nonexistentId = -1; |
| 4620 EXPECT_EQ(root, LayerTreeHostCommon::findLayerInSubtree(root.get(), root->id ())); | 4629 EXPECT_EQ(root, LayerTreeHostCommon::findLayerInSubtree(root.get(), root->id ())); |
| 4621 EXPECT_EQ(child, LayerTreeHostCommon::findLayerInSubtree(root.get(), child-> id())); | 4630 EXPECT_EQ(child, LayerTreeHostCommon::findLayerInSubtree(root.get(), child-> id())); |
| 4622 EXPECT_EQ(grandChild, LayerTreeHostCommon::findLayerInSubtree(root.get(), gr andChild->id())); | 4631 EXPECT_EQ(grandChild, LayerTreeHostCommon::findLayerInSubtree(root.get(), gr andChild->id())); |
| 4623 EXPECT_EQ(maskLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(), mas kLayer->id())); | 4632 EXPECT_EQ(maskLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(), mas kLayer->id())); |
| 4624 EXPECT_EQ(replicaLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(), replicaLayer->id())); | 4633 EXPECT_EQ(replicaLayer, LayerTreeHostCommon::findLayerInSubtree(root.get(), replicaLayer->id())); |
| 4625 EXPECT_EQ(0, LayerTreeHostCommon::findLayerInSubtree(root.get(), nonexistent Id)); | 4634 EXPECT_EQ(0, LayerTreeHostCommon::findLayerInSubtree(root.get(), nonexistent Id)); |
| 4626 } | 4635 } |
| 4627 | 4636 |
| 4637 TEST(LayerTreeHostCommonTest, verifyTransparentImageRenderSurfaceCreation) | |
| 4638 { | |
| 4639 // Make sure that we don't create render passes for transparent images. | |
|
jamesr
2012/11/27 01:34:46
this test doesn't appear to have anything to do wi
| |
| 4640 scoped_refptr<Layer> root = Layer::create(); | |
| 4641 scoped_refptr<Layer> child = Layer::create(); | |
| 4642 scoped_refptr<LayerWithForcedDrawsContent> grandChild = make_scoped_refptr(n ew LayerWithForcedDrawsContent()); | |
| 4643 | |
| 4644 const WebTransformationMatrix identityMatrix; | |
| 4645 setLayerPropertiesForTesting(root.get(), identityMatrix, identityMatrix, gfx ::PointF(), gfx::PointF(), gfx::Size(100, 100), false); | |
| 4646 setLayerPropertiesForTesting(child.get(), identityMatrix, identityMatrix, gf x::PointF(), gfx::PointF(), gfx::Size(10, 10), false); | |
| 4647 setLayerPropertiesForTesting(grandChild.get(), identityMatrix, identityMatri x, gfx::PointF(), gfx::PointF(), gfx::Size(10, 10), false); | |
| 4648 | |
| 4649 root->addChild(child); | |
| 4650 child->addChild(grandChild); | |
| 4651 child->setOpacity(0.5f); | |
| 4652 | |
| 4653 executeCalculateDrawTransformsAndVisibility(root.get()); | |
| 4654 | |
| 4655 EXPECT_FALSE(child->renderSurface()); | |
| 4656 } | |
| 4657 | |
| 4628 } // namespace | 4658 } // namespace |
| 4629 } // namespace cc | 4659 } // namespace cc |
| OLD | NEW |