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

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

Powered by Google App Engine
This is Rietveld 408576698