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

Side by Side Diff: cc/damage_tracker_unittest.cc

Issue 11519018: [cc] Make LayerImpls point at LayerTreeImpl instead of LTHI (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | cc/delegated_renderer_layer.h » ('j') | cc/layer.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/damage_tracker.h" 5 #include "cc/damage_tracker.h"
6 6
7 #include "cc/layer_impl.h" 7 #include "cc/layer_impl.h"
8 #include "cc/layer_tree_host_common.h" 8 #include "cc/layer_tree_host_common.h"
9 #include "cc/math_util.h" 9 #include "cc/math_util.h"
10 #include "cc/single_thread_proxy.h" 10 #include "cc/single_thread_proxy.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 67
68 class DamageTrackerTest : public testing::Test { 68 class DamageTrackerTest : public testing::Test {
69 public: 69 public:
70 DamageTrackerTest() 70 DamageTrackerTest()
71 : m_hostImpl(&m_proxy) 71 : m_hostImpl(&m_proxy)
72 { 72 {
73 } 73 }
74 74
75 scoped_ptr<LayerImpl> createTestTreeWithOneSurface() 75 scoped_ptr<LayerImpl> createTestTreeWithOneSurface()
76 { 76 {
77 scoped_ptr<LayerImpl> root = LayerImpl::create(&m_hostImpl, 1); 77 scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl.activeTree(), 1);
78 scoped_ptr<LayerImpl> child = LayerImpl::create(&m_hostImpl, 2); 78 scoped_ptr<LayerImpl> child = LayerImpl::create(m_hostImpl.activeTree(), 2);
79 79
80 root->setPosition(gfx::PointF()); 80 root->setPosition(gfx::PointF());
81 root->setAnchorPoint(gfx::PointF()); 81 root->setAnchorPoint(gfx::PointF());
82 root->setBounds(gfx::Size(500, 500)); 82 root->setBounds(gfx::Size(500, 500));
83 root->setContentBounds(gfx::Size(500, 500)); 83 root->setContentBounds(gfx::Size(500, 500));
84 root->setDrawsContent(true); 84 root->setDrawsContent(true);
85 root->createRenderSurface(); 85 root->createRenderSurface();
86 root->renderSurface()->setContentRect(gfx::Rect(gfx::Point(), gfx::Size( 500, 500))); 86 root->renderSurface()->setContentRect(gfx::Rect(gfx::Point(), gfx::Size( 500, 500)));
87 87
88 child->setPosition(gfx::PointF(100, 100)); 88 child->setPosition(gfx::PointF(100, 100));
89 child->setAnchorPoint(gfx::PointF()); 89 child->setAnchorPoint(gfx::PointF());
90 child->setBounds(gfx::Size(30, 30)); 90 child->setBounds(gfx::Size(30, 30));
91 child->setContentBounds(gfx::Size(30, 30)); 91 child->setContentBounds(gfx::Size(30, 30));
92 child->setDrawsContent(true); 92 child->setDrawsContent(true);
93 root->addChild(child.Pass()); 93 root->addChild(child.Pass());
94 94
95 return root.Pass(); 95 return root.Pass();
96 } 96 }
97 97
98 scoped_ptr<LayerImpl> createTestTreeWithTwoSurfaces() 98 scoped_ptr<LayerImpl> createTestTreeWithTwoSurfaces()
99 { 99 {
100 // This test tree has two render surfaces: one for the root, and one for 100 // This test tree has two render surfaces: one for the root, and one for
101 // child1. Additionally, the root has a second child layer, and child1 h as two 101 // child1. Additionally, the root has a second child layer, and child1 h as two
102 // children of its own. 102 // children of its own.
103 103
104 scoped_ptr<LayerImpl> root = LayerImpl::create(&m_hostImpl, 1); 104 scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl.activeTree(), 1);
105 scoped_ptr<LayerImpl> child1 = LayerImpl::create(&m_hostImpl, 2); 105 scoped_ptr<LayerImpl> child1 = LayerImpl::create(m_hostImpl.activeTree() , 2);
106 scoped_ptr<LayerImpl> child2 = LayerImpl::create(&m_hostImpl, 3); 106 scoped_ptr<LayerImpl> child2 = LayerImpl::create(m_hostImpl.activeTree() , 3);
107 scoped_ptr<LayerImpl> grandChild1 = LayerImpl::create(&m_hostImpl, 4); 107 scoped_ptr<LayerImpl> grandChild1 = LayerImpl::create(m_hostImpl.activeT ree(), 4);
108 scoped_ptr<LayerImpl> grandChild2 = LayerImpl::create(&m_hostImpl, 5); 108 scoped_ptr<LayerImpl> grandChild2 = LayerImpl::create(m_hostImpl.activeT ree(), 5);
109 109
110 root->setPosition(gfx::PointF()); 110 root->setPosition(gfx::PointF());
111 root->setAnchorPoint(gfx::PointF()); 111 root->setAnchorPoint(gfx::PointF());
112 root->setBounds(gfx::Size(500, 500)); 112 root->setBounds(gfx::Size(500, 500));
113 root->setContentBounds(gfx::Size(500, 500)); 113 root->setContentBounds(gfx::Size(500, 500));
114 root->setDrawsContent(true); 114 root->setDrawsContent(true);
115 root->createRenderSurface(); 115 root->createRenderSurface();
116 root->renderSurface()->setContentRect(gfx::Rect(gfx::Point(), gfx::Size( 500, 500))); 116 root->renderSurface()->setContentRect(gfx::Rect(gfx::Point(), gfx::Size( 500, 500)));
117 117
118 child1->setPosition(gfx::PointF(100, 100)); 118 child1->setPosition(gfx::PointF(100, 100));
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 529
530 TEST_F(DamageTrackerTest, verifyDamageForAddingAndRemovingLayer) 530 TEST_F(DamageTrackerTest, verifyDamageForAddingAndRemovingLayer)
531 { 531 {
532 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface(); 532 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface();
533 LayerImpl* child1 = root->children()[0]; 533 LayerImpl* child1 = root->children()[0];
534 534
535 // CASE 1: Adding a new layer should cause the appropriate damage. 535 // CASE 1: Adding a new layer should cause the appropriate damage.
536 // 536 //
537 clearDamageForAllSurfaces(root.get()); 537 clearDamageForAllSurfaces(root.get());
538 { 538 {
539 scoped_ptr<LayerImpl> child2 = LayerImpl::create(&m_hostImpl, 3); 539 scoped_ptr<LayerImpl> child2 = LayerImpl::create(m_hostImpl.activeTree() , 3);
540 child2->setPosition(gfx::PointF(400, 380)); 540 child2->setPosition(gfx::PointF(400, 380));
541 child2->setAnchorPoint(gfx::PointF()); 541 child2->setAnchorPoint(gfx::PointF());
542 child2->setBounds(gfx::Size(6, 8)); 542 child2->setBounds(gfx::Size(6, 8));
543 child2->setContentBounds(gfx::Size(6, 8)); 543 child2->setContentBounds(gfx::Size(6, 8));
544 child2->setDrawsContent(true); 544 child2->setDrawsContent(true);
545 root->addChild(child2.Pass()); 545 root->addChild(child2.Pass());
546 } 546 }
547 emulateDrawingOneFrame(root.get()); 547 emulateDrawingOneFrame(root.get());
548 548
549 // Sanity check - all 3 layers should be on the same render surface; render surfaces are tested elsewhere. 549 // Sanity check - all 3 layers should be on the same render surface; render surfaces are tested elsewhere.
(...skipping 20 matching lines...) Expand all
570 570
571 TEST_F(DamageTrackerTest, verifyDamageForNewUnchangedLayer) 571 TEST_F(DamageTrackerTest, verifyDamageForNewUnchangedLayer)
572 { 572 {
573 // If child2 is added to the layer tree, but it doesn't have any explicit da mage of 573 // If child2 is added to the layer tree, but it doesn't have any explicit da mage of
574 // its own, it should still indeed damage the target surface. 574 // its own, it should still indeed damage the target surface.
575 575
576 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface(); 576 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface();
577 577
578 clearDamageForAllSurfaces(root.get()); 578 clearDamageForAllSurfaces(root.get());
579 { 579 {
580 scoped_ptr<LayerImpl> child2 = LayerImpl::create(&m_hostImpl, 3); 580 scoped_ptr<LayerImpl> child2 = LayerImpl::create(m_hostImpl.activeTree() , 3);
581 child2->setPosition(gfx::PointF(400, 380)); 581 child2->setPosition(gfx::PointF(400, 380));
582 child2->setAnchorPoint(gfx::PointF()); 582 child2->setAnchorPoint(gfx::PointF());
583 child2->setBounds(gfx::Size(6, 8)); 583 child2->setBounds(gfx::Size(6, 8));
584 child2->setContentBounds(gfx::Size(6, 8)); 584 child2->setContentBounds(gfx::Size(6, 8));
585 child2->setDrawsContent(true); 585 child2->setDrawsContent(true);
586 child2->resetAllChangeTrackingForSubtree(); 586 child2->resetAllChangeTrackingForSubtree();
587 // Sanity check the initial conditions of the test, if these asserts tri gger, it 587 // Sanity check the initial conditions of the test, if these asserts tri gger, it
588 // means the test no longer actually covers the intended scenario. 588 // means the test no longer actually covers the intended scenario.
589 ASSERT_FALSE(child2->layerPropertyChanged()); 589 ASSERT_FALSE(child2->layerPropertyChanged());
590 ASSERT_TRUE(child2->updateRect().IsEmpty()); 590 ASSERT_TRUE(child2->updateRect().IsEmpty());
591 root->addChild(child2.Pass()); 591 root->addChild(child2.Pass());
592 } 592 }
593 emulateDrawingOneFrame(root.get()); 593 emulateDrawingOneFrame(root.get());
594 594
595 // Sanity check - all 3 layers should be on the same render surface; render surfaces are tested elsewhere. 595 // Sanity check - all 3 layers should be on the same render surface; render surfaces are tested elsewhere.
596 ASSERT_EQ(3u, root->renderSurface()->layerList().size()); 596 ASSERT_EQ(3u, root->renderSurface()->layerList().size());
597 597
598 gfx::RectF rootDamageRect = root->renderSurface()->damageTracker()->currentD amageRect(); 598 gfx::RectF rootDamageRect = root->renderSurface()->damageTracker()->currentD amageRect();
599 EXPECT_FLOAT_RECT_EQ(gfx::RectF(400, 380, 6, 8), rootDamageRect); 599 EXPECT_FLOAT_RECT_EQ(gfx::RectF(400, 380, 6, 8), rootDamageRect);
600 } 600 }
601 601
602 TEST_F(DamageTrackerTest, verifyDamageForMultipleLayers) 602 TEST_F(DamageTrackerTest, verifyDamageForMultipleLayers)
603 { 603 {
604 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface(); 604 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface();
605 LayerImpl* child1 = root->children()[0]; 605 LayerImpl* child1 = root->children()[0];
606 606
607 // In this test we don't want the above tree manipulation to be considered p art of the same frame. 607 // In this test we don't want the above tree manipulation to be considered p art of the same frame.
608 clearDamageForAllSurfaces(root.get()); 608 clearDamageForAllSurfaces(root.get());
609 { 609 {
610 scoped_ptr<LayerImpl> child2 = LayerImpl::create(&m_hostImpl, 3); 610 scoped_ptr<LayerImpl> child2 = LayerImpl::create(m_hostImpl.activeTree() , 3);
611 child2->setPosition(gfx::PointF(400, 380)); 611 child2->setPosition(gfx::PointF(400, 380));
612 child2->setAnchorPoint(gfx::PointF()); 612 child2->setAnchorPoint(gfx::PointF());
613 child2->setBounds(gfx::Size(6, 8)); 613 child2->setBounds(gfx::Size(6, 8));
614 child2->setContentBounds(gfx::Size(6, 8)); 614 child2->setContentBounds(gfx::Size(6, 8));
615 child2->setDrawsContent(true); 615 child2->setDrawsContent(true);
616 root->addChild(child2.Pass()); 616 root->addChild(child2.Pass());
617 } 617 }
618 LayerImpl* child2 = root->children()[1]; 618 LayerImpl* child2 = root->children()[1];
619 emulateDrawingOneFrame(root.get()); 619 emulateDrawingOneFrame(root.get());
620 620
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 LayerImpl* grandChild2 = child1->children()[1]; 821 LayerImpl* grandChild2 = child1->children()[1];
822 822
823 // Damage on a surface that has a reflection should cause the target surface to 823 // Damage on a surface that has a reflection should cause the target surface to
824 // receive the surface's damage and the surface's reflected damage. 824 // receive the surface's damage and the surface's reflected damage.
825 825
826 // For this test case, we modify grandChild2, and add grandChild3 to extend the bounds 826 // For this test case, we modify grandChild2, and add grandChild3 to extend the bounds
827 // of child1's surface. This way, we can test reflection changes without cha nging 827 // of child1's surface. This way, we can test reflection changes without cha nging
828 // contentBounds of the surface. 828 // contentBounds of the surface.
829 grandChild2->setPosition(gfx::PointF(180, 180)); 829 grandChild2->setPosition(gfx::PointF(180, 180));
830 { 830 {
831 scoped_ptr<LayerImpl> grandChild3 = LayerImpl::create(&m_hostImpl, 6); 831 scoped_ptr<LayerImpl> grandChild3 = LayerImpl::create(m_hostImpl.activeT ree(), 6);
832 grandChild3->setPosition(gfx::PointF(240, 240)); 832 grandChild3->setPosition(gfx::PointF(240, 240));
833 grandChild3->setAnchorPoint(gfx::PointF()); 833 grandChild3->setAnchorPoint(gfx::PointF());
834 grandChild3->setBounds(gfx::Size(10, 10)); 834 grandChild3->setBounds(gfx::Size(10, 10));
835 grandChild3->setContentBounds(gfx::Size(10, 10)); 835 grandChild3->setContentBounds(gfx::Size(10, 10));
836 grandChild3->setDrawsContent(true); 836 grandChild3->setDrawsContent(true);
837 child1->addChild(grandChild3.Pass()); 837 child1->addChild(grandChild3.Pass());
838 } 838 }
839 child1->setOpacity(0.5); 839 child1->setOpacity(0.5);
840 emulateDrawingOneFrame(root.get()); 840 emulateDrawingOneFrame(root.get());
841 841
842 // CASE 1: adding a reflection about the left edge of grandChild1. 842 // CASE 1: adding a reflection about the left edge of grandChild1.
843 // 843 //
844 clearDamageForAllSurfaces(root.get()); 844 clearDamageForAllSurfaces(root.get());
845 { 845 {
846 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(&m_hostImpl , 7); 846 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(m_hostImpl. activeTree(), 7);
847 grandChild1Replica->setPosition(gfx::PointF()); 847 grandChild1Replica->setPosition(gfx::PointF());
848 grandChild1Replica->setAnchorPoint(gfx::PointF()); 848 grandChild1Replica->setAnchorPoint(gfx::PointF());
849 gfx::Transform reflection; 849 gfx::Transform reflection;
850 reflection.Scale3d(-1, 1, 1); 850 reflection.Scale3d(-1, 1, 1);
851 grandChild1Replica->setTransform(reflection); 851 grandChild1Replica->setTransform(reflection);
852 grandChild1->setReplicaLayer(grandChild1Replica.Pass()); 852 grandChild1->setReplicaLayer(grandChild1Replica.Pass());
853 } 853 }
854 emulateDrawingOneFrame(root.get()); 854 emulateDrawingOneFrame(root.get());
855 855
856 gfx::RectF grandChildDamageRect = grandChild1->renderSurface()->damageTracke r()->currentDamageRect(); 856 gfx::RectF grandChildDamageRect = grandChild1->renderSurface()->damageTracke r()->currentDamageRect();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface(); 904 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithOneSurface();
905 LayerImpl* child = root->children()[0]; 905 LayerImpl* child = root->children()[0];
906 906
907 // In the current implementation of the damage tracker, changes to mask laye rs should 907 // In the current implementation of the damage tracker, changes to mask laye rs should
908 // damage the entire corresponding surface. 908 // damage the entire corresponding surface.
909 909
910 clearDamageForAllSurfaces(root.get()); 910 clearDamageForAllSurfaces(root.get());
911 911
912 // Set up the mask layer. 912 // Set up the mask layer.
913 { 913 {
914 scoped_ptr<LayerImpl> maskLayer = LayerImpl::create(&m_hostImpl, 3); 914 scoped_ptr<LayerImpl> maskLayer = LayerImpl::create(m_hostImpl.activeTre e(), 3);
915 maskLayer->setPosition(child->position()); 915 maskLayer->setPosition(child->position());
916 maskLayer->setAnchorPoint(gfx::PointF()); 916 maskLayer->setAnchorPoint(gfx::PointF());
917 maskLayer->setBounds(child->bounds()); 917 maskLayer->setBounds(child->bounds());
918 maskLayer->setContentBounds(child->bounds()); 918 maskLayer->setContentBounds(child->bounds());
919 child->setMaskLayer(maskLayer.Pass()); 919 child->setMaskLayer(maskLayer.Pass());
920 } 920 }
921 LayerImpl* maskLayer = child->maskLayer(); 921 LayerImpl* maskLayer = child->maskLayer();
922 922
923 // Add opacity and a grandChild so that the render surface persists even aft er we remove the mask. 923 // Add opacity and a grandChild so that the render surface persists even aft er we remove the mask.
924 child->setOpacity(0.5); 924 child->setOpacity(0.5);
925 { 925 {
926 scoped_ptr<LayerImpl> grandChild = LayerImpl::create(&m_hostImpl, 4); 926 scoped_ptr<LayerImpl> grandChild = LayerImpl::create(m_hostImpl.activeTr ee(), 4);
927 grandChild->setPosition(gfx::PointF(2, 2)); 927 grandChild->setPosition(gfx::PointF(2, 2));
928 grandChild->setAnchorPoint(gfx::PointF()); 928 grandChild->setAnchorPoint(gfx::PointF());
929 grandChild->setBounds(gfx::Size(2, 2)); 929 grandChild->setBounds(gfx::Size(2, 2));
930 grandChild->setContentBounds(gfx::Size(2, 2)); 930 grandChild->setContentBounds(gfx::Size(2, 2));
931 grandChild->setDrawsContent(true); 931 grandChild->setDrawsContent(true);
932 child->addChild(grandChild.Pass()); 932 child->addChild(grandChild.Pass());
933 } 933 }
934 emulateDrawingOneFrame(root.get()); 934 emulateDrawingOneFrame(root.get());
935 935
936 // Sanity check that a new surface was created for the child. 936 // Sanity check that a new surface was created for the child.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 LayerImpl* child1 = root->children()[0]; 989 LayerImpl* child1 = root->children()[0];
990 LayerImpl* grandChild1 = child1->children()[0]; 990 LayerImpl* grandChild1 = child1->children()[0];
991 991
992 // Changes to a replica's mask should not damage the original surface, becau se it is 992 // Changes to a replica's mask should not damage the original surface, becau se it is
993 // not masked. But it does damage the ancestor target surface. 993 // not masked. But it does damage the ancestor target surface.
994 994
995 clearDamageForAllSurfaces(root.get()); 995 clearDamageForAllSurfaces(root.get());
996 996
997 // Create a reflection about the left edge of grandChild1. 997 // Create a reflection about the left edge of grandChild1.
998 { 998 {
999 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(&m_hostImpl , 6); 999 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(m_hostImpl. activeTree(), 6);
1000 grandChild1Replica->setPosition(gfx::PointF()); 1000 grandChild1Replica->setPosition(gfx::PointF());
1001 grandChild1Replica->setAnchorPoint(gfx::PointF()); 1001 grandChild1Replica->setAnchorPoint(gfx::PointF());
1002 gfx::Transform reflection; 1002 gfx::Transform reflection;
1003 reflection.Scale3d(-1, 1, 1); 1003 reflection.Scale3d(-1, 1, 1);
1004 grandChild1Replica->setTransform(reflection); 1004 grandChild1Replica->setTransform(reflection);
1005 grandChild1->setReplicaLayer(grandChild1Replica.Pass()); 1005 grandChild1->setReplicaLayer(grandChild1Replica.Pass());
1006 } 1006 }
1007 LayerImpl* grandChild1Replica = grandChild1->replicaLayer(); 1007 LayerImpl* grandChild1Replica = grandChild1->replicaLayer();
1008 1008
1009 // Set up the mask layer on the replica layer 1009 // Set up the mask layer on the replica layer
1010 { 1010 {
1011 scoped_ptr<LayerImpl> replicaMaskLayer = LayerImpl::create(&m_hostImpl, 7); 1011 scoped_ptr<LayerImpl> replicaMaskLayer = LayerImpl::create(m_hostImpl.ac tiveTree(), 7);
1012 replicaMaskLayer->setPosition(gfx::PointF()); 1012 replicaMaskLayer->setPosition(gfx::PointF());
1013 replicaMaskLayer->setAnchorPoint(gfx::PointF()); 1013 replicaMaskLayer->setAnchorPoint(gfx::PointF());
1014 replicaMaskLayer->setBounds(grandChild1->bounds()); 1014 replicaMaskLayer->setBounds(grandChild1->bounds());
1015 replicaMaskLayer->setContentBounds(grandChild1->bounds()); 1015 replicaMaskLayer->setContentBounds(grandChild1->bounds());
1016 grandChild1Replica->setMaskLayer(replicaMaskLayer.Pass()); 1016 grandChild1Replica->setMaskLayer(replicaMaskLayer.Pass());
1017 } 1017 }
1018 LayerImpl* replicaMaskLayer = grandChild1Replica->maskLayer(); 1018 LayerImpl* replicaMaskLayer = grandChild1Replica->maskLayer();
1019 1019
1020 emulateDrawingOneFrame(root.get()); 1020 emulateDrawingOneFrame(root.get());
1021 1021
(...skipping 29 matching lines...) Expand all
1051 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithTwoSurfaces(); 1051 scoped_ptr<LayerImpl> root = createAndSetUpTestTreeWithTwoSurfaces();
1052 LayerImpl* child1 = root->children()[0]; 1052 LayerImpl* child1 = root->children()[0];
1053 LayerImpl* grandChild1 = child1->children()[0]; 1053 LayerImpl* grandChild1 = child1->children()[0];
1054 1054
1055 // Verify that the correct replicaOriginTransform is used for the replicaMas k; 1055 // Verify that the correct replicaOriginTransform is used for the replicaMas k;
1056 clearDamageForAllSurfaces(root.get()); 1056 clearDamageForAllSurfaces(root.get());
1057 1057
1058 grandChild1->setAnchorPoint(gfx::PointF(1, 0)); // This is not exactly the a nchor being tested, but by convention its expected to be the same as the replica 's anchor point. 1058 grandChild1->setAnchorPoint(gfx::PointF(1, 0)); // This is not exactly the a nchor being tested, but by convention its expected to be the same as the replica 's anchor point.
1059 1059
1060 { 1060 {
1061 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(&m_hostImpl , 6); 1061 scoped_ptr<LayerImpl> grandChild1Replica = LayerImpl::create(m_hostImpl. activeTree(), 6);
1062 grandChild1Replica->setPosition(gfx::PointF()); 1062 grandChild1Replica->setPosition(gfx::PointF());
1063 grandChild1Replica->setAnchorPoint(gfx::PointF(1, 0)); // This is the an chor being tested. 1063 grandChild1Replica->setAnchorPoint(gfx::PointF(1, 0)); // This is the an chor being tested.
1064 gfx::Transform reflection; 1064 gfx::Transform reflection;
1065 reflection.Scale3d(-1, 1, 1); 1065 reflection.Scale3d(-1, 1, 1);
1066 grandChild1Replica->setTransform(reflection); 1066 grandChild1Replica->setTransform(reflection);
1067 grandChild1->setReplicaLayer(grandChild1Replica.Pass()); 1067 grandChild1->setReplicaLayer(grandChild1Replica.Pass());
1068 } 1068 }
1069 LayerImpl* grandChild1Replica = grandChild1->replicaLayer(); 1069 LayerImpl* grandChild1Replica = grandChild1->replicaLayer();
1070 1070
1071 // Set up the mask layer on the replica layer 1071 // Set up the mask layer on the replica layer
1072 { 1072 {
1073 scoped_ptr<LayerImpl> replicaMaskLayer = LayerImpl::create(&m_hostImpl, 7); 1073 scoped_ptr<LayerImpl> replicaMaskLayer = LayerImpl::create(m_hostImpl.ac tiveTree(), 7);
1074 replicaMaskLayer->setPosition(gfx::PointF()); 1074 replicaMaskLayer->setPosition(gfx::PointF());
1075 replicaMaskLayer->setAnchorPoint(gfx::PointF()); // note, this is not th e anchor being tested. 1075 replicaMaskLayer->setAnchorPoint(gfx::PointF()); // note, this is not th e anchor being tested.
1076 replicaMaskLayer->setBounds(grandChild1->bounds()); 1076 replicaMaskLayer->setBounds(grandChild1->bounds());
1077 replicaMaskLayer->setContentBounds(grandChild1->bounds()); 1077 replicaMaskLayer->setContentBounds(grandChild1->bounds());
1078 grandChild1Replica->setMaskLayer(replicaMaskLayer.Pass()); 1078 grandChild1Replica->setMaskLayer(replicaMaskLayer.Pass());
1079 } 1079 }
1080 LayerImpl* replicaMaskLayer = grandChild1Replica->maskLayer(); 1080 LayerImpl* replicaMaskLayer = grandChild1Replica->maskLayer();
1081 1081
1082 emulateDrawingOneFrame(root.get()); 1082 emulateDrawingOneFrame(root.get());
1083 1083
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 emulateDrawingOneFrame(root.get()); 1117 emulateDrawingOneFrame(root.get());
1118 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ; 1118 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ;
1119 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 500, 500), rootDamageRect); 1119 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0, 0, 500, 500), rootDamageRect);
1120 } 1120 }
1121 1121
1122 TEST_F(DamageTrackerTest, verifyDamageForEmptyLayerList) 1122 TEST_F(DamageTrackerTest, verifyDamageForEmptyLayerList)
1123 { 1123 {
1124 // Though it should never happen, its a good idea to verify that the damage tracker 1124 // Though it should never happen, its a good idea to verify that the damage tracker
1125 // does not crash when it receives an empty layerList. 1125 // does not crash when it receives an empty layerList.
1126 1126
1127 scoped_ptr<LayerImpl> root = LayerImpl::create(&m_hostImpl, 1); 1127 scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl.activeTree(), 1);
1128 root->createRenderSurface(); 1128 root->createRenderSurface();
1129 1129
1130 ASSERT_TRUE(root == root->renderTarget()); 1130 ASSERT_TRUE(root == root->renderTarget());
1131 RenderSurfaceImpl* targetSurface = root->renderSurface(); 1131 RenderSurfaceImpl* targetSurface = root->renderSurface();
1132 targetSurface->clearLayerLists(); 1132 targetSurface->clearLayerLists();
1133 targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->lay erList(), targetSurface->owningLayerId(), false, gfx::Rect(), 0, WebFilterOperat ions(), 0); 1133 targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->lay erList(), targetSurface->owningLayerId(), false, gfx::Rect(), 0, WebFilterOperat ions(), 0);
1134 1134
1135 gfx::RectF damageRect = targetSurface->damageTracker()->currentDamageRect(); 1135 gfx::RectF damageRect = targetSurface->damageTracker()->currentDamageRect();
1136 EXPECT_TRUE(damageRect.IsEmpty()); 1136 EXPECT_TRUE(damageRect.IsEmpty());
1137 } 1137 }
(...skipping 25 matching lines...) Expand all
1163 EXPECT_TRUE(rootDamageRect.IsEmpty()); 1163 EXPECT_TRUE(rootDamageRect.IsEmpty());
1164 1164
1165 // Damage should remain empty even after one frame, since there's yet no new damage 1165 // Damage should remain empty even after one frame, since there's yet no new damage
1166 emulateDrawingOneFrame(root.get()); 1166 emulateDrawingOneFrame(root.get());
1167 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ; 1167 rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect() ;
1168 EXPECT_TRUE(rootDamageRect.IsEmpty()); 1168 EXPECT_TRUE(rootDamageRect.IsEmpty());
1169 } 1169 }
1170 1170
1171 } // namespace 1171 } // namespace
1172 } // namespace cc 1172 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/delegated_renderer_layer.h » ('j') | cc/layer.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698