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

Side by Side Diff: cc/CCLayerTreeHostImplTest.cpp

Issue 10940002: Add wrapper container for a vector of OwnPtr<T> (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/CCLayerTreeHostImpl.cpp ('k') | cc/CCLayerTreeHostTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "CCLayerTreeHostImpl.h" 7 #include "CCLayerTreeHostImpl.h"
8 8
9 #include "CCAnimationTestCommon.h" 9 #include "CCAnimationTestCommon.h"
10 #include "CCGeometryTestUtils.h" 10 #include "CCGeometryTestUtils.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 root->setVisibleContentRect(IntRect(0, 0, 10, 10)); 92 root->setVisibleContentRect(IntRect(0, 0, 10, 10));
93 root->setDrawsContent(true); 93 root->setDrawsContent(true);
94 myHostImpl->setRootLayer(root.release()); 94 myHostImpl->setRootLayer(root.release());
95 return myHostImpl.release(); 95 return myHostImpl.release();
96 } 96 }
97 97
98 static void expectClearedScrollDeltasRecursive(CCLayerImpl* layer) 98 static void expectClearedScrollDeltasRecursive(CCLayerImpl* layer)
99 { 99 {
100 ASSERT_EQ(layer->scrollDelta(), IntSize()); 100 ASSERT_EQ(layer->scrollDelta(), IntSize());
101 for (size_t i = 0; i < layer->children().size(); ++i) 101 for (size_t i = 0; i < layer->children().size(); ++i)
102 expectClearedScrollDeltasRecursive(layer->children()[i].get()); 102 expectClearedScrollDeltasRecursive(layer->children()[i]);
103 } 103 }
104 104
105 static void expectContains(const CCScrollAndScaleSet& scrollInfo, int id, co nst IntSize& scrollDelta) 105 static void expectContains(const CCScrollAndScaleSet& scrollInfo, int id, co nst IntSize& scrollDelta)
106 { 106 {
107 int timesEncountered = 0; 107 int timesEncountered = 0;
108 108
109 for (size_t i = 0; i < scrollInfo.scrolls.size(); ++i) { 109 for (size_t i = 0; i < scrollInfo.scrolls.size(); ++i) {
110 if (scrollInfo.scrolls[i].layerId != id) 110 if (scrollInfo.scrolls[i].layerId != id)
111 continue; 111 continue;
112 EXPECT_EQ(scrollDelta.width(), scrollInfo.scrolls[i].scrollDelta.wid th()); 112 EXPECT_EQ(scrollDelta.width(), scrollInfo.scrolls[i].scrollDelta.wid th());
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 723
724 TEST_F(CCLayerTreeHostImplTest, didDrawNotCalledOnHiddenLayer) 724 TEST_F(CCLayerTreeHostImplTest, didDrawNotCalledOnHiddenLayer)
725 { 725 {
726 // The root layer is always drawn, so run this test on a child layer that 726 // The root layer is always drawn, so run this test on a child layer that
727 // will be masked out by the root layer's bounds. 727 // will be masked out by the root layer's bounds.
728 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1)); 728 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1));
729 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa yer()); 729 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa yer());
730 root->setMasksToBounds(true); 730 root->setMasksToBounds(true);
731 731
732 root->addChild(DidDrawCheckLayer::create(2)); 732 root->addChild(DidDrawCheckLayer::create(2));
733 DidDrawCheckLayer* layer = static_cast<DidDrawCheckLayer*>(root->children()[ 0].get()); 733 DidDrawCheckLayer* layer = static_cast<DidDrawCheckLayer*>(root->children()[ 0]);
734 // Ensure visibleContentRect for layer is empty 734 // Ensure visibleContentRect for layer is empty
735 layer->setPosition(FloatPoint(100, 100)); 735 layer->setPosition(FloatPoint(100, 100));
736 layer->setBounds(IntSize(10, 10)); 736 layer->setBounds(IntSize(10, 10));
737 layer->setContentBounds(IntSize(10, 10)); 737 layer->setContentBounds(IntSize(10, 10));
738 738
739 CCLayerTreeHostImpl::FrameData frame; 739 CCLayerTreeHostImpl::FrameData frame;
740 740
741 EXPECT_FALSE(layer->willDrawCalled()); 741 EXPECT_FALSE(layer->willDrawCalled());
742 EXPECT_FALSE(layer->didDrawCalled()); 742 EXPECT_FALSE(layer->didDrawCalled());
743 743
(...skipping 24 matching lines...) Expand all
768 768
769 TEST_F(CCLayerTreeHostImplTest, willDrawNotCalledOnOccludedLayer) 769 TEST_F(CCLayerTreeHostImplTest, willDrawNotCalledOnOccludedLayer)
770 { 770 {
771 IntSize bigSize(1000, 1000); 771 IntSize bigSize(1000, 1000);
772 m_hostImpl->setViewportSize(bigSize, bigSize); 772 m_hostImpl->setViewportSize(bigSize, bigSize);
773 773
774 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1)); 774 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1));
775 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa yer()); 775 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa yer());
776 776
777 root->addChild(DidDrawCheckLayer::create(2)); 777 root->addChild(DidDrawCheckLayer::create(2));
778 DidDrawCheckLayer* occludedLayer = static_cast<DidDrawCheckLayer*>(root->chi ldren()[0].get()); 778 DidDrawCheckLayer* occludedLayer = static_cast<DidDrawCheckLayer*>(root->chi ldren()[0]);
779 779
780 root->addChild(DidDrawCheckLayer::create(3)); 780 root->addChild(DidDrawCheckLayer::create(3));
781 DidDrawCheckLayer* topLayer = static_cast<DidDrawCheckLayer*>(root->children ()[1].get()); 781 DidDrawCheckLayer* topLayer = static_cast<DidDrawCheckLayer*>(root->children ()[1]);
782 // This layer covers the occludedLayer above. Make this layer large so it ca n occlude. 782 // This layer covers the occludedLayer above. Make this layer large so it ca n occlude.
783 topLayer->setBounds(bigSize); 783 topLayer->setBounds(bigSize);
784 topLayer->setContentBounds(bigSize); 784 topLayer->setContentBounds(bigSize);
785 topLayer->setOpaque(true); 785 topLayer->setOpaque(true);
786 786
787 CCLayerTreeHostImpl::FrameData frame; 787 CCLayerTreeHostImpl::FrameData frame;
788 788
789 EXPECT_FALSE(occludedLayer->willDrawCalled()); 789 EXPECT_FALSE(occludedLayer->willDrawCalled());
790 EXPECT_FALSE(occludedLayer->didDrawCalled()); 790 EXPECT_FALSE(occludedLayer->didDrawCalled());
791 EXPECT_FALSE(topLayer->willDrawCalled()); 791 EXPECT_FALSE(topLayer->willDrawCalled());
792 EXPECT_FALSE(topLayer->didDrawCalled()); 792 EXPECT_FALSE(topLayer->didDrawCalled());
793 793
794 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 794 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
795 m_hostImpl->drawLayers(frame); 795 m_hostImpl->drawLayers(frame);
796 m_hostImpl->didDrawAllLayers(frame); 796 m_hostImpl->didDrawAllLayers(frame);
797 797
798 EXPECT_FALSE(occludedLayer->willDrawCalled()); 798 EXPECT_FALSE(occludedLayer->willDrawCalled());
799 EXPECT_FALSE(occludedLayer->didDrawCalled()); 799 EXPECT_FALSE(occludedLayer->didDrawCalled());
800 EXPECT_TRUE(topLayer->willDrawCalled()); 800 EXPECT_TRUE(topLayer->willDrawCalled());
801 EXPECT_TRUE(topLayer->didDrawCalled()); 801 EXPECT_TRUE(topLayer->didDrawCalled());
802 } 802 }
803 803
804 TEST_F(CCLayerTreeHostImplTest, didDrawCalledOnAllLayers) 804 TEST_F(CCLayerTreeHostImplTest, didDrawCalledOnAllLayers)
805 { 805 {
806 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1)); 806 m_hostImpl->setRootLayer(DidDrawCheckLayer::create(1));
807 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa yer()); 807 DidDrawCheckLayer* root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLa yer());
808 808
809 root->addChild(DidDrawCheckLayer::create(2)); 809 root->addChild(DidDrawCheckLayer::create(2));
810 DidDrawCheckLayer* layer1 = static_cast<DidDrawCheckLayer*>(root->children() [0].get()); 810 DidDrawCheckLayer* layer1 = static_cast<DidDrawCheckLayer*>(root->children() [0]);
811 811
812 layer1->addChild(DidDrawCheckLayer::create(3)); 812 layer1->addChild(DidDrawCheckLayer::create(3));
813 DidDrawCheckLayer* layer2 = static_cast<DidDrawCheckLayer*>(layer1->children ()[0].get()); 813 DidDrawCheckLayer* layer2 = static_cast<DidDrawCheckLayer*>(layer1->children ()[0]);
814 814
815 layer1->setOpacity(0.3f); 815 layer1->setOpacity(0.3f);
816 layer1->setPreserves3D(false); 816 layer1->setPreserves3D(false);
817 817
818 EXPECT_FALSE(root->didDrawCalled()); 818 EXPECT_FALSE(root->didDrawCalled());
819 EXPECT_FALSE(layer1->didDrawCalled()); 819 EXPECT_FALSE(layer1->didDrawCalled());
820 EXPECT_FALSE(layer2->didDrawCalled()); 820 EXPECT_FALSE(layer2->didDrawCalled());
821 821
822 CCLayerTreeHostImpl::FrameData frame; 822 CCLayerTreeHostImpl::FrameData frame;
823 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 823 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 1081
1082 TEST_F(CCLayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly) 1082 TEST_F(CCLayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly)
1083 { 1083 {
1084 IntSize surfaceSize(10, 10); 1084 IntSize surfaceSize(10, 10);
1085 float defaultPageScale = 1; 1085 float defaultPageScale = 1;
1086 float newPageScale = 2; 1086 float newPageScale = 2;
1087 1087
1088 // Create a normal scrollable root layer and another scrollable child layer. 1088 // Create a normal scrollable root layer and another scrollable child layer.
1089 setupScrollAndContentsLayers(surfaceSize); 1089 setupScrollAndContentsLayers(surfaceSize);
1090 CCLayerImpl* root = m_hostImpl->rootLayer(); 1090 CCLayerImpl* root = m_hostImpl->rootLayer();
1091 CCLayerImpl* child = root->children()[0].get(); 1091 CCLayerImpl* child = root->children()[0];
1092 1092
1093 OwnPtr<CCLayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize); 1093 OwnPtr<CCLayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize);
1094 child->addChild(scrollableChild.release()); 1094 child->addChild(scrollableChild.release());
1095 CCLayerImpl* grandChild = child->children()[0].get(); 1095 CCLayerImpl* grandChild = child->children()[0];
1096 1096
1097 // Set new page scale on impl thread by pinching. 1097 // Set new page scale on impl thread by pinching.
1098 m_hostImpl->pinchGestureBegin(); 1098 m_hostImpl->pinchGestureBegin();
1099 m_hostImpl->pinchGestureUpdate(newPageScale, IntPoint()); 1099 m_hostImpl->pinchGestureUpdate(newPageScale, IntPoint());
1100 m_hostImpl->pinchGestureEnd(); 1100 m_hostImpl->pinchGestureEnd();
1101 1101
1102 // The page scale delta should only be applied to the scrollable root layer. 1102 // The page scale delta should only be applied to the scrollable root layer.
1103 EXPECT_EQ(root->pageScaleDelta(), newPageScale); 1103 EXPECT_EQ(root->pageScaleDelta(), newPageScale);
1104 EXPECT_EQ(child->pageScaleDelta(), defaultPageScale); 1104 EXPECT_EQ(child->pageScaleDelta(), defaultPageScale);
1105 EXPECT_EQ(grandChild->pageScaleDelta(), defaultPageScale); 1105 EXPECT_EQ(grandChild->pageScaleDelta(), defaultPageScale);
(...skipping 20 matching lines...) Expand all
1126 root->setBounds(surfaceSize); 1126 root->setBounds(surfaceSize);
1127 root->setContentBounds(surfaceSize); 1127 root->setContentBounds(surfaceSize);
1128 // Also mark the root scrollable so it becomes the root scroll layer. 1128 // Also mark the root scrollable so it becomes the root scroll layer.
1129 root->setScrollable(true); 1129 root->setScrollable(true);
1130 int scrollLayerId = 2; 1130 int scrollLayerId = 2;
1131 root->addChild(createScrollableLayer(scrollLayerId, surfaceSize)); 1131 root->addChild(createScrollableLayer(scrollLayerId, surfaceSize));
1132 m_hostImpl->setRootLayer(root.release()); 1132 m_hostImpl->setRootLayer(root.release());
1133 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1133 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1134 initializeRendererAndDrawFrame(); 1134 initializeRendererAndDrawFrame();
1135 1135
1136 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0].get(); 1136 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0];
1137 1137
1138 IntSize scrollDelta(0, 10); 1138 IntSize scrollDelta(0, 10);
1139 IntSize expectedScrollDelta(scrollDelta); 1139 IntSize expectedScrollDelta(scrollDelta);
1140 IntSize expectedMaxScroll(child->maxScrollPosition()); 1140 IntSize expectedMaxScroll(child->maxScrollPosition());
1141 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); 1141 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted);
1142 m_hostImpl->scrollBy(IntPoint(), scrollDelta); 1142 m_hostImpl->scrollBy(IntPoint(), scrollDelta);
1143 m_hostImpl->scrollEnd(); 1143 m_hostImpl->scrollEnd();
1144 1144
1145 float pageScale = 2; 1145 float pageScale = 2;
1146 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); 1146 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 initializeRendererAndDrawFrame(); 1178 initializeRendererAndDrawFrame();
1179 { 1179 {
1180 IntSize scrollDelta(-8, -7); 1180 IntSize scrollDelta(-8, -7);
1181 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient:: Wheel), CCInputHandlerClient::ScrollStarted); 1181 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient:: Wheel), CCInputHandlerClient::ScrollStarted);
1182 m_hostImpl->scrollBy(IntPoint(), scrollDelta); 1182 m_hostImpl->scrollBy(IntPoint(), scrollDelta);
1183 m_hostImpl->scrollEnd(); 1183 m_hostImpl->scrollEnd();
1184 1184
1185 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); 1185 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas ();
1186 1186
1187 // The grand child should have scrolled up to its limit. 1187 // The grand child should have scrolled up to its limit.
1188 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0].get(); 1188 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0];
1189 CCLayerImpl* grandChild = child->children()[0].get(); 1189 CCLayerImpl* grandChild = child->children()[0];
1190 expectContains(*scrollInfo.get(), grandChild->id(), IntSize(0, -5)); 1190 expectContains(*scrollInfo.get(), grandChild->id(), IntSize(0, -5));
1191 1191
1192 // The child should have only scrolled on the other axis. 1192 // The child should have only scrolled on the other axis.
1193 expectContains(*scrollInfo.get(), child->id(), IntSize(-3, 0)); 1193 expectContains(*scrollInfo.get(), child->id(), IntSize(-3, 0));
1194 } 1194 }
1195 } 1195 }
1196 1196
1197 TEST_F(CCLayerTreeHostImplTest, scrollEventBubbling) 1197 TEST_F(CCLayerTreeHostImplTest, scrollEventBubbling)
1198 { 1198 {
1199 // When we try to scroll a non-scrollable child layer, the scroll delta 1199 // When we try to scroll a non-scrollable child layer, the scroll delta
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
1460 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 1460 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1);
1461 root->setAnchorPoint(FloatPoint(0, 0)); 1461 root->setAnchorPoint(FloatPoint(0, 0));
1462 root->setBounds(IntSize(10, 10)); 1462 root->setBounds(IntSize(10, 10));
1463 root->setContentBounds(root->bounds()); 1463 root->setContentBounds(root->bounds());
1464 root->setDrawsContent(false); 1464 root->setDrawsContent(false);
1465 m_hostImpl->setRootLayer(root.release()); 1465 m_hostImpl->setRootLayer(root.release());
1466 } 1466 }
1467 CCLayerImpl* root = m_hostImpl->rootLayer(); 1467 CCLayerImpl* root = m_hostImpl->rootLayer();
1468 1468
1469 root->addChild(BlendStateCheckLayer::create(2, m_hostImpl->resourceProvider( ))); 1469 root->addChild(BlendStateCheckLayer::create(2, m_hostImpl->resourceProvider( )));
1470 BlendStateCheckLayer* layer1 = static_cast<BlendStateCheckLayer*>(root->chil dren()[0].get()); 1470 BlendStateCheckLayer* layer1 = static_cast<BlendStateCheckLayer*>(root->chil dren()[0]);
1471 layer1->setPosition(FloatPoint(2, 2)); 1471 layer1->setPosition(FloatPoint(2, 2));
1472 1472
1473 CCLayerTreeHostImpl::FrameData frame; 1473 CCLayerTreeHostImpl::FrameData frame;
1474 1474
1475 // Opaque layer, drawn without blending. 1475 // Opaque layer, drawn without blending.
1476 layer1->setOpaque(true); 1476 layer1->setOpaque(true);
1477 layer1->setOpaqueContents(true); 1477 layer1->setOpaqueContents(true);
1478 layer1->setExpectation(false, false); 1478 layer1->setExpectation(false, false);
1479 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 1479 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
1480 m_hostImpl->drawLayers(frame); 1480 m_hostImpl->drawLayers(frame);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1513 layer1->setOpaque(true); 1513 layer1->setOpaque(true);
1514 layer1->setOpaqueContents(false); 1514 layer1->setOpaqueContents(false);
1515 layer1->setOpacity(0.5); 1515 layer1->setOpacity(0.5);
1516 layer1->setExpectation(true, false); 1516 layer1->setExpectation(true, false);
1517 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 1517 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
1518 m_hostImpl->drawLayers(frame); 1518 m_hostImpl->drawLayers(frame);
1519 EXPECT_TRUE(layer1->quadsAppended()); 1519 EXPECT_TRUE(layer1->quadsAppended());
1520 m_hostImpl->didDrawAllLayers(frame); 1520 m_hostImpl->didDrawAllLayers(frame);
1521 1521
1522 layer1->addChild(BlendStateCheckLayer::create(3, m_hostImpl->resourceProvide r())); 1522 layer1->addChild(BlendStateCheckLayer::create(3, m_hostImpl->resourceProvide r()));
1523 BlendStateCheckLayer* layer2 = static_cast<BlendStateCheckLayer*>(layer1->ch ildren()[0].get()); 1523 BlendStateCheckLayer* layer2 = static_cast<BlendStateCheckLayer*>(layer1->ch ildren()[0]);
1524 layer2->setPosition(FloatPoint(4, 4)); 1524 layer2->setPosition(FloatPoint(4, 4));
1525 1525
1526 // 2 opaque layers, drawn without blending. 1526 // 2 opaque layers, drawn without blending.
1527 layer1->setOpaque(true); 1527 layer1->setOpaque(true);
1528 layer1->setOpaqueContents(true); 1528 layer1->setOpaqueContents(true);
1529 layer1->setOpacity(1); 1529 layer1->setOpacity(1);
1530 layer1->setExpectation(false, false); 1530 layer1->setExpectation(false, false);
1531 layer2->setOpaque(true); 1531 layer2->setOpaque(true);
1532 layer2->setOpaqueContents(true); 1532 layer2->setOpaqueContents(true);
1533 layer2->setOpacity(1); 1533 layer2->setOpacity(1);
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
2244 2244
2245 bool m_didLoseContextCalled; 2245 bool m_didLoseContextCalled;
2246 }; 2246 };
2247 2247
2248 TEST_F(CCLayerTreeHostImplTest, contextLostAndRestoredNotificationSentToAllLayer s) 2248 TEST_F(CCLayerTreeHostImplTest, contextLostAndRestoredNotificationSentToAllLayer s)
2249 { 2249 {
2250 m_hostImpl->setRootLayer(ContextLostNotificationCheckLayer::create(1)); 2250 m_hostImpl->setRootLayer(ContextLostNotificationCheckLayer::create(1));
2251 ContextLostNotificationCheckLayer* root = static_cast<ContextLostNotificatio nCheckLayer*>(m_hostImpl->rootLayer()); 2251 ContextLostNotificationCheckLayer* root = static_cast<ContextLostNotificatio nCheckLayer*>(m_hostImpl->rootLayer());
2252 2252
2253 root->addChild(ContextLostNotificationCheckLayer::create(1)); 2253 root->addChild(ContextLostNotificationCheckLayer::create(1));
2254 ContextLostNotificationCheckLayer* layer1 = static_cast<ContextLostNotificat ionCheckLayer*>(root->children()[0].get()); 2254 ContextLostNotificationCheckLayer* layer1 = static_cast<ContextLostNotificat ionCheckLayer*>(root->children()[0]);
2255 2255
2256 layer1->addChild(ContextLostNotificationCheckLayer::create(2)); 2256 layer1->addChild(ContextLostNotificationCheckLayer::create(2));
2257 ContextLostNotificationCheckLayer* layer2 = static_cast<ContextLostNotificat ionCheckLayer*>(layer1->children()[0].get()); 2257 ContextLostNotificationCheckLayer* layer2 = static_cast<ContextLostNotificat ionCheckLayer*>(layer1->children()[0]);
2258 2258
2259 EXPECT_FALSE(root->didLoseContextCalled()); 2259 EXPECT_FALSE(root->didLoseContextCalled());
2260 EXPECT_FALSE(layer1->didLoseContextCalled()); 2260 EXPECT_FALSE(layer1->didLoseContextCalled());
2261 EXPECT_FALSE(layer2->didLoseContextCalled()); 2261 EXPECT_FALSE(layer2->didLoseContextCalled());
2262 2262
2263 m_hostImpl->initializeRenderer(createContext(), UnthrottledUploader); 2263 m_hostImpl->initializeRenderer(createContext(), UnthrottledUploader);
2264 2264
2265 EXPECT_TRUE(root->didLoseContextCalled()); 2265 EXPECT_TRUE(root->didLoseContextCalled());
2266 EXPECT_TRUE(layer1->didLoseContextCalled()); 2266 EXPECT_TRUE(layer1->didLoseContextCalled());
2267 EXPECT_TRUE(layer2->didLoseContextCalled()); 2267 EXPECT_TRUE(layer2->didLoseContextCalled());
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
2847 IntRect quadVisibleRect = frame.renderPasses[0]->quadList()[0]->quadVisi bleRect(); 2847 IntRect quadVisibleRect = frame.renderPasses[0]->quadList()[0]->quadVisi bleRect();
2848 EXPECT_LT(quadVisibleRect.width(), 100); 2848 EXPECT_LT(quadVisibleRect.width(), 100);
2849 2849
2850 quadVisibleRect = frame.renderPasses[0]->quadList()[1]->quadVisibleRect( ); 2850 quadVisibleRect = frame.renderPasses[0]->quadList()[1]->quadVisibleRect( );
2851 EXPECT_LT(quadVisibleRect.width(), 100); 2851 EXPECT_LT(quadVisibleRect.width(), 100);
2852 2852
2853 // Verify that the render surface texture is *not* clipped. 2853 // Verify that the render surface texture is *not* clipped.
2854 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), frame.renderPasses[0]->outputRec t()); 2854 EXPECT_RECT_EQ(IntRect(0, 0, 100, 100), frame.renderPasses[0]->outputRec t());
2855 2855
2856 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 2856 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
2857 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0].get()); 2857 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
2858 EXPECT_FALSE(quad->contentsChangedSinceLastFrame().isEmpty()); 2858 EXPECT_FALSE(quad->contentsChangedSinceLastFrame().isEmpty());
2859 2859
2860 myHostImpl->drawLayers(frame); 2860 myHostImpl->drawLayers(frame);
2861 myHostImpl->didDrawAllLayers(frame); 2861 myHostImpl->didDrawAllLayers(frame);
2862 } 2862 }
2863 2863
2864 transform = surfaceLayerPtr->transform(); 2864 transform = surfaceLayerPtr->transform();
2865 transform.translate(50, 50); 2865 transform.translate(50, 50);
2866 transform.rotate(-35); 2866 transform.rotate(-35);
2867 transform.translate(-50, -50); 2867 transform.translate(-50, -50);
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
3517 { 3517 {
3518 CCLayerTreeHostImpl::FrameData frame; 3518 CCLayerTreeHostImpl::FrameData frame;
3519 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3519 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3520 3520
3521 // Must receive two render passes, each with one quad 3521 // Must receive two render passes, each with one quad
3522 ASSERT_EQ(2U, frame.renderPasses.size()); 3522 ASSERT_EQ(2U, frame.renderPasses.size());
3523 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3523 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3524 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); 3524 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
3525 3525
3526 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3526 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3527 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0].get()); 3527 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3528 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3528 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3529 EXPECT_FALSE(targetPass->damageRect().isEmpty()); 3529 EXPECT_FALSE(targetPass->damageRect().isEmpty());
3530 3530
3531 myHostImpl->drawLayers(frame); 3531 myHostImpl->drawLayers(frame);
3532 myHostImpl->didDrawAllLayers(frame); 3532 myHostImpl->didDrawAllLayers(frame);
3533 } 3533 }
3534 3534
3535 // Draw without any change 3535 // Draw without any change
3536 { 3536 {
3537 CCLayerTreeHostImpl::FrameData frame; 3537 CCLayerTreeHostImpl::FrameData frame;
3538 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3538 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3539 3539
3540 // Must receive one render pass, as the other one should be culled 3540 // Must receive one render pass, as the other one should be culled
3541 ASSERT_EQ(1U, frame.renderPasses.size()); 3541 ASSERT_EQ(1U, frame.renderPasses.size());
3542 3542
3543 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3543 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3544 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3544 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3545 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0].get()); 3545 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3546 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3546 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3547 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3547 EXPECT_TRUE(targetPass->damageRect().isEmpty());
3548 3548
3549 myHostImpl->drawLayers(frame); 3549 myHostImpl->drawLayers(frame);
3550 myHostImpl->didDrawAllLayers(frame); 3550 myHostImpl->didDrawAllLayers(frame);
3551 } 3551 }
3552 3552
3553 // Change opacity and draw 3553 // Change opacity and draw
3554 surfaceLayerPtr->setOpacity(0.6f); 3554 surfaceLayerPtr->setOpacity(0.6f);
3555 { 3555 {
3556 CCLayerTreeHostImpl::FrameData frame; 3556 CCLayerTreeHostImpl::FrameData frame;
3557 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3557 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3558 3558
3559 // Must receive one render pass, as the other one should be culled 3559 // Must receive one render pass, as the other one should be culled
3560 ASSERT_EQ(1U, frame.renderPasses.size()); 3560 ASSERT_EQ(1U, frame.renderPasses.size());
3561 3561
3562 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3562 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3563 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3563 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3564 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0].get()); 3564 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3565 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3565 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3566 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3566 EXPECT_TRUE(targetPass->damageRect().isEmpty());
3567 3567
3568 myHostImpl->drawLayers(frame); 3568 myHostImpl->drawLayers(frame);
3569 myHostImpl->didDrawAllLayers(frame); 3569 myHostImpl->didDrawAllLayers(frame);
3570 } 3570 }
3571 3571
3572 // Change less benign property and draw - should have contents changed flag 3572 // Change less benign property and draw - should have contents changed flag
3573 surfaceLayerPtr->setStackingOrderChanged(true); 3573 surfaceLayerPtr->setStackingOrderChanged(true);
3574 { 3574 {
3575 CCLayerTreeHostImpl::FrameData frame; 3575 CCLayerTreeHostImpl::FrameData frame;
3576 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3576 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3577 3577
3578 // Must receive two render passes, each with one quad 3578 // Must receive two render passes, each with one quad
3579 ASSERT_EQ(2U, frame.renderPasses.size()); 3579 ASSERT_EQ(2U, frame.renderPasses.size());
3580 3580
3581 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3581 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3582 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material()); 3582 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material());
3583 3583
3584 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3584 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3585 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0].get()); 3585 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3586 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3586 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3587 EXPECT_FALSE(targetPass->damageRect().isEmpty()); 3587 EXPECT_FALSE(targetPass->damageRect().isEmpty());
3588 3588
3589 myHostImpl->drawLayers(frame); 3589 myHostImpl->drawLayers(frame);
3590 myHostImpl->didDrawAllLayers(frame); 3590 myHostImpl->didDrawAllLayers(frame);
3591 } 3591 }
3592 3592
3593 // Change opacity again, and evict the cached surface texture. 3593 // Change opacity again, and evict the cached surface texture.
3594 surfaceLayerPtr->setOpacity(0.5f); 3594 surfaceLayerPtr->setOpacity(0.5f);
3595 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea seRenderPassTextures(); 3595 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea seRenderPassTextures();
3596 3596
3597 // Change opacity and draw 3597 // Change opacity and draw
3598 surfaceLayerPtr->setOpacity(0.6f); 3598 surfaceLayerPtr->setOpacity(0.6f);
3599 { 3599 {
3600 CCLayerTreeHostImpl::FrameData frame; 3600 CCLayerTreeHostImpl::FrameData frame;
3601 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3601 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3602 3602
3603 // Must receive two render passes 3603 // Must receive two render passes
3604 ASSERT_EQ(2U, frame.renderPasses.size()); 3604 ASSERT_EQ(2U, frame.renderPasses.size());
3605 3605
3606 // Even though not enough properties changed, the entire thing must be 3606 // Even though not enough properties changed, the entire thing must be
3607 // redrawn as we don't have cached textures 3607 // redrawn as we don't have cached textures
3608 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3608 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3609 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); 3609 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
3610 3610
3611 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3611 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3612 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0].get()); 3612 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3613 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3613 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3614 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3614 EXPECT_TRUE(targetPass->damageRect().isEmpty());
3615 3615
3616 // Was our surface evicted? 3616 // Was our surface evicted?
3617 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId( targetPass->id())); 3617 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId( targetPass->id()));
3618 3618
3619 myHostImpl->drawLayers(frame); 3619 myHostImpl->drawLayers(frame);
3620 myHostImpl->didDrawAllLayers(frame); 3620 myHostImpl->didDrawAllLayers(frame);
3621 } 3621 }
3622 3622
3623 // Draw without any change, to make sure the state is clear 3623 // Draw without any change, to make sure the state is clear
3624 { 3624 {
3625 CCLayerTreeHostImpl::FrameData frame; 3625 CCLayerTreeHostImpl::FrameData frame;
3626 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3626 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3627 3627
3628 // Must receive one render pass, as the other one should be culled 3628 // Must receive one render pass, as the other one should be culled
3629 ASSERT_EQ(1U, frame.renderPasses.size()); 3629 ASSERT_EQ(1U, frame.renderPasses.size());
3630 3630
3631 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3631 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3632 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3632 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3633 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0].get()); 3633 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3634 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3634 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3635 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3635 EXPECT_TRUE(targetPass->damageRect().isEmpty());
3636 3636
3637 myHostImpl->drawLayers(frame); 3637 myHostImpl->drawLayers(frame);
3638 myHostImpl->didDrawAllLayers(frame); 3638 myHostImpl->didDrawAllLayers(frame);
3639 } 3639 }
3640 3640
3641 // Change opacity on the intermediate layer 3641 // Change opacity on the intermediate layer
3642 WebTransformationMatrix transform = intermediateLayerPtr->transform(); 3642 WebTransformationMatrix transform = intermediateLayerPtr->transform();
3643 transform.setM11(1.0001); 3643 transform.setM11(1.0001);
3644 intermediateLayerPtr->setTransform(transform); 3644 intermediateLayerPtr->setTransform(transform);
3645 { 3645 {
3646 CCLayerTreeHostImpl::FrameData frame; 3646 CCLayerTreeHostImpl::FrameData frame;
3647 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3647 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3648 3648
3649 // Must receive one render pass, as the other one should be culled. 3649 // Must receive one render pass, as the other one should be culled.
3650 ASSERT_EQ(1U, frame.renderPasses.size()); 3650 ASSERT_EQ(1U, frame.renderPasses.size());
3651 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3651 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3652 3652
3653 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3653 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3654 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0].get()); 3654 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3655 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3655 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3656 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3656 EXPECT_TRUE(targetPass->damageRect().isEmpty());
3657 3657
3658 myHostImpl->drawLayers(frame); 3658 myHostImpl->drawLayers(frame);
3659 myHostImpl->didDrawAllLayers(frame); 3659 myHostImpl->didDrawAllLayers(frame);
3660 } 3660 }
3661 } 3661 }
3662 3662
3663 TEST_F(CCLayerTreeHostImplTest, surfaceTextureCachingNoPartialSwap) 3663 TEST_F(CCLayerTreeHostImplTest, surfaceTextureCachingNoPartialSwap)
3664 { 3664 {
(...skipping 13 matching lines...) Expand all
3678 { 3678 {
3679 CCLayerTreeHostImpl::FrameData frame; 3679 CCLayerTreeHostImpl::FrameData frame;
3680 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3680 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3681 3681
3682 // Must receive two render passes, each with one quad 3682 // Must receive two render passes, each with one quad
3683 ASSERT_EQ(2U, frame.renderPasses.size()); 3683 ASSERT_EQ(2U, frame.renderPasses.size());
3684 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3684 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3685 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); 3685 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
3686 3686
3687 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3687 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3688 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0].get()); 3688 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3689 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3689 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3690 EXPECT_FALSE(targetPass->damageRect().isEmpty()); 3690 EXPECT_FALSE(targetPass->damageRect().isEmpty());
3691 3691
3692 EXPECT_FALSE(frame.renderPasses[0]->damageRect().isEmpty()); 3692 EXPECT_FALSE(frame.renderPasses[0]->damageRect().isEmpty());
3693 EXPECT_FALSE(frame.renderPasses[1]->damageRect().isEmpty()); 3693 EXPECT_FALSE(frame.renderPasses[1]->damageRect().isEmpty());
3694 3694
3695 EXPECT_FALSE(frame.renderPasses[0]->hasOcclusionFromOutsideTargetSurface ()); 3695 EXPECT_FALSE(frame.renderPasses[0]->hasOcclusionFromOutsideTargetSurface ());
3696 EXPECT_FALSE(frame.renderPasses[1]->hasOcclusionFromOutsideTargetSurface ()); 3696 EXPECT_FALSE(frame.renderPasses[1]->hasOcclusionFromOutsideTargetSurface ());
3697 3697
3698 myHostImpl->drawLayers(frame); 3698 myHostImpl->drawLayers(frame);
(...skipping 21 matching lines...) Expand all
3720 surfaceLayerPtr->setOpacity(0.6f); 3720 surfaceLayerPtr->setOpacity(0.6f);
3721 { 3721 {
3722 CCLayerTreeHostImpl::FrameData frame; 3722 CCLayerTreeHostImpl::FrameData frame;
3723 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3723 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3724 3724
3725 // Must receive one render pass, as the other one should be culled 3725 // Must receive one render pass, as the other one should be culled
3726 ASSERT_EQ(1U, frame.renderPasses.size()); 3726 ASSERT_EQ(1U, frame.renderPasses.size());
3727 3727
3728 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3728 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3729 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3729 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3730 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0].get()); 3730 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3731 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3731 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3732 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3732 EXPECT_TRUE(targetPass->damageRect().isEmpty());
3733 3733
3734 myHostImpl->drawLayers(frame); 3734 myHostImpl->drawLayers(frame);
3735 myHostImpl->didDrawAllLayers(frame); 3735 myHostImpl->didDrawAllLayers(frame);
3736 } 3736 }
3737 3737
3738 // Change less benign property and draw - should have contents changed flag 3738 // Change less benign property and draw - should have contents changed flag
3739 surfaceLayerPtr->setStackingOrderChanged(true); 3739 surfaceLayerPtr->setStackingOrderChanged(true);
3740 { 3740 {
3741 CCLayerTreeHostImpl::FrameData frame; 3741 CCLayerTreeHostImpl::FrameData frame;
3742 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3742 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3743 3743
3744 // Must receive two render passes, each with one quad 3744 // Must receive two render passes, each with one quad
3745 ASSERT_EQ(2U, frame.renderPasses.size()); 3745 ASSERT_EQ(2U, frame.renderPasses.size());
3746 3746
3747 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3747 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3748 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material()); 3748 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material());
3749 3749
3750 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3750 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3751 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0].get()); 3751 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3752 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3752 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3753 EXPECT_FALSE(targetPass->damageRect().isEmpty()); 3753 EXPECT_FALSE(targetPass->damageRect().isEmpty());
3754 3754
3755 myHostImpl->drawLayers(frame); 3755 myHostImpl->drawLayers(frame);
3756 myHostImpl->didDrawAllLayers(frame); 3756 myHostImpl->didDrawAllLayers(frame);
3757 } 3757 }
3758 3758
3759 // Change opacity again, and evict the cached surface texture. 3759 // Change opacity again, and evict the cached surface texture.
3760 surfaceLayerPtr->setOpacity(0.5f); 3760 surfaceLayerPtr->setOpacity(0.5f);
3761 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea seRenderPassTextures(); 3761 static_cast<CCRendererGLWithReleaseTextures*>(myHostImpl->renderer())->relea seRenderPassTextures();
3762 3762
3763 // Change opacity and draw 3763 // Change opacity and draw
3764 surfaceLayerPtr->setOpacity(0.6f); 3764 surfaceLayerPtr->setOpacity(0.6f);
3765 { 3765 {
3766 CCLayerTreeHostImpl::FrameData frame; 3766 CCLayerTreeHostImpl::FrameData frame;
3767 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3767 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3768 3768
3769 // Must receive two render passes 3769 // Must receive two render passes
3770 ASSERT_EQ(2U, frame.renderPasses.size()); 3770 ASSERT_EQ(2U, frame.renderPasses.size());
3771 3771
3772 // Even though not enough properties changed, the entire thing must be 3772 // Even though not enough properties changed, the entire thing must be
3773 // redrawn as we don't have cached textures 3773 // redrawn as we don't have cached textures
3774 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3774 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3775 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size()); 3775 EXPECT_EQ(1U, frame.renderPasses[1]->quadList().size());
3776 3776
3777 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 3777 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
3778 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0].get()); 3778 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[1]->quadList()[0]);
3779 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3779 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3780 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3780 EXPECT_TRUE(targetPass->damageRect().isEmpty());
3781 3781
3782 // Was our surface evicted? 3782 // Was our surface evicted?
3783 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId( targetPass->id())); 3783 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId( targetPass->id()));
3784 3784
3785 myHostImpl->drawLayers(frame); 3785 myHostImpl->drawLayers(frame);
3786 myHostImpl->didDrawAllLayers(frame); 3786 myHostImpl->didDrawAllLayers(frame);
3787 } 3787 }
3788 3788
(...skipping 18 matching lines...) Expand all
3807 intermediateLayerPtr->setTransform(transform); 3807 intermediateLayerPtr->setTransform(transform);
3808 { 3808 {
3809 CCLayerTreeHostImpl::FrameData frame; 3809 CCLayerTreeHostImpl::FrameData frame;
3810 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3810 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3811 3811
3812 // Must receive one render pass, as the other one should be culled. 3812 // Must receive one render pass, as the other one should be culled.
3813 ASSERT_EQ(1U, frame.renderPasses.size()); 3813 ASSERT_EQ(1U, frame.renderPasses.size());
3814 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size()); 3814 EXPECT_EQ(1U, frame.renderPasses[0]->quadList().size());
3815 3815
3816 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material()); 3816 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[0]->quadList()[0]-> material());
3817 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0].get()); 3817 CCRenderPassDrawQuad* quad = static_cast<CCRenderPassDrawQuad*>(frame.re nderPasses[0]->quadList()[0]);
3818 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ()); 3818 CCRenderPass* targetPass = frame.renderPassesById.get(quad->renderPassId ());
3819 EXPECT_TRUE(targetPass->damageRect().isEmpty()); 3819 EXPECT_TRUE(targetPass->damageRect().isEmpty());
3820 3820
3821 myHostImpl->drawLayers(frame); 3821 myHostImpl->drawLayers(frame);
3822 myHostImpl->didDrawAllLayers(frame); 3822 myHostImpl->didDrawAllLayers(frame);
3823 } 3823 }
3824 } 3824 }
3825 3825
3826 TEST_F(CCLayerTreeHostImplTest, releaseContentsTextureShouldTriggerCommit) 3826 TEST_F(CCLayerTreeHostImplTest, releaseContentsTextureShouldTriggerCommit)
3827 { 3827 {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
3999 char* pos = buffer; 3999 char* pos = buffer;
4000 for (CCRenderPassList::const_reverse_iterator it = testData.renderPasses.rbe gin(); it != testData.renderPasses.rend(); ++it) { 4000 for (CCRenderPassList::const_reverse_iterator it = testData.renderPasses.rbe gin(); it != testData.renderPasses.rend(); ++it) {
4001 const CCRenderPass* currentPass = *it; 4001 const CCRenderPass* currentPass = *it;
4002 *pos = currentPass->id().layerId; 4002 *pos = currentPass->id().layerId;
4003 pos++; 4003 pos++;
4004 *pos = currentPass->id().index; 4004 *pos = currentPass->id().index;
4005 pos++; 4005 pos++;
4006 4006
4007 CCQuadList::const_iterator quadListIterator = currentPass->quadList().be gin(); 4007 CCQuadList::const_iterator quadListIterator = currentPass->quadList().be gin();
4008 while (quadListIterator != currentPass->quadList().end()) { 4008 while (quadListIterator != currentPass->quadList().end()) {
4009 CCDrawQuad* currentQuad = (*quadListIterator).get(); 4009 CCDrawQuad* currentQuad = *quadListIterator;
4010 switch (currentQuad->material()) { 4010 switch (currentQuad->material()) {
4011 case CCDrawQuad::SolidColor: 4011 case CCDrawQuad::SolidColor:
4012 *pos = 's'; 4012 *pos = 's';
4013 pos++; 4013 pos++;
4014 break; 4014 break;
4015 case CCDrawQuad::RenderPass: 4015 case CCDrawQuad::RenderPass:
4016 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa ssId().layerId; 4016 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa ssId().layerId;
4017 pos++; 4017 pos++;
4018 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa ssId().index; 4018 *pos = CCRenderPassDrawQuad::materialCast(currentQuad)->renderPa ssId().index;
4019 pos++; 4019 pos++;
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
4192 while (removeRenderPassesCases[testCaseIndex].name) { 4192 while (removeRenderPassesCases[testCaseIndex].name) {
4193 RenderPassRemovalTestData testData; 4193 RenderPassRemovalTestData testData;
4194 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS cript, testData, renderer.get()); 4194 configureRenderPassTestData(removeRenderPassesCases[testCaseIndex].initS cript, testData, renderer.get());
4195 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP assesWithCachedTextures(*renderer), testData); 4195 CCLayerTreeHostImpl::removeRenderPasses(CCLayerTreeHostImpl::CullRenderP assesWithCachedTextures(*renderer), testData);
4196 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a); 4196 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a);
4197 testCaseIndex++; 4197 testCaseIndex++;
4198 } 4198 }
4199 } 4199 }
4200 4200
4201 } // namespace 4201 } // namespace
OLDNEW
« no previous file with comments | « cc/CCLayerTreeHostImpl.cpp ('k') | cc/CCLayerTreeHostTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698