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

Side by Side Diff: cc/CCLayerTreeHostImplTest.cpp

Issue 11099040: [cc] Store CCLayerImpls as scoped_ptrs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "CCLayerTreeHostImpl.h" 7 #include "CCLayerTreeHostImpl.h"
8 8
9 #include "CCAnimationTestCommon.h" 9 #include "CCAnimationTestCommon.h"
10 #include "CCDelegatedRendererLayerImpl.h" 10 #include "CCDelegatedRendererLayerImpl.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 80
81 virtual void didLoseContextOnImplThread() OVERRIDE { } 81 virtual void didLoseContextOnImplThread() OVERRIDE { }
82 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { } 82 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE { }
83 virtual void onVSyncParametersChanged(double, double) OVERRIDE { } 83 virtual void onVSyncParametersChanged(double, double) OVERRIDE { }
84 virtual void onCanDrawStateChanged(bool canDraw) OVERRIDE { m_onCanDrawState ChangedCalled = true; } 84 virtual void onCanDrawStateChanged(bool canDraw) OVERRIDE { m_onCanDrawState ChangedCalled = true; }
85 virtual void setNeedsRedrawOnImplThread() OVERRIDE { m_didRequestRedraw = tr ue; } 85 virtual void setNeedsRedrawOnImplThread() OVERRIDE { m_didRequestRedraw = tr ue; }
86 virtual void setNeedsCommitOnImplThread() OVERRIDE { m_didRequestCommit = tr ue; } 86 virtual void setNeedsCommitOnImplThread() OVERRIDE { m_didRequestCommit = tr ue; }
87 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<CCAnimat ionEventsVector>, double wallClockTime) OVERRIDE { } 87 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<CCAnimat ionEventsVector>, double wallClockTime) OVERRIDE { }
88 virtual void releaseContentsTexturesOnImplThread() OVERRIDE { } 88 virtual void releaseContentsTexturesOnImplThread() OVERRIDE { }
89 89
90 scoped_ptr<CCLayerTreeHostImpl> createLayerTreeHost(bool partialSwap, scoped _ptr<CCGraphicsContext> graphicsContext, PassOwnPtr<CCLayerImpl> rootPtr) 90 scoped_ptr<CCLayerTreeHostImpl> createLayerTreeHost(bool partialSwap, scoped _ptr<CCGraphicsContext> graphicsContext, scoped_ptr<CCLayerImpl> root)
91 { 91 {
92 CCSettings::setPartialSwapEnabled(partialSwap); 92 CCSettings::setPartialSwapEnabled(partialSwap);
93 93
94 CCLayerTreeSettings settings; 94 CCLayerTreeSettings settings;
95 settings.minimumOcclusionTrackingSize = IntSize(); 95 settings.minimumOcclusionTrackingSize = IntSize();
96 96
97 scoped_ptr<CCLayerTreeHostImpl> myHostImpl = CCLayerTreeHostImpl::create (settings, this); 97 scoped_ptr<CCLayerTreeHostImpl> myHostImpl = CCLayerTreeHostImpl::create (settings, this);
98 98
99 myHostImpl->initializeRenderer(graphicsContext.Pass()); 99 myHostImpl->initializeRenderer(graphicsContext.Pass());
100 myHostImpl->setViewportSize(IntSize(10, 10), IntSize(10, 10)); 100 myHostImpl->setViewportSize(IntSize(10, 10), IntSize(10, 10));
101 101
102 OwnPtr<CCLayerImpl> root = rootPtr;
103
104 root->setAnchorPoint(FloatPoint(0, 0)); 102 root->setAnchorPoint(FloatPoint(0, 0));
105 root->setPosition(FloatPoint(0, 0)); 103 root->setPosition(FloatPoint(0, 0));
106 root->setBounds(IntSize(10, 10)); 104 root->setBounds(IntSize(10, 10));
107 root->setContentBounds(IntSize(10, 10)); 105 root->setContentBounds(IntSize(10, 10));
108 root->setVisibleContentRect(IntRect(0, 0, 10, 10)); 106 root->setVisibleContentRect(IntRect(0, 0, 10, 10));
109 root->setDrawsContent(true); 107 root->setDrawsContent(true);
110 myHostImpl->setRootLayer(root.release()); 108 myHostImpl->setRootLayer(root.Pass());
111 return myHostImpl.Pass(); 109 return myHostImpl.Pass();
112 } 110 }
113 111
114 static void expectClearedScrollDeltasRecursive(CCLayerImpl* layer) 112 static void expectClearedScrollDeltasRecursive(CCLayerImpl* layer)
115 { 113 {
116 ASSERT_EQ(layer->scrollDelta(), IntSize()); 114 ASSERT_EQ(layer->scrollDelta(), IntSize());
117 for (size_t i = 0; i < layer->children().size(); ++i) 115 for (size_t i = 0; i < layer->children().size(); ++i)
118 expectClearedScrollDeltasRecursive(layer->children()[i]); 116 expectClearedScrollDeltasRecursive(layer->children()[i]);
119 } 117 }
120 118
121 static void expectContains(const CCScrollAndScaleSet& scrollInfo, int id, co nst IntSize& scrollDelta) 119 static void expectContains(const CCScrollAndScaleSet& scrollInfo, int id, co nst IntSize& scrollDelta)
122 { 120 {
123 int timesEncountered = 0; 121 int timesEncountered = 0;
124 122
125 for (size_t i = 0; i < scrollInfo.scrolls.size(); ++i) { 123 for (size_t i = 0; i < scrollInfo.scrolls.size(); ++i) {
126 if (scrollInfo.scrolls[i].layerId != id) 124 if (scrollInfo.scrolls[i].layerId != id)
127 continue; 125 continue;
128 EXPECT_EQ(scrollDelta.width(), scrollInfo.scrolls[i].scrollDelta.wid th()); 126 EXPECT_EQ(scrollDelta.width(), scrollInfo.scrolls[i].scrollDelta.wid th());
129 EXPECT_EQ(scrollDelta.height(), scrollInfo.scrolls[i].scrollDelta.he ight()); 127 EXPECT_EQ(scrollDelta.height(), scrollInfo.scrolls[i].scrollDelta.he ight());
130 timesEncountered++; 128 timesEncountered++;
131 } 129 }
132 130
133 ASSERT_EQ(timesEncountered, 1); 131 ASSERT_EQ(timesEncountered, 1);
134 } 132 }
135 133
136 void setupScrollAndContentsLayers(const IntSize& contentSize) 134 void setupScrollAndContentsLayers(const IntSize& contentSize)
137 { 135 {
138 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 136 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
139 root->setScrollable(true); 137 root->setScrollable(true);
140 root->setScrollPosition(IntPoint(0, 0)); 138 root->setScrollPosition(IntPoint(0, 0));
141 root->setMaxScrollPosition(contentSize); 139 root->setMaxScrollPosition(contentSize);
142 root->setBounds(contentSize); 140 root->setBounds(contentSize);
143 root->setContentBounds(contentSize); 141 root->setContentBounds(contentSize);
144 root->setPosition(FloatPoint(0, 0)); 142 root->setPosition(FloatPoint(0, 0));
145 root->setAnchorPoint(FloatPoint(0, 0)); 143 root->setAnchorPoint(FloatPoint(0, 0));
146 144
147 OwnPtr<CCLayerImpl> contents = CCLayerImpl::create(2); 145 scoped_ptr<CCLayerImpl> contents = CCLayerImpl::create(2);
148 contents->setDrawsContent(true); 146 contents->setDrawsContent(true);
149 contents->setBounds(contentSize); 147 contents->setBounds(contentSize);
150 contents->setContentBounds(contentSize); 148 contents->setContentBounds(contentSize);
151 contents->setPosition(FloatPoint(0, 0)); 149 contents->setPosition(FloatPoint(0, 0));
152 contents->setAnchorPoint(FloatPoint(0, 0)); 150 contents->setAnchorPoint(FloatPoint(0, 0));
153 root->addChild(contents.release()); 151 root->addChild(contents.Pass());
154 m_hostImpl->setRootLayer(root.release()); 152 m_hostImpl->setRootLayer(root.Pass());
155 } 153 }
156 154
157 static PassOwnPtr<CCLayerImpl> createScrollableLayer(int id, const IntSize& size) 155 static scoped_ptr<CCLayerImpl> createScrollableLayer(int id, const IntSize& size)
158 { 156 {
159 OwnPtr<CCLayerImpl> layer = CCLayerImpl::create(id); 157 scoped_ptr<CCLayerImpl> layer = CCLayerImpl::create(id);
160 layer->setScrollable(true); 158 layer->setScrollable(true);
161 layer->setDrawsContent(true); 159 layer->setDrawsContent(true);
162 layer->setBounds(size); 160 layer->setBounds(size);
163 layer->setContentBounds(size); 161 layer->setContentBounds(size);
164 layer->setMaxScrollPosition(IntSize(size.width() * 2, size.height() * 2) ); 162 layer->setMaxScrollPosition(IntSize(size.width() * 2, size.height() * 2) );
165 return layer.release(); 163 return layer.Pass();
166 } 164 }
167 165
168 void initializeRendererAndDrawFrame() 166 void initializeRendererAndDrawFrame()
169 { 167 {
170 m_hostImpl->initializeRenderer(createContext()); 168 m_hostImpl->initializeRenderer(createContext());
171 CCLayerTreeHostImpl::FrameData frame; 169 CCLayerTreeHostImpl::FrameData frame;
172 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 170 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
173 m_hostImpl->drawLayers(frame); 171 m_hostImpl->drawLayers(frame);
174 m_hostImpl->didDrawAllLayers(frame); 172 m_hostImpl->didDrawAllLayers(frame);
175 } 173 }
(...skipping 26 matching lines...) Expand all
202 // that canDraw changed. 200 // that canDraw changed.
203 EXPECT_FALSE(m_hostImpl->canDraw()); 201 EXPECT_FALSE(m_hostImpl->canDraw());
204 m_onCanDrawStateChangedCalled = false; 202 m_onCanDrawStateChangedCalled = false;
205 203
206 setupScrollAndContentsLayers(IntSize(100, 100)); 204 setupScrollAndContentsLayers(IntSize(100, 100));
207 EXPECT_TRUE(m_hostImpl->canDraw()); 205 EXPECT_TRUE(m_hostImpl->canDraw());
208 EXPECT_TRUE(m_onCanDrawStateChangedCalled); 206 EXPECT_TRUE(m_onCanDrawStateChangedCalled);
209 m_onCanDrawStateChangedCalled = false; 207 m_onCanDrawStateChangedCalled = false;
210 208
211 // Toggle the root layer to make sure it toggles canDraw 209 // Toggle the root layer to make sure it toggles canDraw
212 m_hostImpl->setRootLayer(adoptPtr<CCLayerImpl>(0)); 210 m_hostImpl->setRootLayer(scoped_ptr<CCLayerImpl>());
213 EXPECT_FALSE(m_hostImpl->canDraw()); 211 EXPECT_FALSE(m_hostImpl->canDraw());
214 EXPECT_TRUE(m_onCanDrawStateChangedCalled); 212 EXPECT_TRUE(m_onCanDrawStateChangedCalled);
215 m_onCanDrawStateChangedCalled = false; 213 m_onCanDrawStateChangedCalled = false;
216 214
217 setupScrollAndContentsLayers(IntSize(100, 100)); 215 setupScrollAndContentsLayers(IntSize(100, 100));
218 EXPECT_TRUE(m_hostImpl->canDraw()); 216 EXPECT_TRUE(m_hostImpl->canDraw());
219 EXPECT_TRUE(m_onCanDrawStateChangedCalled); 217 EXPECT_TRUE(m_onCanDrawStateChangedCalled);
220 m_onCanDrawStateChangedCalled = false; 218 m_onCanDrawStateChangedCalled = false;
221 219
222 // Toggle the device viewport size to make sure it toggles canDraw. 220 // Toggle the device viewport size to make sure it toggles canDraw.
(...skipping 23 matching lines...) Expand all
246 { 244 {
247 ASSERT_FALSE(m_hostImpl->rootLayer()); 245 ASSERT_FALSE(m_hostImpl->rootLayer());
248 246
249 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); 247 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas();
250 ASSERT_EQ(scrollInfo->scrolls.size(), 0u); 248 ASSERT_EQ(scrollInfo->scrolls.size(), 0u);
251 } 249 }
252 250
253 TEST_P(CCLayerTreeHostImplTest, scrollDeltaTreeButNoChanges) 251 TEST_P(CCLayerTreeHostImplTest, scrollDeltaTreeButNoChanges)
254 { 252 {
255 { 253 {
256 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 254 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
257 root->addChild(CCLayerImpl::create(2)); 255 root->addChild(CCLayerImpl::create(2));
258 root->addChild(CCLayerImpl::create(3)); 256 root->addChild(CCLayerImpl::create(3));
259 root->children()[1]->addChild(CCLayerImpl::create(4)); 257 root->children()[1]->addChild(CCLayerImpl::create(4));
260 root->children()[1]->addChild(CCLayerImpl::create(5)); 258 root->children()[1]->addChild(CCLayerImpl::create(5));
261 root->children()[1]->children()[0]->addChild(CCLayerImpl::create(6)); 259 root->children()[1]->children()[0]->addChild(CCLayerImpl::create(6));
262 m_hostImpl->setRootLayer(root.release()); 260 m_hostImpl->setRootLayer(root.Pass());
263 } 261 }
264 CCLayerImpl* root = m_hostImpl->rootLayer(); 262 CCLayerImpl* root = m_hostImpl->rootLayer();
265 263
266 expectClearedScrollDeltasRecursive(root); 264 expectClearedScrollDeltasRecursive(root);
267 265
268 OwnPtr<CCScrollAndScaleSet> scrollInfo; 266 OwnPtr<CCScrollAndScaleSet> scrollInfo;
269 267
270 scrollInfo = m_hostImpl->processScrollDeltas(); 268 scrollInfo = m_hostImpl->processScrollDeltas();
271 ASSERT_EQ(scrollInfo->scrolls.size(), 0u); 269 ASSERT_EQ(scrollInfo->scrolls.size(), 0u);
272 expectClearedScrollDeltasRecursive(root); 270 expectClearedScrollDeltasRecursive(root);
273 271
274 scrollInfo = m_hostImpl->processScrollDeltas(); 272 scrollInfo = m_hostImpl->processScrollDeltas();
275 ASSERT_EQ(scrollInfo->scrolls.size(), 0u); 273 ASSERT_EQ(scrollInfo->scrolls.size(), 0u);
276 expectClearedScrollDeltasRecursive(root); 274 expectClearedScrollDeltasRecursive(root);
277 } 275 }
278 276
279 TEST_P(CCLayerTreeHostImplTest, scrollDeltaRepeatedScrolls) 277 TEST_P(CCLayerTreeHostImplTest, scrollDeltaRepeatedScrolls)
280 { 278 {
281 IntPoint scrollPosition(20, 30); 279 IntPoint scrollPosition(20, 30);
282 IntSize scrollDelta(11, -15); 280 IntSize scrollDelta(11, -15);
283 { 281 {
284 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 282 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
285 root->setScrollPosition(scrollPosition); 283 root->setScrollPosition(scrollPosition);
286 root->setScrollable(true); 284 root->setScrollable(true);
287 root->setMaxScrollPosition(IntSize(100, 100)); 285 root->setMaxScrollPosition(IntSize(100, 100));
288 root->scrollBy(scrollDelta); 286 root->scrollBy(scrollDelta);
289 m_hostImpl->setRootLayer(root.release()); 287 m_hostImpl->setRootLayer(root.Pass());
290 } 288 }
291 CCLayerImpl* root = m_hostImpl->rootLayer(); 289 CCLayerImpl* root = m_hostImpl->rootLayer();
292 290
293 OwnPtr<CCScrollAndScaleSet> scrollInfo; 291 OwnPtr<CCScrollAndScaleSet> scrollInfo;
294 292
295 scrollInfo = m_hostImpl->processScrollDeltas(); 293 scrollInfo = m_hostImpl->processScrollDeltas();
296 ASSERT_EQ(scrollInfo->scrolls.size(), 1u); 294 ASSERT_EQ(scrollInfo->scrolls.size(), 1u);
297 EXPECT_EQ(root->sentScrollDelta(), scrollDelta); 295 EXPECT_EQ(root->sentScrollDelta(), scrollDelta);
298 expectContains(*scrollInfo, root->id(), scrollDelta); 296 expectContains(*scrollInfo, root->id(), scrollDelta);
299 297
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 // The final page scale and scroll deltas should match what we got 771 // The final page scale and scroll deltas should match what we got
774 // earlier. 772 // earlier.
775 m_hostImpl->animate(endTime, endTime); 773 m_hostImpl->animate(endTime, endTime);
776 scrollInfo = m_hostImpl->processScrollDeltas(); 774 scrollInfo = m_hostImpl->processScrollDeltas();
777 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); 775 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta);
778 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25)); 776 expectContains(*scrollInfo, scrollLayer->id(), IntSize(25, 25));
779 } 777 }
780 778
781 class DidDrawCheckLayer : public CCTiledLayerImpl { 779 class DidDrawCheckLayer : public CCTiledLayerImpl {
782 public: 780 public:
783 static PassOwnPtr<DidDrawCheckLayer> create(int id) { return adoptPtr(new Di dDrawCheckLayer(id)); } 781 static scoped_ptr<CCLayerImpl> create(int id) { return scoped_ptr<CCLayerImp l>(new DidDrawCheckLayer(id)); }
784 782
785 virtual void didDraw(CCResourceProvider*) OVERRIDE 783 virtual void didDraw(CCResourceProvider*) OVERRIDE
786 { 784 {
787 m_didDrawCalled = true; 785 m_didDrawCalled = true;
788 } 786 }
789 787
790 virtual void willDraw(CCResourceProvider*) OVERRIDE 788 virtual void willDraw(CCResourceProvider*) OVERRIDE
791 { 789 {
792 m_willDrawCalled = true; 790 m_willDrawCalled = true;
793 } 791 }
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 EXPECT_TRUE(root->didDrawCalled()); 928 EXPECT_TRUE(root->didDrawCalled());
931 EXPECT_TRUE(layer1->didDrawCalled()); 929 EXPECT_TRUE(layer1->didDrawCalled());
932 EXPECT_TRUE(layer2->didDrawCalled()); 930 EXPECT_TRUE(layer2->didDrawCalled());
933 931
934 EXPECT_NE(root->renderSurface(), layer1->renderSurface()); 932 EXPECT_NE(root->renderSurface(), layer1->renderSurface());
935 EXPECT_TRUE(!!layer1->renderSurface()); 933 EXPECT_TRUE(!!layer1->renderSurface());
936 } 934 }
937 935
938 class MissingTextureAnimatingLayer : public DidDrawCheckLayer { 936 class MissingTextureAnimatingLayer : public DidDrawCheckLayer {
939 public: 937 public:
940 static PassOwnPtr<MissingTextureAnimatingLayer> create(int id, bool tileMiss ing, bool skipsDraw, bool animating, CCResourceProvider* resourceProvider) { ret urn adoptPtr(new MissingTextureAnimatingLayer(id, tileMissing, skipsDraw, animat ing, resourceProvider)); } 938 static scoped_ptr<CCLayerImpl> create(int id, bool tileMissing, bool skipsDr aw, bool animating, CCResourceProvider* resourceProvider)
939 {
940 return scoped_ptr<CCLayerImpl>(new MissingTextureAnimatingLayer(id, tile Missing, skipsDraw, animating, resourceProvider));
941 }
941 942
942 private: 943 private:
943 explicit MissingTextureAnimatingLayer(int id, bool tileMissing, bool skipsDr aw, bool animating, CCResourceProvider* resourceProvider) 944 explicit MissingTextureAnimatingLayer(int id, bool tileMissing, bool skipsDr aw, bool animating, CCResourceProvider* resourceProvider)
944 : DidDrawCheckLayer(id) 945 : DidDrawCheckLayer(id)
945 { 946 {
946 OwnPtr<CCLayerTilingData> tilingData = CCLayerTilingData::create(IntSize (10, 10), CCLayerTilingData::NoBorderTexels); 947 OwnPtr<CCLayerTilingData> tilingData = CCLayerTilingData::create(IntSize (10, 10), CCLayerTilingData::NoBorderTexels);
947 tilingData->setBounds(bounds()); 948 tilingData->setBounds(bounds());
948 setTilingData(*tilingData.get()); 949 setTilingData(*tilingData.get());
949 setSkipsDraw(skipsDraw); 950 setSkipsDraw(skipsDraw);
950 if (!tileMissing) { 951 if (!tileMissing) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLayer()); 993 root = static_cast<DidDrawCheckLayer*>(m_hostImpl->rootLayer());
993 root->addChild(MissingTextureAnimatingLayer::create(2, false, true, true, m_ hostImpl->resourceProvider())); 994 root->addChild(MissingTextureAnimatingLayer::create(2, false, true, true, m_ hostImpl->resourceProvider()));
994 995
995 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 996 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
996 m_hostImpl->drawLayers(frame); 997 m_hostImpl->drawLayers(frame);
997 m_hostImpl->didDrawAllLayers(frame); 998 m_hostImpl->didDrawAllLayers(frame);
998 } 999 }
999 1000
1000 TEST_P(CCLayerTreeHostImplTest, scrollRootIgnored) 1001 TEST_P(CCLayerTreeHostImplTest, scrollRootIgnored)
1001 { 1002 {
1002 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 1003 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
1003 root->setScrollable(false); 1004 root->setScrollable(false);
1004 m_hostImpl->setRootLayer(root.release()); 1005 m_hostImpl->setRootLayer(root.Pass());
1005 initializeRendererAndDrawFrame(); 1006 initializeRendererAndDrawFrame();
1006 1007
1007 // Scroll event is ignored because layer is not scrollable. 1008 // Scroll event is ignored because layer is not scrollable.
1008 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollIgnored); 1009 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollIgnored);
1009 EXPECT_FALSE(m_didRequestRedraw); 1010 EXPECT_FALSE(m_didRequestRedraw);
1010 EXPECT_FALSE(m_didRequestCommit); 1011 EXPECT_FALSE(m_didRequestCommit);
1011 } 1012 }
1012 1013
1013 TEST_P(CCLayerTreeHostImplTest, scrollNonCompositedRoot) 1014 TEST_P(CCLayerTreeHostImplTest, scrollNonCompositedRoot)
1014 { 1015 {
1015 // Test the configuration where a non-composited root layer is embedded in a 1016 // Test the configuration where a non-composited root layer is embedded in a
1016 // scrollable outer layer. 1017 // scrollable outer layer.
1017 IntSize surfaceSize(10, 10); 1018 IntSize surfaceSize(10, 10);
1018 1019
1019 OwnPtr<CCLayerImpl> contentLayer = CCLayerImpl::create(1); 1020 scoped_ptr<CCLayerImpl> contentLayer = CCLayerImpl::create(1);
1020 contentLayer->setUseLCDText(true); 1021 contentLayer->setUseLCDText(true);
1021 contentLayer->setDrawsContent(true); 1022 contentLayer->setDrawsContent(true);
1022 contentLayer->setPosition(FloatPoint(0, 0)); 1023 contentLayer->setPosition(FloatPoint(0, 0));
1023 contentLayer->setAnchorPoint(FloatPoint(0, 0)); 1024 contentLayer->setAnchorPoint(FloatPoint(0, 0));
1024 contentLayer->setBounds(surfaceSize); 1025 contentLayer->setBounds(surfaceSize);
1025 contentLayer->setContentBounds(IntSize(surfaceSize.width() * 2, surfaceSize. height() * 2)); 1026 contentLayer->setContentBounds(IntSize(surfaceSize.width() * 2, surfaceSize. height() * 2));
1026 1027
1027 OwnPtr<CCLayerImpl> scrollLayer = CCLayerImpl::create(2); 1028 scoped_ptr<CCLayerImpl> scrollLayer = CCLayerImpl::create(2);
1028 scrollLayer->setScrollable(true); 1029 scrollLayer->setScrollable(true);
1029 scrollLayer->setMaxScrollPosition(surfaceSize); 1030 scrollLayer->setMaxScrollPosition(surfaceSize);
1030 scrollLayer->setBounds(surfaceSize); 1031 scrollLayer->setBounds(surfaceSize);
1031 scrollLayer->setContentBounds(surfaceSize); 1032 scrollLayer->setContentBounds(surfaceSize);
1032 scrollLayer->setPosition(FloatPoint(0, 0)); 1033 scrollLayer->setPosition(FloatPoint(0, 0));
1033 scrollLayer->setAnchorPoint(FloatPoint(0, 0)); 1034 scrollLayer->setAnchorPoint(FloatPoint(0, 0));
1034 scrollLayer->addChild(contentLayer.release()); 1035 scrollLayer->addChild(contentLayer.Pass());
1035 1036
1036 m_hostImpl->setRootLayer(scrollLayer.release()); 1037 m_hostImpl->setRootLayer(scrollLayer.Pass());
1037 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1038 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1038 initializeRendererAndDrawFrame(); 1039 initializeRendererAndDrawFrame();
1039 1040
1040 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); 1041 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted);
1041 m_hostImpl->scrollBy(IntPoint(), IntSize(0, 10)); 1042 m_hostImpl->scrollBy(IntPoint(), IntSize(0, 10));
1042 m_hostImpl->scrollEnd(); 1043 m_hostImpl->scrollEnd();
1043 EXPECT_TRUE(m_didRequestRedraw); 1044 EXPECT_TRUE(m_didRequestRedraw);
1044 EXPECT_TRUE(m_didRequestCommit); 1045 EXPECT_TRUE(m_didRequestCommit);
1045 } 1046 }
1046 1047
1047 TEST_P(CCLayerTreeHostImplTest, scrollChildCallsCommitAndRedraw) 1048 TEST_P(CCLayerTreeHostImplTest, scrollChildCallsCommitAndRedraw)
1048 { 1049 {
1049 IntSize surfaceSize(10, 10); 1050 IntSize surfaceSize(10, 10);
1050 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 1051 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
1051 root->setBounds(surfaceSize); 1052 root->setBounds(surfaceSize);
1052 root->setContentBounds(surfaceSize); 1053 root->setContentBounds(surfaceSize);
1053 root->addChild(createScrollableLayer(2, surfaceSize)); 1054 root->addChild(createScrollableLayer(2, surfaceSize));
1054 m_hostImpl->setRootLayer(root.release()); 1055 m_hostImpl->setRootLayer(root.Pass());
1055 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1056 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1056 initializeRendererAndDrawFrame(); 1057 initializeRendererAndDrawFrame();
1057 1058
1058 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); 1059 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted);
1059 m_hostImpl->scrollBy(IntPoint(), IntSize(0, 10)); 1060 m_hostImpl->scrollBy(IntPoint(), IntSize(0, 10));
1060 m_hostImpl->scrollEnd(); 1061 m_hostImpl->scrollEnd();
1061 EXPECT_TRUE(m_didRequestRedraw); 1062 EXPECT_TRUE(m_didRequestRedraw);
1062 EXPECT_TRUE(m_didRequestCommit); 1063 EXPECT_TRUE(m_didRequestCommit);
1063 } 1064 }
1064 1065
1065 TEST_P(CCLayerTreeHostImplTest, scrollMissesChild) 1066 TEST_P(CCLayerTreeHostImplTest, scrollMissesChild)
1066 { 1067 {
1067 IntSize surfaceSize(10, 10); 1068 IntSize surfaceSize(10, 10);
1068 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 1069 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
1069 root->addChild(createScrollableLayer(2, surfaceSize)); 1070 root->addChild(createScrollableLayer(2, surfaceSize));
1070 m_hostImpl->setRootLayer(root.release()); 1071 m_hostImpl->setRootLayer(root.Pass());
1071 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1072 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1072 initializeRendererAndDrawFrame(); 1073 initializeRendererAndDrawFrame();
1073 1074
1074 // Scroll event is ignored because the input coordinate is outside the layer boundaries. 1075 // Scroll event is ignored because the input coordinate is outside the layer boundaries.
1075 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(15, 5), CCInputHandlerClient::Whe el), CCInputHandlerClient::ScrollIgnored); 1076 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(15, 5), CCInputHandlerClient::Whe el), CCInputHandlerClient::ScrollIgnored);
1076 EXPECT_FALSE(m_didRequestRedraw); 1077 EXPECT_FALSE(m_didRequestRedraw);
1077 EXPECT_FALSE(m_didRequestCommit); 1078 EXPECT_FALSE(m_didRequestCommit);
1078 } 1079 }
1079 1080
1080 TEST_P(CCLayerTreeHostImplTest, scrollMissesBackfacingChild) 1081 TEST_P(CCLayerTreeHostImplTest, scrollMissesBackfacingChild)
1081 { 1082 {
1082 IntSize surfaceSize(10, 10); 1083 IntSize surfaceSize(10, 10);
1083 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 1084 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
1084 OwnPtr<CCLayerImpl> child = createScrollableLayer(2, surfaceSize); 1085 scoped_ptr<CCLayerImpl> child = createScrollableLayer(2, surfaceSize);
1085 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1086 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1086 1087
1087 WebTransformationMatrix matrix; 1088 WebTransformationMatrix matrix;
1088 matrix.rotate3d(180, 0, 0); 1089 matrix.rotate3d(180, 0, 0);
1089 child->setTransform(matrix); 1090 child->setTransform(matrix);
1090 child->setDoubleSided(false); 1091 child->setDoubleSided(false);
1091 1092
1092 root->addChild(child.release()); 1093 root->addChild(child.Pass());
1093 m_hostImpl->setRootLayer(root.release()); 1094 m_hostImpl->setRootLayer(root.Pass());
1094 initializeRendererAndDrawFrame(); 1095 initializeRendererAndDrawFrame();
1095 1096
1096 // Scroll event is ignored because the scrollable layer is not facing the vi ewer and there is 1097 // Scroll event is ignored because the scrollable layer is not facing the vi ewer and there is
1097 // nothing scrollable behind it. 1098 // nothing scrollable behind it.
1098 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollIgnored); 1099 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollIgnored);
1099 EXPECT_FALSE(m_didRequestRedraw); 1100 EXPECT_FALSE(m_didRequestRedraw);
1100 EXPECT_FALSE(m_didRequestCommit); 1101 EXPECT_FALSE(m_didRequestCommit);
1101 } 1102 }
1102 1103
1103 TEST_P(CCLayerTreeHostImplTest, scrollBlockedByContentLayer) 1104 TEST_P(CCLayerTreeHostImplTest, scrollBlockedByContentLayer)
1104 { 1105 {
1105 IntSize surfaceSize(10, 10); 1106 IntSize surfaceSize(10, 10);
1106 OwnPtr<CCLayerImpl> contentLayer = createScrollableLayer(1, surfaceSize); 1107 scoped_ptr<CCLayerImpl> contentLayer = createScrollableLayer(1, surfaceSize) ;
1107 contentLayer->setShouldScrollOnMainThread(true); 1108 contentLayer->setShouldScrollOnMainThread(true);
1108 contentLayer->setScrollable(false); 1109 contentLayer->setScrollable(false);
1109 1110
1110 OwnPtr<CCLayerImpl> scrollLayer = createScrollableLayer(2, surfaceSize); 1111 scoped_ptr<CCLayerImpl> scrollLayer = createScrollableLayer(2, surfaceSize);
1111 scrollLayer->addChild(contentLayer.release()); 1112 scrollLayer->addChild(contentLayer.Pass());
1112 1113
1113 m_hostImpl->setRootLayer(scrollLayer.release()); 1114 m_hostImpl->setRootLayer(scrollLayer.Pass());
1114 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1115 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1115 initializeRendererAndDrawFrame(); 1116 initializeRendererAndDrawFrame();
1116 1117
1117 // Scrolling fails because the content layer is asking to be scrolled on the main thread. 1118 // Scrolling fails because the content layer is asking to be scrolled on the main thread.
1118 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollOnMainThread); 1119 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollOnMainThread);
1119 } 1120 }
1120 1121
1121 TEST_P(CCLayerTreeHostImplTest, scrollRootAndChangePageScaleOnMainThread) 1122 TEST_P(CCLayerTreeHostImplTest, scrollRootAndChangePageScaleOnMainThread)
1122 { 1123 {
1123 IntSize surfaceSize(10, 10); 1124 IntSize surfaceSize(10, 10);
1124 float pageScale = 2; 1125 float pageScale = 2;
1125 OwnPtr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize); 1126 scoped_ptr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize);
1126 m_hostImpl->setRootLayer(root.release()); 1127 m_hostImpl->setRootLayer(root.Pass());
1127 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1128 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1128 initializeRendererAndDrawFrame(); 1129 initializeRendererAndDrawFrame();
1129 1130
1130 IntSize scrollDelta(0, 10); 1131 IntSize scrollDelta(0, 10);
1131 IntSize expectedScrollDelta(scrollDelta); 1132 IntSize expectedScrollDelta(scrollDelta);
1132 IntSize expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollPosition()); 1133 IntSize expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollPosition());
1133 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); 1134 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted);
1134 m_hostImpl->scrollBy(IntPoint(), scrollDelta); 1135 m_hostImpl->scrollBy(IntPoint(), scrollDelta);
1135 m_hostImpl->scrollEnd(); 1136 m_hostImpl->scrollEnd();
1136 1137
(...skipping 11 matching lines...) Expand all
1148 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll); 1149 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollPosition(), expectedMaxScroll);
1149 1150
1150 // The page scale delta remains constant because the impl thread did not sca le. 1151 // The page scale delta remains constant because the impl thread did not sca le.
1151 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), WebTransformationMatrix( )); 1152 EXPECT_EQ(m_hostImpl->rootLayer()->implTransform(), WebTransformationMatrix( ));
1152 } 1153 }
1153 1154
1154 TEST_P(CCLayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread) 1155 TEST_P(CCLayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread)
1155 { 1156 {
1156 IntSize surfaceSize(10, 10); 1157 IntSize surfaceSize(10, 10);
1157 float pageScale = 2; 1158 float pageScale = 2;
1158 OwnPtr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize); 1159 scoped_ptr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize);
1159 m_hostImpl->setRootLayer(root.release()); 1160 m_hostImpl->setRootLayer(root.Pass());
1160 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1161 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1161 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); 1162 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale);
1162 initializeRendererAndDrawFrame(); 1163 initializeRendererAndDrawFrame();
1163 1164
1164 IntSize scrollDelta(0, 10); 1165 IntSize scrollDelta(0, 10);
1165 IntSize expectedScrollDelta(scrollDelta); 1166 IntSize expectedScrollDelta(scrollDelta);
1166 IntSize expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollPosition()); 1167 IntSize expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollPosition());
1167 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); 1168 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted);
1168 m_hostImpl->scrollBy(IntPoint(), scrollDelta); 1169 m_hostImpl->scrollBy(IntPoint(), scrollDelta);
1169 m_hostImpl->scrollEnd(); 1170 m_hostImpl->scrollEnd();
(...skipping 25 matching lines...) Expand all
1195 1196
1196 float newPageScale = 2; 1197 float newPageScale = 2;
1197 WebTransformationMatrix newPageScaleMatrix; 1198 WebTransformationMatrix newPageScaleMatrix;
1198 newPageScaleMatrix.scale(newPageScale); 1199 newPageScaleMatrix.scale(newPageScale);
1199 1200
1200 // Create a normal scrollable root layer and another scrollable child layer. 1201 // Create a normal scrollable root layer and another scrollable child layer.
1201 setupScrollAndContentsLayers(surfaceSize); 1202 setupScrollAndContentsLayers(surfaceSize);
1202 CCLayerImpl* root = m_hostImpl->rootLayer(); 1203 CCLayerImpl* root = m_hostImpl->rootLayer();
1203 CCLayerImpl* child = root->children()[0]; 1204 CCLayerImpl* child = root->children()[0];
1204 1205
1205 OwnPtr<CCLayerImpl> scrollableChild = createScrollableLayer(3, surfaceSize); 1206 scoped_ptr<CCLayerImpl> scrollableChild = createScrollableLayer(3, surfaceSi ze);
1206 child->addChild(scrollableChild.release()); 1207 child->addChild(scrollableChild.Pass());
1207 CCLayerImpl* grandChild = child->children()[0]; 1208 CCLayerImpl* grandChild = child->children()[0];
1208 1209
1209 // Set new page scale on impl thread by pinching. 1210 // Set new page scale on impl thread by pinching.
1210 m_hostImpl->pinchGestureBegin(); 1211 m_hostImpl->pinchGestureBegin();
1211 m_hostImpl->pinchGestureUpdate(newPageScale, IntPoint()); 1212 m_hostImpl->pinchGestureUpdate(newPageScale, IntPoint());
1212 m_hostImpl->pinchGestureEnd(); 1213 m_hostImpl->pinchGestureEnd();
1213 m_hostImpl->updateRootScrollLayerImplTransform(); 1214 m_hostImpl->updateRootScrollLayerImplTransform();
1214 1215
1215 // The page scale delta should only be applied to the scrollable root layer. 1216 // The page scale delta should only be applied to the scrollable root layer.
1216 EXPECT_EQ(root->implTransform(), newPageScaleMatrix); 1217 EXPECT_EQ(root->implTransform(), newPageScaleMatrix);
(...skipping 11 matching lines...) Expand all
1228 EXPECT_EQ(root->drawTransform().m22(), newPageScale); 1229 EXPECT_EQ(root->drawTransform().m22(), newPageScale);
1229 EXPECT_EQ(child->drawTransform().m11(), newPageScale); 1230 EXPECT_EQ(child->drawTransform().m11(), newPageScale);
1230 EXPECT_EQ(child->drawTransform().m22(), newPageScale); 1231 EXPECT_EQ(child->drawTransform().m22(), newPageScale);
1231 EXPECT_EQ(grandChild->drawTransform().m11(), newPageScale); 1232 EXPECT_EQ(grandChild->drawTransform().m11(), newPageScale);
1232 EXPECT_EQ(grandChild->drawTransform().m22(), newPageScale); 1233 EXPECT_EQ(grandChild->drawTransform().m22(), newPageScale);
1233 } 1234 }
1234 1235
1235 TEST_P(CCLayerTreeHostImplTest, scrollChildAndChangePageScaleOnMainThread) 1236 TEST_P(CCLayerTreeHostImplTest, scrollChildAndChangePageScaleOnMainThread)
1236 { 1237 {
1237 IntSize surfaceSize(10, 10); 1238 IntSize surfaceSize(10, 10);
1238 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 1239 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
1239 root->setBounds(surfaceSize); 1240 root->setBounds(surfaceSize);
1240 root->setContentBounds(surfaceSize); 1241 root->setContentBounds(surfaceSize);
1241 // Also mark the root scrollable so it becomes the root scroll layer. 1242 // Also mark the root scrollable so it becomes the root scroll layer.
1242 root->setScrollable(true); 1243 root->setScrollable(true);
1243 int scrollLayerId = 2; 1244 int scrollLayerId = 2;
1244 root->addChild(createScrollableLayer(scrollLayerId, surfaceSize)); 1245 root->addChild(createScrollableLayer(scrollLayerId, surfaceSize));
1245 m_hostImpl->setRootLayer(root.release()); 1246 m_hostImpl->setRootLayer(root.Pass());
1246 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1247 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1247 initializeRendererAndDrawFrame(); 1248 initializeRendererAndDrawFrame();
1248 1249
1249 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0]; 1250 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0];
1250 1251
1251 IntSize scrollDelta(0, 10); 1252 IntSize scrollDelta(0, 10);
1252 IntSize expectedScrollDelta(scrollDelta); 1253 IntSize expectedScrollDelta(scrollDelta);
1253 IntSize expectedMaxScroll(child->maxScrollPosition()); 1254 IntSize expectedMaxScroll(child->maxScrollPosition());
1254 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted); 1255 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient::Whee l), CCInputHandlerClient::ScrollStarted);
1255 m_hostImpl->scrollBy(IntPoint(), scrollDelta); 1256 m_hostImpl->scrollBy(IntPoint(), scrollDelta);
(...skipping 18 matching lines...) Expand all
1274 WebTransformationMatrix identityTransform; 1275 WebTransformationMatrix identityTransform;
1275 EXPECT_EQ(child->implTransform(), WebTransformationMatrix()); 1276 EXPECT_EQ(child->implTransform(), WebTransformationMatrix());
1276 } 1277 }
1277 1278
1278 TEST_P(CCLayerTreeHostImplTest, scrollChildBeyondLimit) 1279 TEST_P(CCLayerTreeHostImplTest, scrollChildBeyondLimit)
1279 { 1280 {
1280 // Scroll a child layer beyond its maximum scroll range and make sure the 1281 // Scroll a child layer beyond its maximum scroll range and make sure the
1281 // parent layer is scrolled on the axis on which the child was unable to 1282 // parent layer is scrolled on the axis on which the child was unable to
1282 // scroll. 1283 // scroll.
1283 IntSize surfaceSize(10, 10); 1284 IntSize surfaceSize(10, 10);
1284 OwnPtr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize); 1285 scoped_ptr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize);
1285 1286
1286 OwnPtr<CCLayerImpl> grandChild = createScrollableLayer(3, surfaceSize); 1287 scoped_ptr<CCLayerImpl> grandChild = createScrollableLayer(3, surfaceSize);
1287 grandChild->setScrollPosition(IntPoint(0, 5)); 1288 grandChild->setScrollPosition(IntPoint(0, 5));
1288 1289
1289 OwnPtr<CCLayerImpl> child = createScrollableLayer(2, surfaceSize); 1290 scoped_ptr<CCLayerImpl> child = createScrollableLayer(2, surfaceSize);
1290 child->setScrollPosition(IntPoint(3, 0)); 1291 child->setScrollPosition(IntPoint(3, 0));
1291 child->addChild(grandChild.release()); 1292 child->addChild(grandChild.Pass());
1292 1293
1293 root->addChild(child.release()); 1294 root->addChild(child.Pass());
1294 m_hostImpl->setRootLayer(root.release()); 1295 m_hostImpl->setRootLayer(root.Pass());
1295 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1296 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1296 initializeRendererAndDrawFrame(); 1297 initializeRendererAndDrawFrame();
1297 { 1298 {
1298 IntSize scrollDelta(-8, -7); 1299 IntSize scrollDelta(-8, -7);
1299 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient:: Wheel), CCInputHandlerClient::ScrollStarted); 1300 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient:: Wheel), CCInputHandlerClient::ScrollStarted);
1300 m_hostImpl->scrollBy(IntPoint(), scrollDelta); 1301 m_hostImpl->scrollBy(IntPoint(), scrollDelta);
1301 m_hostImpl->scrollEnd(); 1302 m_hostImpl->scrollEnd();
1302 1303
1303 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); 1304 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas ();
1304 1305
1305 // The grand child should have scrolled up to its limit. 1306 // The grand child should have scrolled up to its limit.
1306 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0]; 1307 CCLayerImpl* child = m_hostImpl->rootLayer()->children()[0];
1307 CCLayerImpl* grandChild = child->children()[0]; 1308 CCLayerImpl* grandChild = child->children()[0];
1308 expectContains(*scrollInfo.get(), grandChild->id(), IntSize(0, -5)); 1309 expectContains(*scrollInfo.get(), grandChild->id(), IntSize(0, -5));
1309 1310
1310 // The child should have only scrolled on the other axis. 1311 // The child should have only scrolled on the other axis.
1311 expectContains(*scrollInfo.get(), child->id(), IntSize(-3, 0)); 1312 expectContains(*scrollInfo.get(), child->id(), IntSize(-3, 0));
1312 } 1313 }
1313 } 1314 }
1314 1315
1315 TEST_P(CCLayerTreeHostImplTest, scrollEventBubbling) 1316 TEST_P(CCLayerTreeHostImplTest, scrollEventBubbling)
1316 { 1317 {
1317 // When we try to scroll a non-scrollable child layer, the scroll delta 1318 // When we try to scroll a non-scrollable child layer, the scroll delta
1318 // should be applied to one of its ancestors if possible. 1319 // should be applied to one of its ancestors if possible.
1319 IntSize surfaceSize(10, 10); 1320 IntSize surfaceSize(10, 10);
1320 OwnPtr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize); 1321 scoped_ptr<CCLayerImpl> root = createScrollableLayer(1, surfaceSize);
1321 OwnPtr<CCLayerImpl> child = createScrollableLayer(2, surfaceSize); 1322 scoped_ptr<CCLayerImpl> child = createScrollableLayer(2, surfaceSize);
1322 1323
1323 child->setScrollable(false); 1324 child->setScrollable(false);
1324 root->addChild(child.release()); 1325 root->addChild(child.Pass());
1325 1326
1326 m_hostImpl->setRootLayer(root.release()); 1327 m_hostImpl->setRootLayer(root.Pass());
1327 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1328 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1328 initializeRendererAndDrawFrame(); 1329 initializeRendererAndDrawFrame();
1329 { 1330 {
1330 IntSize scrollDelta(0, 4); 1331 IntSize scrollDelta(0, 4);
1331 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient:: Wheel), CCInputHandlerClient::ScrollStarted); 1332 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(5, 5), CCInputHandlerClient:: Wheel), CCInputHandlerClient::ScrollStarted);
1332 m_hostImpl->scrollBy(IntPoint(), scrollDelta); 1333 m_hostImpl->scrollBy(IntPoint(), scrollDelta);
1333 m_hostImpl->scrollEnd(); 1334 m_hostImpl->scrollEnd();
1334 1335
1335 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas (); 1336 OwnPtr<CCScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas ();
1336 1337
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1390 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), wheelScroll Delta); 1391 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), wheelScroll Delta);
1391 } 1392 }
1392 1393
1393 TEST_P(CCLayerTreeHostImplTest, scrollNonAxisAlignedRotatedLayer) 1394 TEST_P(CCLayerTreeHostImplTest, scrollNonAxisAlignedRotatedLayer)
1394 { 1395 {
1395 setupScrollAndContentsLayers(IntSize(100, 100)); 1396 setupScrollAndContentsLayers(IntSize(100, 100));
1396 int childLayerId = 3; 1397 int childLayerId = 3;
1397 float childLayerAngle = -20; 1398 float childLayerAngle = -20;
1398 1399
1399 // Create a child layer that is rotated to a non-axis-aligned angle. 1400 // Create a child layer that is rotated to a non-axis-aligned angle.
1400 OwnPtr<CCLayerImpl> child = createScrollableLayer(childLayerId, m_hostImpl-> rootLayer()->contentBounds()); 1401 scoped_ptr<CCLayerImpl> child = createScrollableLayer(childLayerId, m_hostIm pl->rootLayer()->contentBounds());
1401 WebTransformationMatrix rotateTransform; 1402 WebTransformationMatrix rotateTransform;
1402 rotateTransform.translate(-50, -50); 1403 rotateTransform.translate(-50, -50);
1403 rotateTransform.rotate(childLayerAngle); 1404 rotateTransform.rotate(childLayerAngle);
1404 rotateTransform.translate(50, 50); 1405 rotateTransform.translate(50, 50);
1405 child->setTransform(rotateTransform); 1406 child->setTransform(rotateTransform);
1406 1407
1407 // Only allow vertical scrolling. 1408 // Only allow vertical scrolling.
1408 child->setMaxScrollPosition(IntSize(0, child->contentBounds().height())); 1409 child->setMaxScrollPosition(IntSize(0, child->contentBounds().height()));
1409 m_hostImpl->rootLayer()->addChild(child.release()); 1410 m_hostImpl->rootLayer()->addChild(child.Pass());
1410 1411
1411 IntSize surfaceSize(50, 50); 1412 IntSize surfaceSize(50, 50);
1412 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1413 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1413 initializeRendererAndDrawFrame(); 1414 initializeRendererAndDrawFrame();
1414 1415
1415 { 1416 {
1416 // Scroll down in screen coordinates with a gesture. 1417 // Scroll down in screen coordinates with a gesture.
1417 IntSize gestureScrollDelta(0, 10); 1418 IntSize gestureScrollDelta(0, 10);
1418 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient:: Gesture), CCInputHandlerClient::ScrollStarted); 1419 EXPECT_EQ(m_hostImpl->scrollBegin(IntPoint(0, 0), CCInputHandlerClient:: Gesture), CCInputHandlerClient::ScrollStarted);
1419 m_hostImpl->scrollBy(IntPoint(), gestureScrollDelta); 1420 m_hostImpl->scrollBy(IntPoint(), gestureScrollDelta);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 } 1505 }
1505 1506
1506 bool blend() const { return m_blend; } 1507 bool blend() const { return m_blend; }
1507 1508
1508 private: 1509 private:
1509 bool m_blend; 1510 bool m_blend;
1510 }; 1511 };
1511 1512
1512 class BlendStateCheckLayer : public CCLayerImpl { 1513 class BlendStateCheckLayer : public CCLayerImpl {
1513 public: 1514 public:
1514 static PassOwnPtr<BlendStateCheckLayer> create(int id, CCResourceProvider* r esourceProvider) { return adoptPtr(new BlendStateCheckLayer(id, resourceProvider )); } 1515 static scoped_ptr<CCLayerImpl> create(int id, CCResourceProvider* resourcePr ovider) { return scoped_ptr<CCLayerImpl>(new BlendStateCheckLayer(id, resourcePr ovider)); }
1515 1516
1516 virtual void appendQuads(CCQuadSink& quadSink, CCAppendQuadsData& appendQuad sData) OVERRIDE 1517 virtual void appendQuads(CCQuadSink& quadSink, CCAppendQuadsData& appendQuad sData) OVERRIDE
1517 { 1518 {
1518 m_quadsAppended = true; 1519 m_quadsAppended = true;
1519 1520
1520 IntRect opaqueRect; 1521 IntRect opaqueRect;
1521 if (contentsOpaque()) 1522 if (contentsOpaque())
1522 opaqueRect = m_quadRect; 1523 opaqueRect = m_quadRect;
1523 else 1524 else
1524 opaqueRect = m_opaqueContentRect; 1525 opaqueRect = m_opaqueContentRect;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1565 bool m_quadsAppended; 1566 bool m_quadsAppended;
1566 IntRect m_quadRect; 1567 IntRect m_quadRect;
1567 IntRect m_opaqueContentRect; 1568 IntRect m_opaqueContentRect;
1568 IntRect m_quadVisibleRect; 1569 IntRect m_quadVisibleRect;
1569 CCResourceProvider::ResourceId m_resourceId; 1570 CCResourceProvider::ResourceId m_resourceId;
1570 }; 1571 };
1571 1572
1572 TEST_P(CCLayerTreeHostImplTest, blendingOffWhenDrawingOpaqueLayers) 1573 TEST_P(CCLayerTreeHostImplTest, blendingOffWhenDrawingOpaqueLayers)
1573 { 1574 {
1574 { 1575 {
1575 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 1576 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
1576 root->setAnchorPoint(FloatPoint(0, 0)); 1577 root->setAnchorPoint(FloatPoint(0, 0));
1577 root->setBounds(IntSize(10, 10)); 1578 root->setBounds(IntSize(10, 10));
1578 root->setContentBounds(root->bounds()); 1579 root->setContentBounds(root->bounds());
1579 root->setDrawsContent(false); 1580 root->setDrawsContent(false);
1580 m_hostImpl->setRootLayer(root.release()); 1581 m_hostImpl->setRootLayer(root.Pass());
1581 } 1582 }
1582 CCLayerImpl* root = m_hostImpl->rootLayer(); 1583 CCLayerImpl* root = m_hostImpl->rootLayer();
1583 1584
1584 root->addChild(BlendStateCheckLayer::create(2, m_hostImpl->resourceProvider( ))); 1585 root->addChild(BlendStateCheckLayer::create(2, m_hostImpl->resourceProvider( )));
1585 BlendStateCheckLayer* layer1 = static_cast<BlendStateCheckLayer*>(root->chil dren()[0]); 1586 BlendStateCheckLayer* layer1 = static_cast<BlendStateCheckLayer*>(root->chil dren()[0]);
1586 layer1->setPosition(FloatPoint(2, 2)); 1587 layer1->setPosition(FloatPoint(2, 2));
1587 1588
1588 CCLayerTreeHostImpl::FrameData frame; 1589 CCLayerTreeHostImpl::FrameData frame;
1589 1590
1590 // Opaque layer, drawn without blending. 1591 // Opaque layer, drawn without blending.
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
1857 } 1858 }
1858 1859
1859 bool reshapeCalled() const { return m_reshapeCalled; } 1860 bool reshapeCalled() const { return m_reshapeCalled; }
1860 1861
1861 private: 1862 private:
1862 bool m_reshapeCalled; 1863 bool m_reshapeCalled;
1863 }; 1864 };
1864 1865
1865 class FakeDrawableCCLayerImpl: public CCLayerImpl { 1866 class FakeDrawableCCLayerImpl: public CCLayerImpl {
1866 public: 1867 public:
1868 static scoped_ptr<CCLayerImpl> create(int id) { return scoped_ptr<CCLayerImp l>(new FakeDrawableCCLayerImpl(id)); }
1869 protected:
1867 explicit FakeDrawableCCLayerImpl(int id) : CCLayerImpl(id) { } 1870 explicit FakeDrawableCCLayerImpl(int id) : CCLayerImpl(id) { }
1868 }; 1871 };
1869 1872
1870 // Only reshape when we know we are going to draw. Otherwise, the reshape 1873 // Only reshape when we know we are going to draw. Otherwise, the reshape
1871 // can leave the window at the wrong size if we never draw and the proper 1874 // can leave the window at the wrong size if we never draw and the proper
1872 // viewport size is never set. 1875 // viewport size is never set.
1873 TEST_P(CCLayerTreeHostImplTest, reshapeNotCalledUntilDraw) 1876 TEST_P(CCLayerTreeHostImplTest, reshapeNotCalledUntilDraw)
1874 { 1877 {
1875 scoped_ptr<CCGraphicsContext> ccContext = FakeWebCompositorOutputSurface::cr eate(adoptPtr(new ReshapeTrackerContext)).PassAs<CCGraphicsContext>(); 1878 scoped_ptr<CCGraphicsContext> ccContext = FakeWebCompositorOutputSurface::cr eate(adoptPtr(new ReshapeTrackerContext)).PassAs<CCGraphicsContext>();
1876 ReshapeTrackerContext* reshapeTracker = static_cast<ReshapeTrackerContext*>( ccContext->context3D()); 1879 ReshapeTrackerContext* reshapeTracker = static_cast<ReshapeTrackerContext*>( ccContext->context3D());
1877 m_hostImpl->initializeRenderer(ccContext.Pass()); 1880 m_hostImpl->initializeRenderer(ccContext.Pass());
1878 1881
1879 CCLayerImpl* root = new FakeDrawableCCLayerImpl(1); 1882 scoped_ptr<CCLayerImpl> root = FakeDrawableCCLayerImpl::create(1);
1880 root->setAnchorPoint(FloatPoint(0, 0)); 1883 root->setAnchorPoint(FloatPoint(0, 0));
1881 root->setBounds(IntSize(10, 10)); 1884 root->setBounds(IntSize(10, 10));
1882 root->setDrawsContent(true); 1885 root->setDrawsContent(true);
1883 m_hostImpl->setRootLayer(adoptPtr(root)); 1886 m_hostImpl->setRootLayer(root.Pass());
1884 EXPECT_FALSE(reshapeTracker->reshapeCalled()); 1887 EXPECT_FALSE(reshapeTracker->reshapeCalled());
1885 1888
1886 CCLayerTreeHostImpl::FrameData frame; 1889 CCLayerTreeHostImpl::FrameData frame;
1887 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 1890 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
1888 m_hostImpl->drawLayers(frame); 1891 m_hostImpl->drawLayers(frame);
1889 EXPECT_TRUE(reshapeTracker->reshapeCalled()); 1892 EXPECT_TRUE(reshapeTracker->reshapeCalled());
1890 m_hostImpl->didDrawAllLayers(frame); 1893 m_hostImpl->didDrawAllLayers(frame);
1891 } 1894 }
1892 1895
1893 class PartialSwapTrackerContext : public FakeWebGraphicsContext3D { 1896 class PartialSwapTrackerContext : public FakeWebGraphicsContext3D {
(...skipping 25 matching lines...) Expand all
1919 PartialSwapTrackerContext* partialSwapTracker = static_cast<PartialSwapTrack erContext*>(ccContext->context3D()); 1922 PartialSwapTrackerContext* partialSwapTracker = static_cast<PartialSwapTrack erContext*>(ccContext->context3D());
1920 1923
1921 // This test creates its own CCLayerTreeHostImpl, so 1924 // This test creates its own CCLayerTreeHostImpl, so
1922 // that we can force partial swap enabled. 1925 // that we can force partial swap enabled.
1923 CCLayerTreeSettings settings; 1926 CCLayerTreeSettings settings;
1924 CCSettings::setPartialSwapEnabled(true); 1927 CCSettings::setPartialSwapEnabled(true);
1925 scoped_ptr<CCLayerTreeHostImpl> layerTreeHostImpl = CCLayerTreeHostImpl::cre ate(settings, this); 1928 scoped_ptr<CCLayerTreeHostImpl> layerTreeHostImpl = CCLayerTreeHostImpl::cre ate(settings, this);
1926 layerTreeHostImpl->initializeRenderer(ccContext.Pass()); 1929 layerTreeHostImpl->initializeRenderer(ccContext.Pass());
1927 layerTreeHostImpl->setViewportSize(IntSize(500, 500), IntSize(500, 500)); 1930 layerTreeHostImpl->setViewportSize(IntSize(500, 500), IntSize(500, 500));
1928 1931
1929 CCLayerImpl* root = new FakeDrawableCCLayerImpl(1); 1932 scoped_ptr<CCLayerImpl> root = FakeDrawableCCLayerImpl::create(1);
1930 CCLayerImpl* child = new FakeDrawableCCLayerImpl(2); 1933 scoped_ptr<CCLayerImpl> child = FakeDrawableCCLayerImpl::create(2);
1931 child->setPosition(FloatPoint(12, 13)); 1934 child->setPosition(FloatPoint(12, 13));
1932 child->setAnchorPoint(FloatPoint(0, 0)); 1935 child->setAnchorPoint(FloatPoint(0, 0));
1933 child->setBounds(IntSize(14, 15)); 1936 child->setBounds(IntSize(14, 15));
1934 child->setContentBounds(IntSize(14, 15)); 1937 child->setContentBounds(IntSize(14, 15));
1935 child->setDrawsContent(true); 1938 child->setDrawsContent(true);
1936 root->setAnchorPoint(FloatPoint(0, 0)); 1939 root->setAnchorPoint(FloatPoint(0, 0));
1937 root->setBounds(IntSize(500, 500)); 1940 root->setBounds(IntSize(500, 500));
1938 root->setContentBounds(IntSize(500, 500)); 1941 root->setContentBounds(IntSize(500, 500));
1939 root->setDrawsContent(true); 1942 root->setDrawsContent(true);
1940 root->addChild(adoptPtr(child)); 1943 root->addChild(child.Pass());
1941 layerTreeHostImpl->setRootLayer(adoptPtr(root)); 1944 layerTreeHostImpl->setRootLayer(root.Pass());
1942 1945
1943 CCLayerTreeHostImpl::FrameData frame; 1946 CCLayerTreeHostImpl::FrameData frame;
1944 1947
1945 // First frame, the entire screen should get swapped. 1948 // First frame, the entire screen should get swapped.
1946 EXPECT_TRUE(layerTreeHostImpl->prepareToDraw(frame)); 1949 EXPECT_TRUE(layerTreeHostImpl->prepareToDraw(frame));
1947 layerTreeHostImpl->drawLayers(frame); 1950 layerTreeHostImpl->drawLayers(frame);
1948 layerTreeHostImpl->didDrawAllLayers(frame); 1951 layerTreeHostImpl->didDrawAllLayers(frame);
1949 layerTreeHostImpl->swapBuffers(); 1952 layerTreeHostImpl->swapBuffers();
1950 IntRect actualSwapRect = partialSwapTracker->partialSwapRect(); 1953 IntRect actualSwapRect = partialSwapTracker->partialSwapRect();
1951 IntRect expectedSwapRect = IntRect(IntPoint::zero(), IntSize(500, 500)); 1954 IntRect expectedSwapRect = IntRect(IntPoint::zero(), IntSize(500, 500));
(...skipping 30 matching lines...) Expand all
1982 actualSwapRect = partialSwapTracker->partialSwapRect(); 1985 actualSwapRect = partialSwapTracker->partialSwapRect();
1983 expectedSwapRect = IntRect(IntPoint::zero(), IntSize(10, 10)); 1986 expectedSwapRect = IntRect(IntPoint::zero(), IntSize(10, 10));
1984 EXPECT_EQ(expectedSwapRect.x(), actualSwapRect.x()); 1987 EXPECT_EQ(expectedSwapRect.x(), actualSwapRect.x());
1985 EXPECT_EQ(expectedSwapRect.y(), actualSwapRect.y()); 1988 EXPECT_EQ(expectedSwapRect.y(), actualSwapRect.y());
1986 EXPECT_EQ(expectedSwapRect.width(), actualSwapRect.width()); 1989 EXPECT_EQ(expectedSwapRect.width(), actualSwapRect.width());
1987 EXPECT_EQ(expectedSwapRect.height(), actualSwapRect.height()); 1990 EXPECT_EQ(expectedSwapRect.height(), actualSwapRect.height());
1988 } 1991 }
1989 1992
1990 TEST_P(CCLayerTreeHostImplTest, rootLayerDoesntCreateExtraSurface) 1993 TEST_P(CCLayerTreeHostImplTest, rootLayerDoesntCreateExtraSurface)
1991 { 1994 {
1992 CCLayerImpl* root = new FakeDrawableCCLayerImpl(1); 1995 scoped_ptr<CCLayerImpl> root = FakeDrawableCCLayerImpl::create(1);
1993 CCLayerImpl* child = new FakeDrawableCCLayerImpl(2); 1996 scoped_ptr<CCLayerImpl> child = FakeDrawableCCLayerImpl::create(2);
1994 child->setAnchorPoint(FloatPoint(0, 0)); 1997 child->setAnchorPoint(FloatPoint(0, 0));
1995 child->setBounds(IntSize(10, 10)); 1998 child->setBounds(IntSize(10, 10));
1996 child->setContentBounds(IntSize(10, 10)); 1999 child->setContentBounds(IntSize(10, 10));
1997 child->setDrawsContent(true); 2000 child->setDrawsContent(true);
1998 root->setAnchorPoint(FloatPoint(0, 0)); 2001 root->setAnchorPoint(FloatPoint(0, 0));
1999 root->setBounds(IntSize(10, 10)); 2002 root->setBounds(IntSize(10, 10));
2000 root->setContentBounds(IntSize(10, 10)); 2003 root->setContentBounds(IntSize(10, 10));
2001 root->setDrawsContent(true); 2004 root->setDrawsContent(true);
2002 root->setOpacity(0.7f); 2005 root->setOpacity(0.7f);
2003 root->addChild(adoptPtr(child)); 2006 root->addChild(child.Pass());
2004 2007
2005 m_hostImpl->setRootLayer(adoptPtr(root)); 2008 m_hostImpl->setRootLayer(root.Pass());
2006 2009
2007 CCLayerTreeHostImpl::FrameData frame; 2010 CCLayerTreeHostImpl::FrameData frame;
2008 2011
2009 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 2012 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
2010 EXPECT_EQ(1u, frame.renderSurfaceLayerList->size()); 2013 EXPECT_EQ(1u, frame.renderSurfaceLayerList->size());
2011 EXPECT_EQ(1u, frame.renderPasses.size()); 2014 EXPECT_EQ(1u, frame.renderPasses.size());
2012 m_hostImpl->didDrawAllLayers(frame); 2015 m_hostImpl->didDrawAllLayers(frame);
2013 } 2016 }
2014 2017
2015 } // namespace 2018 } // namespace
2016 2019
2017 class FakeLayerWithQuads : public CCLayerImpl { 2020 class FakeLayerWithQuads : public CCLayerImpl {
2018 public: 2021 public:
2019 static PassOwnPtr<FakeLayerWithQuads> create(int id) { return adoptPtr(new F akeLayerWithQuads(id)); } 2022 static scoped_ptr<CCLayerImpl> create(int id) { return scoped_ptr<CCLayerImp l>(new FakeLayerWithQuads(id)); }
2020 2023
2021 virtual void appendQuads(CCQuadSink& quadSink, CCAppendQuadsData& appendQuad sData) OVERRIDE 2024 virtual void appendQuads(CCQuadSink& quadSink, CCAppendQuadsData& appendQuad sData) OVERRIDE
2022 { 2025 {
2023 CCSharedQuadState* sharedQuadState = quadSink.useSharedQuadState(createS haredQuadState()); 2026 CCSharedQuadState* sharedQuadState = quadSink.useSharedQuadState(createS haredQuadState());
2024 2027
2025 SkColor gray = SkColorSetRGB(100, 100, 100); 2028 SkColor gray = SkColorSetRGB(100, 100, 100);
2026 IntRect quadRect(IntPoint(0, 0), contentBounds()); 2029 IntRect quadRect(IntPoint(0, 0), contentBounds());
2027 scoped_ptr<CCSolidColorDrawQuad> myQuad = CCSolidColorDrawQuad::create(s haredQuadState, quadRect, gray); 2030 scoped_ptr<CCSolidColorDrawQuad> myQuad = CCSolidColorDrawQuad::create(s haredQuadState, quadRect, gray);
2028 quadSink.append(myQuad.PassAs<CCDrawQuad>(), appendQuadsData); 2031 quadSink.append(myQuad.PassAs<CCDrawQuad>(), appendQuadsData);
2029 } 2032 }
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
2224 | | | 3 | 2227 | | | 3 |
2225 | | +-------------------+ 2228 | | +-------------------+
2226 | | | | 2229 | | | |
2227 | +-----------+ | 2230 | +-----------+ |
2228 | | 2231 | |
2229 | | 2232 | |
2230 +--------------------+ 2233 +--------------------+
2231 2234
2232 Layers 1, 2 have render surfaces 2235 Layers 1, 2 have render surfaces
2233 */ 2236 */
2234 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 2237 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
2235 OwnPtr<CCLayerImpl> child = CCLayerImpl::create(2); 2238 scoped_ptr<CCLayerImpl> child = CCLayerImpl::create(2);
2236 OwnPtr<CCLayerImpl> grandChild = FakeLayerWithQuads::create(3); 2239 scoped_ptr<CCLayerImpl> grandChild = FakeLayerWithQuads::create(3);
2237 2240
2238 IntRect rootRect(0, 0, 100, 100); 2241 IntRect rootRect(0, 0, 100, 100);
2239 IntRect childRect(10, 10, 50, 50); 2242 IntRect childRect(10, 10, 50, 50);
2240 IntRect grandChildRect(5, 5, 150, 150); 2243 IntRect grandChildRect(5, 5, 150, 150);
2241 2244
2242 root->createRenderSurface(); 2245 root->createRenderSurface();
2243 root->setAnchorPoint(FloatPoint(0, 0)); 2246 root->setAnchorPoint(FloatPoint(0, 0));
2244 root->setPosition(FloatPoint(rootRect.x(), rootRect.y())); 2247 root->setPosition(FloatPoint(rootRect.x(), rootRect.y()));
2245 root->setBounds(IntSize(rootRect.width(), rootRect.height())); 2248 root->setBounds(IntSize(rootRect.width(), rootRect.height()));
2246 root->setContentBounds(root->bounds()); 2249 root->setContentBounds(root->bounds());
2247 root->setVisibleContentRect(rootRect); 2250 root->setVisibleContentRect(rootRect);
2248 root->setDrawsContent(false); 2251 root->setDrawsContent(false);
2249 root->renderSurface()->setContentRect(IntRect(IntPoint(), IntSize(rootRect.w idth(), rootRect.height()))); 2252 root->renderSurface()->setContentRect(IntRect(IntPoint(), IntSize(rootRect.w idth(), rootRect.height())));
2250 2253
2251 child->setAnchorPoint(FloatPoint(0, 0)); 2254 child->setAnchorPoint(FloatPoint(0, 0));
2252 child->setPosition(FloatPoint(childRect.x(), childRect.y())); 2255 child->setPosition(FloatPoint(childRect.x(), childRect.y()));
2253 child->setOpacity(0.5f); 2256 child->setOpacity(0.5f);
2254 child->setBounds(IntSize(childRect.width(), childRect.height())); 2257 child->setBounds(IntSize(childRect.width(), childRect.height()));
2255 child->setContentBounds(child->bounds()); 2258 child->setContentBounds(child->bounds());
2256 child->setVisibleContentRect(childRect); 2259 child->setVisibleContentRect(childRect);
2257 child->setDrawsContent(false); 2260 child->setDrawsContent(false);
2258 2261
2259 grandChild->setAnchorPoint(FloatPoint(0, 0)); 2262 grandChild->setAnchorPoint(FloatPoint(0, 0));
2260 grandChild->setPosition(IntPoint(grandChildRect.x(), grandChildRect.y())); 2263 grandChild->setPosition(IntPoint(grandChildRect.x(), grandChildRect.y()));
2261 grandChild->setBounds(IntSize(grandChildRect.width(), grandChildRect.height( ))); 2264 grandChild->setBounds(IntSize(grandChildRect.width(), grandChildRect.height( )));
2262 grandChild->setContentBounds(grandChild->bounds()); 2265 grandChild->setContentBounds(grandChild->bounds());
2263 grandChild->setVisibleContentRect(grandChildRect); 2266 grandChild->setVisibleContentRect(grandChildRect);
2264 grandChild->setDrawsContent(true); 2267 grandChild->setDrawsContent(true);
2265 2268
2266 child->addChild(grandChild.release()); 2269 child->addChild(grandChild.Pass());
2267 root->addChild(child.release()); 2270 root->addChild(child.Pass());
2268 2271
2269 myHostImpl->setRootLayer(root.release()); 2272 myHostImpl->setRootLayer(root.Pass());
2270 return myHostImpl.Pass(); 2273 return myHostImpl.Pass();
2271 } 2274 }
2272 2275
2273 TEST_P(CCLayerTreeHostImplTest, contributingLayerEmptyScissorPartialSwap) 2276 TEST_P(CCLayerTreeHostImplTest, contributingLayerEmptyScissorPartialSwap)
2274 { 2277 {
2275 scoped_ptr<CCLayerTreeHostImpl> myHostImpl = setupLayersForOpacity(true, thi s); 2278 scoped_ptr<CCLayerTreeHostImpl> myHostImpl = setupLayersForOpacity(true, thi s);
2276 2279
2277 { 2280 {
2278 CCLayerTreeHostImpl::FrameData frame; 2281 CCLayerTreeHostImpl::FrameData frame;
2279 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 2282 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
(...skipping 28 matching lines...) Expand all
2308 ASSERT_EQ(1U, frame.renderPasses[0]->quadList().size()); 2311 ASSERT_EQ(1U, frame.renderPasses[0]->quadList().size());
2309 ASSERT_EQ(1U, frame.renderPasses[1]->quadList().size()); 2312 ASSERT_EQ(1U, frame.renderPasses[1]->quadList().size());
2310 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material()); 2313 EXPECT_EQ(CCDrawQuad::SolidColor, frame.renderPasses[0]->quadList()[0]-> material());
2311 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material()); 2314 EXPECT_EQ(CCDrawQuad::RenderPass, frame.renderPasses[1]->quadList()[0]-> material());
2312 } 2315 }
2313 } 2316 }
2314 2317
2315 // Make sure that context lost notifications are propagated through the tree. 2318 // Make sure that context lost notifications are propagated through the tree.
2316 class ContextLostNotificationCheckLayer : public CCLayerImpl { 2319 class ContextLostNotificationCheckLayer : public CCLayerImpl {
2317 public: 2320 public:
2318 static PassOwnPtr<ContextLostNotificationCheckLayer> create(int id) { return adoptPtr(new ContextLostNotificationCheckLayer(id)); } 2321 static scoped_ptr<CCLayerImpl> create(int id) { return scoped_ptr<CCLayerImp l>(new ContextLostNotificationCheckLayer(id)); }
2319 2322
2320 virtual void didLoseContext() OVERRIDE 2323 virtual void didLoseContext() OVERRIDE
2321 { 2324 {
2322 m_didLoseContextCalled = true; 2325 m_didLoseContextCalled = true;
2323 } 2326 }
2324 2327
2325 bool didLoseContextCalled() const { return m_didLoseContextCalled; } 2328 bool didLoseContextCalled() const { return m_didLoseContextCalled; }
2326 2329
2327 private: 2330 private:
2328 explicit ContextLostNotificationCheckLayer(int id) 2331 explicit ContextLostNotificationCheckLayer(int id)
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
2583 virtual void splitTrack(WebScrollbar*, const WebRect& track, WebRect& startT rack, WebRect& thumb, WebRect& endTrack) OVERRIDE 2586 virtual void splitTrack(WebScrollbar*, const WebRect& track, WebRect& startT rack, WebRect& thumb, WebRect& endTrack) OVERRIDE
2584 { 2587 {
2585 thumb = WebRect(0, 5, 5, 2); 2588 thumb = WebRect(0, 5, 5, 2);
2586 startTrack = WebRect(0, 5, 0, 5); 2589 startTrack = WebRect(0, 5, 0, 5);
2587 endTrack = WebRect(0, 0, 0, 5); 2590 endTrack = WebRect(0, 0, 0, 5);
2588 } 2591 }
2589 }; 2592 };
2590 2593
2591 class FakeScrollbarLayerImpl : public CCScrollbarLayerImpl { 2594 class FakeScrollbarLayerImpl : public CCScrollbarLayerImpl {
2592 public: 2595 public:
2593 static PassOwnPtr<FakeScrollbarLayerImpl> create(int id) 2596 static scoped_ptr<FakeScrollbarLayerImpl> create(int id)
2594 { 2597 {
2595 return adoptPtr(new FakeScrollbarLayerImpl(id)); 2598 return make_scoped_ptr(new FakeScrollbarLayerImpl(id));
2596 } 2599 }
2597 2600
2598 void createResources(CCResourceProvider* provider) 2601 void createResources(CCResourceProvider* provider)
2599 { 2602 {
2600 ASSERT(provider); 2603 ASSERT(provider);
2601 int pool = 0; 2604 int pool = 0;
2602 IntSize size(10, 10); 2605 IntSize size(10, 10);
2603 GC3Denum format = GraphicsContext3D::RGBA; 2606 GC3Denum format = GraphicsContext3D::RGBA;
2604 CCResourceProvider::TextureUsageHint hint = CCResourceProvider::TextureU sageAny; 2607 CCResourceProvider::TextureUsageHint hint = CCResourceProvider::TextureU sageAny;
2605 setScrollbarGeometry(CCScrollbarGeometryFixedThumb::create(FakeWebScroll barThemeGeometryNonEmpty::create())); 2608 setScrollbarGeometry(CCScrollbarGeometryFixedThumb::create(FakeWebScroll barThemeGeometryNonEmpty::create()));
(...skipping 21 matching lines...) Expand all
2627 static_cast<CCTestRenderPass*>(pass.get())->appendSharedQuadState(sharedStat e.Pass()); 2630 static_cast<CCTestRenderPass*>(pass.get())->appendSharedQuadState(sharedStat e.Pass());
2628 static_cast<CCTestRenderPass*>(pass.get())->appendQuad(quad.PassAs<CCDrawQua d>()); 2631 static_cast<CCTestRenderPass*>(pass.get())->appendQuad(quad.PassAs<CCDrawQua d>());
2629 2632
2630 return pass.Pass(); 2633 return pass.Pass();
2631 } 2634 }
2632 2635
2633 TEST_P(CCLayerTreeHostImplTest, dontUseOldResourcesAfterLostContext) 2636 TEST_P(CCLayerTreeHostImplTest, dontUseOldResourcesAfterLostContext)
2634 { 2637 {
2635 int layerId = 1; 2638 int layerId = 1;
2636 2639
2637 OwnPtr<CCLayerImpl> rootLayer(CCLayerImpl::create(layerId++)); 2640 scoped_ptr<CCLayerImpl> rootLayer(CCLayerImpl::create(layerId++));
2638 rootLayer->setBounds(IntSize(10, 10)); 2641 rootLayer->setBounds(IntSize(10, 10));
2639 rootLayer->setAnchorPoint(FloatPoint(0, 0)); 2642 rootLayer->setAnchorPoint(FloatPoint(0, 0));
2640 2643
2641 OwnPtr<CCTiledLayerImpl> tileLayer = CCTiledLayerImpl::create(layerId++); 2644 scoped_ptr<CCTiledLayerImpl> tileLayer = CCTiledLayerImpl::create(layerId++) ;
2642 tileLayer->setBounds(IntSize(10, 10)); 2645 tileLayer->setBounds(IntSize(10, 10));
2643 tileLayer->setAnchorPoint(FloatPoint(0, 0)); 2646 tileLayer->setAnchorPoint(FloatPoint(0, 0));
2644 tileLayer->setContentBounds(IntSize(10, 10)); 2647 tileLayer->setContentBounds(IntSize(10, 10));
2645 tileLayer->setDrawsContent(true); 2648 tileLayer->setDrawsContent(true);
2646 tileLayer->setSkipsDraw(false); 2649 tileLayer->setSkipsDraw(false);
2647 OwnPtr<CCLayerTilingData> tilingData(CCLayerTilingData::create(IntSize(10, 1 0), CCLayerTilingData::NoBorderTexels)); 2650 OwnPtr<CCLayerTilingData> tilingData(CCLayerTilingData::create(IntSize(10, 1 0), CCLayerTilingData::NoBorderTexels));
2648 tilingData->setBounds(IntSize(10, 10)); 2651 tilingData->setBounds(IntSize(10, 10));
2649 tileLayer->setTilingData(*tilingData); 2652 tileLayer->setTilingData(*tilingData);
2650 tileLayer->pushTileProperties(0, 0, 1, IntRect(0, 0, 10, 10)); 2653 tileLayer->pushTileProperties(0, 0, 1, IntRect(0, 0, 10, 10));
2651 rootLayer->addChild(tileLayer.release()); 2654 rootLayer->addChild(tileLayer.PassAs<CCLayerImpl>());
2652 2655
2653 OwnPtr<CCTextureLayerImpl> textureLayer = CCTextureLayerImpl::create(layerId ++); 2656 scoped_ptr<CCTextureLayerImpl> textureLayer = CCTextureLayerImpl::create(lay erId++);
2654 textureLayer->setBounds(IntSize(10, 10)); 2657 textureLayer->setBounds(IntSize(10, 10));
2655 textureLayer->setAnchorPoint(FloatPoint(0, 0)); 2658 textureLayer->setAnchorPoint(FloatPoint(0, 0));
2656 textureLayer->setContentBounds(IntSize(10, 10)); 2659 textureLayer->setContentBounds(IntSize(10, 10));
2657 textureLayer->setDrawsContent(true); 2660 textureLayer->setDrawsContent(true);
2658 textureLayer->setTextureId(1); 2661 textureLayer->setTextureId(1);
2659 rootLayer->addChild(textureLayer.release()); 2662 rootLayer->addChild(textureLayer.PassAs<CCLayerImpl>());
2660 2663
2661 OwnPtr<CCTiledLayerImpl> maskLayer = CCTiledLayerImpl::create(layerId++); 2664 scoped_ptr<CCTiledLayerImpl> maskLayer = CCTiledLayerImpl::create(layerId++) ;
2662 maskLayer->setBounds(IntSize(10, 10)); 2665 maskLayer->setBounds(IntSize(10, 10));
2663 maskLayer->setAnchorPoint(FloatPoint(0, 0)); 2666 maskLayer->setAnchorPoint(FloatPoint(0, 0));
2664 maskLayer->setContentBounds(IntSize(10, 10)); 2667 maskLayer->setContentBounds(IntSize(10, 10));
2665 maskLayer->setDrawsContent(true); 2668 maskLayer->setDrawsContent(true);
2666 maskLayer->setSkipsDraw(false); 2669 maskLayer->setSkipsDraw(false);
2667 maskLayer->setTilingData(*tilingData); 2670 maskLayer->setTilingData(*tilingData);
2668 maskLayer->pushTileProperties(0, 0, 1, IntRect(0, 0, 10, 10)); 2671 maskLayer->pushTileProperties(0, 0, 1, IntRect(0, 0, 10, 10));
2669 2672
2670 OwnPtr<CCTextureLayerImpl> textureLayerWithMask = CCTextureLayerImpl::create (layerId++); 2673 scoped_ptr<CCTextureLayerImpl> textureLayerWithMask = CCTextureLayerImpl::cr eate(layerId++);
2671 textureLayerWithMask->setBounds(IntSize(10, 10)); 2674 textureLayerWithMask->setBounds(IntSize(10, 10));
2672 textureLayerWithMask->setAnchorPoint(FloatPoint(0, 0)); 2675 textureLayerWithMask->setAnchorPoint(FloatPoint(0, 0));
2673 textureLayerWithMask->setContentBounds(IntSize(10, 10)); 2676 textureLayerWithMask->setContentBounds(IntSize(10, 10));
2674 textureLayerWithMask->setDrawsContent(true); 2677 textureLayerWithMask->setDrawsContent(true);
2675 textureLayerWithMask->setTextureId(1); 2678 textureLayerWithMask->setTextureId(1);
2676 textureLayerWithMask->setMaskLayer(maskLayer.release()); 2679 textureLayerWithMask->setMaskLayer(maskLayer.PassAs<CCLayerImpl>());
2677 rootLayer->addChild(textureLayerWithMask.release()); 2680 rootLayer->addChild(textureLayerWithMask.PassAs<CCLayerImpl>());
2678 2681
2679 FakeVideoFrame videoFrame; 2682 FakeVideoFrame videoFrame;
2680 FakeVideoFrameProvider provider; 2683 FakeVideoFrameProvider provider;
2681 provider.setFrame(&videoFrame); 2684 provider.setFrame(&videoFrame);
2682 OwnPtr<CCVideoLayerImpl> videoLayer = CCVideoLayerImpl::create(layerId++, &p rovider); 2685 scoped_ptr<CCVideoLayerImpl> videoLayer = CCVideoLayerImpl::create(layerId++ , &provider);
2683 videoLayer->setBounds(IntSize(10, 10)); 2686 videoLayer->setBounds(IntSize(10, 10));
2684 videoLayer->setAnchorPoint(FloatPoint(0, 0)); 2687 videoLayer->setAnchorPoint(FloatPoint(0, 0));
2685 videoLayer->setContentBounds(IntSize(10, 10)); 2688 videoLayer->setContentBounds(IntSize(10, 10));
2686 videoLayer->setDrawsContent(true); 2689 videoLayer->setDrawsContent(true);
2687 videoLayer->setLayerTreeHostImpl(m_hostImpl.get()); 2690 videoLayer->setLayerTreeHostImpl(m_hostImpl.get());
2688 rootLayer->addChild(videoLayer.release()); 2691 rootLayer->addChild(videoLayer.PassAs<CCLayerImpl>());
2689 2692
2690 FakeVideoFrame hwVideoFrame; 2693 FakeVideoFrame hwVideoFrame;
2691 FakeVideoFrameProvider hwProvider; 2694 FakeVideoFrameProvider hwProvider;
2692 hwProvider.setFrame(&hwVideoFrame); 2695 hwProvider.setFrame(&hwVideoFrame);
2693 OwnPtr<CCVideoLayerImpl> hwVideoLayer = CCVideoLayerImpl::create(layerId++, &hwProvider); 2696 scoped_ptr<CCVideoLayerImpl> hwVideoLayer = CCVideoLayerImpl::create(layerId ++, &hwProvider);
2694 hwVideoLayer->setBounds(IntSize(10, 10)); 2697 hwVideoLayer->setBounds(IntSize(10, 10));
2695 hwVideoLayer->setAnchorPoint(FloatPoint(0, 0)); 2698 hwVideoLayer->setAnchorPoint(FloatPoint(0, 0));
2696 hwVideoLayer->setContentBounds(IntSize(10, 10)); 2699 hwVideoLayer->setContentBounds(IntSize(10, 10));
2697 hwVideoLayer->setDrawsContent(true); 2700 hwVideoLayer->setDrawsContent(true);
2698 hwVideoLayer->setLayerTreeHostImpl(m_hostImpl.get()); 2701 hwVideoLayer->setLayerTreeHostImpl(m_hostImpl.get());
2699 rootLayer->addChild(hwVideoLayer.release()); 2702 rootLayer->addChild(hwVideoLayer.PassAs<CCLayerImpl>());
2700 2703
2701 OwnPtr<CCIOSurfaceLayerImpl> ioSurfaceLayer = CCIOSurfaceLayerImpl::create(l ayerId++); 2704 scoped_ptr<CCIOSurfaceLayerImpl> ioSurfaceLayer = CCIOSurfaceLayerImpl::crea te(layerId++);
2702 ioSurfaceLayer->setBounds(IntSize(10, 10)); 2705 ioSurfaceLayer->setBounds(IntSize(10, 10));
2703 ioSurfaceLayer->setAnchorPoint(FloatPoint(0, 0)); 2706 ioSurfaceLayer->setAnchorPoint(FloatPoint(0, 0));
2704 ioSurfaceLayer->setContentBounds(IntSize(10, 10)); 2707 ioSurfaceLayer->setContentBounds(IntSize(10, 10));
2705 ioSurfaceLayer->setDrawsContent(true); 2708 ioSurfaceLayer->setDrawsContent(true);
2706 ioSurfaceLayer->setIOSurfaceProperties(1, IntSize(10, 10)); 2709 ioSurfaceLayer->setIOSurfaceProperties(1, IntSize(10, 10));
2707 ioSurfaceLayer->setLayerTreeHostImpl(m_hostImpl.get()); 2710 ioSurfaceLayer->setLayerTreeHostImpl(m_hostImpl.get());
2708 rootLayer->addChild(ioSurfaceLayer.release()); 2711 rootLayer->addChild(ioSurfaceLayer.PassAs<CCLayerImpl>());
2709 2712
2710 OwnPtr<CCHeadsUpDisplayLayerImpl> hudLayer = CCHeadsUpDisplayLayerImpl::crea te(layerId++); 2713 scoped_ptr<CCHeadsUpDisplayLayerImpl> hudLayer = CCHeadsUpDisplayLayerImpl:: create(layerId++);
2711 hudLayer->setBounds(IntSize(10, 10)); 2714 hudLayer->setBounds(IntSize(10, 10));
2712 hudLayer->setAnchorPoint(FloatPoint(0, 0)); 2715 hudLayer->setAnchorPoint(FloatPoint(0, 0));
2713 hudLayer->setContentBounds(IntSize(10, 10)); 2716 hudLayer->setContentBounds(IntSize(10, 10));
2714 hudLayer->setDrawsContent(true); 2717 hudLayer->setDrawsContent(true);
2715 hudLayer->setLayerTreeHostImpl(m_hostImpl.get()); 2718 hudLayer->setLayerTreeHostImpl(m_hostImpl.get());
2716 rootLayer->addChild(hudLayer.release()); 2719 rootLayer->addChild(hudLayer.PassAs<CCLayerImpl>());
2717 2720
2718 OwnPtr<FakeScrollbarLayerImpl> scrollbarLayer(FakeScrollbarLayerImpl::create (layerId++)); 2721 scoped_ptr<FakeScrollbarLayerImpl> scrollbarLayer(FakeScrollbarLayerImpl::cr eate(layerId++));
2719 scrollbarLayer->setBounds(IntSize(10, 10)); 2722 scrollbarLayer->setBounds(IntSize(10, 10));
2720 scrollbarLayer->setContentBounds(IntSize(10, 10)); 2723 scrollbarLayer->setContentBounds(IntSize(10, 10));
2721 scrollbarLayer->setDrawsContent(true); 2724 scrollbarLayer->setDrawsContent(true);
2722 scrollbarLayer->setLayerTreeHostImpl(m_hostImpl.get()); 2725 scrollbarLayer->setLayerTreeHostImpl(m_hostImpl.get());
2723 scrollbarLayer->createResources(m_hostImpl->resourceProvider()); 2726 scrollbarLayer->createResources(m_hostImpl->resourceProvider());
2724 rootLayer->addChild(scrollbarLayer.release()); 2727 rootLayer->addChild(scrollbarLayer.PassAs<CCLayerImpl>());
2725 2728
2726 OwnPtr<CCDelegatedRendererLayerImpl> delegatedRendererLayer(CCDelegatedRende rerLayerImpl::create(layerId++)); 2729 scoped_ptr<CCDelegatedRendererLayerImpl> delegatedRendererLayer(CCDelegatedR endererLayerImpl::create(layerId++));
2727 delegatedRendererLayer->setBounds(IntSize(10, 10)); 2730 delegatedRendererLayer->setBounds(IntSize(10, 10));
2728 delegatedRendererLayer->setContentBounds(IntSize(10, 10)); 2731 delegatedRendererLayer->setContentBounds(IntSize(10, 10));
2729 delegatedRendererLayer->setDrawsContent(true); 2732 delegatedRendererLayer->setDrawsContent(true);
2730 delegatedRendererLayer->setLayerTreeHostImpl(m_hostImpl.get()); 2733 delegatedRendererLayer->setLayerTreeHostImpl(m_hostImpl.get());
2731 ScopedPtrVector<CCRenderPass> passList; 2734 ScopedPtrVector<CCRenderPass> passList;
2732 passList.append(createRenderPassWithResource(m_hostImpl->resourceProvider()) ); 2735 passList.append(createRenderPassWithResource(m_hostImpl->resourceProvider()) );
2733 delegatedRendererLayer->setRenderPasses(passList); 2736 delegatedRendererLayer->setRenderPasses(passList);
2734 EXPECT_TRUE(passList.isEmpty()); 2737 EXPECT_TRUE(passList.isEmpty());
2735 rootLayer->addChild(delegatedRendererLayer.release()); 2738 rootLayer->addChild(delegatedRendererLayer.PassAs<CCLayerImpl>());
2736 2739
2737 // Use a context that supports IOSurfaces 2740 // Use a context that supports IOSurfaces
2738 m_hostImpl->initializeRenderer(FakeWebCompositorOutputSurface::create(adoptP tr(new FakeWebGraphicsContext3DWithIOSurface)).PassAs<CCGraphicsContext>()); 2741 m_hostImpl->initializeRenderer(FakeWebCompositorOutputSurface::create(adoptP tr(new FakeWebGraphicsContext3DWithIOSurface)).PassAs<CCGraphicsContext>());
2739 2742
2740 hwVideoFrame.setTextureId(m_hostImpl->resourceProvider()->graphicsContext3D( )->createTexture()); 2743 hwVideoFrame.setTextureId(m_hostImpl->resourceProvider()->graphicsContext3D( )->createTexture());
2741 2744
2742 m_hostImpl->setRootLayer(rootLayer.release()); 2745 m_hostImpl->setRootLayer(rootLayer.Pass());
2743 2746
2744 CCLayerTreeHostImpl::FrameData frame; 2747 CCLayerTreeHostImpl::FrameData frame;
2745 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 2748 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
2746 m_hostImpl->drawLayers(frame); 2749 m_hostImpl->drawLayers(frame);
2747 m_hostImpl->didDrawAllLayers(frame); 2750 m_hostImpl->didDrawAllLayers(frame);
2748 m_hostImpl->swapBuffers(); 2751 m_hostImpl->swapBuffers();
2749 2752
2750 unsigned numResources = m_hostImpl->resourceProvider()->numResources(); 2753 unsigned numResources = m_hostImpl->resourceProvider()->numResources();
2751 2754
2752 // Lose the context, replacing it with a StrictWebGraphicsContext3DWithIOSur face, 2755 // Lose the context, replacing it with a StrictWebGraphicsContext3DWithIOSur face,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
2812 2815
2813 unsigned numTextures() const { return m_numTextures; } 2816 unsigned numTextures() const { return m_numTextures; }
2814 2817
2815 private: 2818 private:
2816 HashMap<WebGLId, bool> m_textures; 2819 HashMap<WebGLId, bool> m_textures;
2817 unsigned m_numTextures; 2820 unsigned m_numTextures;
2818 }; 2821 };
2819 2822
2820 TEST_P(CCLayerTreeHostImplTest, layersFreeTextures) 2823 TEST_P(CCLayerTreeHostImplTest, layersFreeTextures)
2821 { 2824 {
2822 OwnPtr<CCLayerImpl> rootLayer(CCLayerImpl::create(1)); 2825 scoped_ptr<CCLayerImpl> rootLayer(CCLayerImpl::create(1));
2823 rootLayer->setBounds(IntSize(10, 10)); 2826 rootLayer->setBounds(IntSize(10, 10));
2824 rootLayer->setAnchorPoint(FloatPoint(0, 0)); 2827 rootLayer->setAnchorPoint(FloatPoint(0, 0));
2825 2828
2826 OwnPtr<CCTiledLayerImpl> tileLayer = CCTiledLayerImpl::create(2); 2829 scoped_ptr<CCTiledLayerImpl> tileLayer = CCTiledLayerImpl::create(2);
2827 tileLayer->setBounds(IntSize(10, 10)); 2830 tileLayer->setBounds(IntSize(10, 10));
2828 tileLayer->setAnchorPoint(FloatPoint(0, 0)); 2831 tileLayer->setAnchorPoint(FloatPoint(0, 0));
2829 tileLayer->setContentBounds(IntSize(10, 10)); 2832 tileLayer->setContentBounds(IntSize(10, 10));
2830 tileLayer->setDrawsContent(true); 2833 tileLayer->setDrawsContent(true);
2831 tileLayer->setSkipsDraw(false); 2834 tileLayer->setSkipsDraw(false);
2832 OwnPtr<CCLayerTilingData> tilingData(CCLayerTilingData::create(IntSize(10, 1 0), CCLayerTilingData::NoBorderTexels)); 2835 OwnPtr<CCLayerTilingData> tilingData(CCLayerTilingData::create(IntSize(10, 1 0), CCLayerTilingData::NoBorderTexels));
2833 tilingData->setBounds(IntSize(10, 10)); 2836 tilingData->setBounds(IntSize(10, 10));
2834 tileLayer->setTilingData(*tilingData); 2837 tileLayer->setTilingData(*tilingData);
2835 tileLayer->pushTileProperties(0, 0, 1, IntRect(0, 0, 10, 10)); 2838 tileLayer->pushTileProperties(0, 0, 1, IntRect(0, 0, 10, 10));
2836 rootLayer->addChild(tileLayer.release()); 2839 rootLayer->addChild(tileLayer.PassAs<CCLayerImpl>());
2837 2840
2838 OwnPtr<CCTextureLayerImpl> textureLayer = CCTextureLayerImpl::create(3); 2841 scoped_ptr<CCTextureLayerImpl> textureLayer = CCTextureLayerImpl::create(3);
2839 textureLayer->setBounds(IntSize(10, 10)); 2842 textureLayer->setBounds(IntSize(10, 10));
2840 textureLayer->setAnchorPoint(FloatPoint(0, 0)); 2843 textureLayer->setAnchorPoint(FloatPoint(0, 0));
2841 textureLayer->setContentBounds(IntSize(10, 10)); 2844 textureLayer->setContentBounds(IntSize(10, 10));
2842 textureLayer->setDrawsContent(true); 2845 textureLayer->setDrawsContent(true);
2843 textureLayer->setTextureId(1); 2846 textureLayer->setTextureId(1);
2844 rootLayer->addChild(textureLayer.release()); 2847 rootLayer->addChild(textureLayer.PassAs<CCLayerImpl>());
2845 2848
2846 FakeVideoFrameProvider provider; 2849 FakeVideoFrameProvider provider;
2847 OwnPtr<CCVideoLayerImpl> videoLayer = CCVideoLayerImpl::create(4, &provider) ; 2850 scoped_ptr<CCVideoLayerImpl> videoLayer = CCVideoLayerImpl::create(4, &provi der);
2848 videoLayer->setBounds(IntSize(10, 10)); 2851 videoLayer->setBounds(IntSize(10, 10));
2849 videoLayer->setAnchorPoint(FloatPoint(0, 0)); 2852 videoLayer->setAnchorPoint(FloatPoint(0, 0));
2850 videoLayer->setContentBounds(IntSize(10, 10)); 2853 videoLayer->setContentBounds(IntSize(10, 10));
2851 videoLayer->setDrawsContent(true); 2854 videoLayer->setDrawsContent(true);
2852 videoLayer->setLayerTreeHostImpl(m_hostImpl.get()); 2855 videoLayer->setLayerTreeHostImpl(m_hostImpl.get());
2853 rootLayer->addChild(videoLayer.release()); 2856 rootLayer->addChild(videoLayer.PassAs<CCLayerImpl>());
2854 2857
2855 OwnPtr<CCIOSurfaceLayerImpl> ioSurfaceLayer = CCIOSurfaceLayerImpl::create(5 ); 2858 scoped_ptr<CCIOSurfaceLayerImpl> ioSurfaceLayer = CCIOSurfaceLayerImpl::crea te(5);
2856 ioSurfaceLayer->setBounds(IntSize(10, 10)); 2859 ioSurfaceLayer->setBounds(IntSize(10, 10));
2857 ioSurfaceLayer->setAnchorPoint(FloatPoint(0, 0)); 2860 ioSurfaceLayer->setAnchorPoint(FloatPoint(0, 0));
2858 ioSurfaceLayer->setContentBounds(IntSize(10, 10)); 2861 ioSurfaceLayer->setContentBounds(IntSize(10, 10));
2859 ioSurfaceLayer->setDrawsContent(true); 2862 ioSurfaceLayer->setDrawsContent(true);
2860 ioSurfaceLayer->setIOSurfaceProperties(1, IntSize(10, 10)); 2863 ioSurfaceLayer->setIOSurfaceProperties(1, IntSize(10, 10));
2861 ioSurfaceLayer->setLayerTreeHostImpl(m_hostImpl.get()); 2864 ioSurfaceLayer->setLayerTreeHostImpl(m_hostImpl.get());
2862 rootLayer->addChild(ioSurfaceLayer.release()); 2865 rootLayer->addChild(ioSurfaceLayer.PassAs<CCLayerImpl>());
2863 2866
2864 // Lose the context, replacing it with a TrackingWebGraphicsContext3D (which the CCLayerTreeHostImpl takes ownership of). 2867 // Lose the context, replacing it with a TrackingWebGraphicsContext3D (which the CCLayerTreeHostImpl takes ownership of).
2865 scoped_ptr<CCGraphicsContext> ccContext(FakeWebCompositorOutputSurface::crea te(adoptPtr(new TrackingWebGraphicsContext3D))); 2868 scoped_ptr<CCGraphicsContext> ccContext(FakeWebCompositorOutputSurface::crea te(adoptPtr(new TrackingWebGraphicsContext3D)));
2866 TrackingWebGraphicsContext3D* trackingWebGraphicsContext = static_cast<Track ingWebGraphicsContext3D*>(ccContext->context3D()); 2869 TrackingWebGraphicsContext3D* trackingWebGraphicsContext = static_cast<Track ingWebGraphicsContext3D*>(ccContext->context3D());
2867 m_hostImpl->initializeRenderer(ccContext.Pass()); 2870 m_hostImpl->initializeRenderer(ccContext.Pass());
2868 2871
2869 m_hostImpl->setRootLayer(rootLayer.release()); 2872 m_hostImpl->setRootLayer(rootLayer.Pass());
2870 2873
2871 CCLayerTreeHostImpl::FrameData frame; 2874 CCLayerTreeHostImpl::FrameData frame;
2872 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame)); 2875 EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
2873 m_hostImpl->drawLayers(frame); 2876 m_hostImpl->drawLayers(frame);
2874 m_hostImpl->didDrawAllLayers(frame); 2877 m_hostImpl->didDrawAllLayers(frame);
2875 m_hostImpl->swapBuffers(); 2878 m_hostImpl->swapBuffers();
2876 2879
2877 EXPECT_GT(trackingWebGraphicsContext->numTextures(), 0u); 2880 EXPECT_GT(trackingWebGraphicsContext->numTextures(), 0u);
2878 2881
2879 // Kill the layer tree. 2882 // Kill the layer tree.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2912 // Verify no quads are drawn when transparent background is set. 2915 // Verify no quads are drawn when transparent background is set.
2913 myHostImpl->setHasTransparentBackground(true); 2916 myHostImpl->setHasTransparentBackground(true);
2914 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 2917 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
2915 myHostImpl->drawLayers(frame); 2918 myHostImpl->drawLayers(frame);
2916 myHostImpl->didDrawAllLayers(frame); 2919 myHostImpl->didDrawAllLayers(frame);
2917 Mock::VerifyAndClearExpectations(&mockContext); 2920 Mock::VerifyAndClearExpectations(&mockContext);
2918 } 2921 }
2919 2922
2920 static void addDrawingLayerTo(CCLayerImpl* parent, int id, const IntRect& layerR ect, CCLayerImpl** result) 2923 static void addDrawingLayerTo(CCLayerImpl* parent, int id, const IntRect& layerR ect, CCLayerImpl** result)
2921 { 2924 {
2922 OwnPtr<CCLayerImpl> layer = FakeLayerWithQuads::create(id); 2925 scoped_ptr<CCLayerImpl> layer = FakeLayerWithQuads::create(id);
2923 CCLayerImpl* layerPtr = layer.get(); 2926 CCLayerImpl* layerPtr = layer.get();
2924 layerPtr->setAnchorPoint(FloatPoint(0, 0)); 2927 layerPtr->setAnchorPoint(FloatPoint(0, 0));
2925 layerPtr->setPosition(FloatPoint(layerRect.location())); 2928 layerPtr->setPosition(FloatPoint(layerRect.location()));
2926 layerPtr->setBounds(layerRect.size()); 2929 layerPtr->setBounds(layerRect.size());
2927 layerPtr->setContentBounds(layerRect.size()); 2930 layerPtr->setContentBounds(layerRect.size());
2928 layerPtr->setDrawsContent(true); // only children draw content 2931 layerPtr->setDrawsContent(true); // only children draw content
2929 layerPtr->setContentsOpaque(true); 2932 layerPtr->setContentsOpaque(true);
2930 parent->addChild(layer.release()); 2933 parent->addChild(layer.Pass());
2931 if (result) 2934 if (result)
2932 *result = layerPtr; 2935 *result = layerPtr;
2933 } 2936 }
2934 2937
2935 static void setupLayersForTextureCaching(CCLayerTreeHostImpl* layerTreeHostImpl, CCLayerImpl*& rootPtr, CCLayerImpl*& intermediateLayerPtr, CCLayerImpl*& surfac eLayerPtr, CCLayerImpl*& childPtr, const IntSize& rootSize) 2938 static void setupLayersForTextureCaching(CCLayerTreeHostImpl* layerTreeHostImpl, CCLayerImpl*& rootPtr, CCLayerImpl*& intermediateLayerPtr, CCLayerImpl*& surfac eLayerPtr, CCLayerImpl*& childPtr, const IntSize& rootSize)
2936 { 2939 {
2937 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>(); 2940 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>();
2938 2941
2939 layerTreeHostImpl->initializeRenderer(context.Pass()); 2942 layerTreeHostImpl->initializeRenderer(context.Pass());
2940 layerTreeHostImpl->setViewportSize(rootSize, rootSize); 2943 layerTreeHostImpl->setViewportSize(rootSize, rootSize);
2941 2944
2942 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 2945 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
2943 rootPtr = root.get(); 2946 rootPtr = root.get();
2944 2947
2945 root->setAnchorPoint(FloatPoint(0, 0)); 2948 root->setAnchorPoint(FloatPoint(0, 0));
2946 root->setPosition(FloatPoint(0, 0)); 2949 root->setPosition(FloatPoint(0, 0));
2947 root->setBounds(rootSize); 2950 root->setBounds(rootSize);
2948 root->setContentBounds(rootSize); 2951 root->setContentBounds(rootSize);
2949 root->setDrawsContent(true); 2952 root->setDrawsContent(true);
2950 layerTreeHostImpl->setRootLayer(root.release()); 2953 layerTreeHostImpl->setRootLayer(root.Pass());
2951 2954
2952 addDrawingLayerTo(rootPtr, 2, IntRect(10, 10, rootSize.width(), rootSize.hei ght()), &intermediateLayerPtr); 2955 addDrawingLayerTo(rootPtr, 2, IntRect(10, 10, rootSize.width(), rootSize.hei ght()), &intermediateLayerPtr);
2953 intermediateLayerPtr->setDrawsContent(false); // only children draw content 2956 intermediateLayerPtr->setDrawsContent(false); // only children draw content
2954 2957
2955 // Surface layer is the layer that changes its opacity 2958 // Surface layer is the layer that changes its opacity
2956 // It will contain other layers that draw content. 2959 // It will contain other layers that draw content.
2957 addDrawingLayerTo(intermediateLayerPtr, 3, IntRect(10, 10, rootSize.width(), rootSize.height()), &surfaceLayerPtr); 2960 addDrawingLayerTo(intermediateLayerPtr, 3, IntRect(10, 10, rootSize.width(), rootSize.height()), &surfaceLayerPtr);
2958 surfaceLayerPtr->setDrawsContent(false); // only children draw content 2961 surfaceLayerPtr->setDrawsContent(false); // only children draw content
2959 surfaceLayerPtr->setOpacity(0.5f); // This will cause it to have a surface 2962 surfaceLayerPtr->setOpacity(0.5f); // This will cause it to have a surface
2960 2963
(...skipping 17 matching lines...) Expand all
2978 CCLayerImpl* rootPtr; 2981 CCLayerImpl* rootPtr;
2979 CCLayerImpl* surfaceLayerPtr; 2982 CCLayerImpl* surfaceLayerPtr;
2980 2983
2981 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>(); 2984 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>();
2982 2985
2983 IntSize rootSize(100, 100); 2986 IntSize rootSize(100, 100);
2984 2987
2985 myHostImpl->initializeRenderer(context.Pass()); 2988 myHostImpl->initializeRenderer(context.Pass());
2986 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height())); 2989 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height()));
2987 2990
2988 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 2991 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
2989 rootPtr = root.get(); 2992 rootPtr = root.get();
2990 2993
2991 root->setAnchorPoint(FloatPoint(0, 0)); 2994 root->setAnchorPoint(FloatPoint(0, 0));
2992 root->setPosition(FloatPoint(0, 0)); 2995 root->setPosition(FloatPoint(0, 0));
2993 root->setBounds(rootSize); 2996 root->setBounds(rootSize);
2994 root->setContentBounds(rootSize); 2997 root->setContentBounds(rootSize);
2995 root->setDrawsContent(true); 2998 root->setDrawsContent(true);
2996 root->setMasksToBounds(true); 2999 root->setMasksToBounds(true);
2997 myHostImpl->setRootLayer(root.release()); 3000 myHostImpl->setRootLayer(root.Pass());
2998 3001
2999 addDrawingLayerTo(rootPtr, 3, IntRect(0, 0, rootSize.width(), rootSize.heigh t()), &surfaceLayerPtr); 3002 addDrawingLayerTo(rootPtr, 3, IntRect(0, 0, rootSize.width(), rootSize.heigh t()), &surfaceLayerPtr);
3000 surfaceLayerPtr->setDrawsContent(false); 3003 surfaceLayerPtr->setDrawsContent(false);
3001 3004
3002 // Surface layer is the layer that changes its opacity 3005 // Surface layer is the layer that changes its opacity
3003 // It will contain other layers that draw content. 3006 // It will contain other layers that draw content.
3004 surfaceLayerPtr->setOpacity(0.5f); // This will cause it to have a surface 3007 surfaceLayerPtr->setOpacity(0.5f); // This will cause it to have a surface
3005 3008
3006 addDrawingLayerTo(surfaceLayerPtr, 4, IntRect(0, 0, 100, 3), 0); 3009 addDrawingLayerTo(surfaceLayerPtr, 4, IntRect(0, 0, 100, 3), 0);
3007 addDrawingLayerTo(surfaceLayerPtr, 5, IntRect(0, 97, 100, 3), 0); 3010 addDrawingLayerTo(surfaceLayerPtr, 5, IntRect(0, 97, 100, 3), 0);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
3090 CCLayerImpl* layerS1Ptr; 3093 CCLayerImpl* layerS1Ptr;
3091 CCLayerImpl* layerS2Ptr; 3094 CCLayerImpl* layerS2Ptr;
3092 3095
3093 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>(); 3096 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>();
3094 3097
3095 IntSize rootSize(1000, 1000); 3098 IntSize rootSize(1000, 1000);
3096 3099
3097 myHostImpl->initializeRenderer(context.Pass()); 3100 myHostImpl->initializeRenderer(context.Pass());
3098 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height())); 3101 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height()));
3099 3102
3100 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 3103 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
3101 rootPtr = root.get(); 3104 rootPtr = root.get();
3102 3105
3103 root->setAnchorPoint(FloatPoint(0, 0)); 3106 root->setAnchorPoint(FloatPoint(0, 0));
3104 root->setPosition(FloatPoint(0, 0)); 3107 root->setPosition(FloatPoint(0, 0));
3105 root->setBounds(rootSize); 3108 root->setBounds(rootSize);
3106 root->setContentBounds(rootSize); 3109 root->setContentBounds(rootSize);
3107 root->setDrawsContent(true); 3110 root->setDrawsContent(true);
3108 root->setMasksToBounds(true); 3111 root->setMasksToBounds(true);
3109 myHostImpl->setRootLayer(root.release()); 3112 myHostImpl->setRootLayer(root.Pass());
3110 3113
3111 addDrawingLayerTo(rootPtr, 2, IntRect(300, 300, 300, 300), &layerS1Ptr); 3114 addDrawingLayerTo(rootPtr, 2, IntRect(300, 300, 300, 300), &layerS1Ptr);
3112 layerS1Ptr->setForceRenderSurface(true); 3115 layerS1Ptr->setForceRenderSurface(true);
3113 3116
3114 addDrawingLayerTo(layerS1Ptr, 3, IntRect(10, 10, 10, 10), 0); // L11 3117 addDrawingLayerTo(layerS1Ptr, 3, IntRect(10, 10, 10, 10), 0); // L11
3115 addDrawingLayerTo(layerS1Ptr, 4, IntRect(0, 0, 30, 30), 0); // L12 3118 addDrawingLayerTo(layerS1Ptr, 4, IntRect(0, 0, 30, 30), 0); // L12
3116 3119
3117 addDrawingLayerTo(rootPtr, 5, IntRect(550, 250, 300, 400), &layerS2Ptr); 3120 addDrawingLayerTo(rootPtr, 5, IntRect(550, 250, 300, 400), &layerS2Ptr);
3118 layerS2Ptr->setForceRenderSurface(true); 3121 layerS2Ptr->setForceRenderSurface(true);
3119 3122
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
3203 CCLayerImpl* layerS1Ptr; 3206 CCLayerImpl* layerS1Ptr;
3204 CCLayerImpl* layerS2Ptr; 3207 CCLayerImpl* layerS2Ptr;
3205 3208
3206 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>(); 3209 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>();
3207 3210
3208 IntSize rootSize(1000, 1000); 3211 IntSize rootSize(1000, 1000);
3209 3212
3210 myHostImpl->initializeRenderer(context.Pass()); 3213 myHostImpl->initializeRenderer(context.Pass());
3211 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height())); 3214 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height()));
3212 3215
3213 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 3216 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
3214 rootPtr = root.get(); 3217 rootPtr = root.get();
3215 3218
3216 root->setAnchorPoint(FloatPoint(0, 0)); 3219 root->setAnchorPoint(FloatPoint(0, 0));
3217 root->setPosition(FloatPoint(0, 0)); 3220 root->setPosition(FloatPoint(0, 0));
3218 root->setBounds(rootSize); 3221 root->setBounds(rootSize);
3219 root->setContentBounds(rootSize); 3222 root->setContentBounds(rootSize);
3220 root->setDrawsContent(true); 3223 root->setDrawsContent(true);
3221 root->setMasksToBounds(true); 3224 root->setMasksToBounds(true);
3222 myHostImpl->setRootLayer(root.release()); 3225 myHostImpl->setRootLayer(root.Pass());
3223 3226
3224 addDrawingLayerTo(rootPtr, 2, IntRect(0, 0, 800, 800), &layerS1Ptr); 3227 addDrawingLayerTo(rootPtr, 2, IntRect(0, 0, 800, 800), &layerS1Ptr);
3225 layerS1Ptr->setForceRenderSurface(true); 3228 layerS1Ptr->setForceRenderSurface(true);
3226 layerS1Ptr->setDrawsContent(false); 3229 layerS1Ptr->setDrawsContent(false);
3227 3230
3228 addDrawingLayerTo(layerS1Ptr, 3, IntRect(0, 0, 300, 300), 0); // L11 3231 addDrawingLayerTo(layerS1Ptr, 3, IntRect(0, 0, 300, 300), 0); // L11
3229 addDrawingLayerTo(layerS1Ptr, 4, IntRect(0, 500, 300, 300), 0); // L12 3232 addDrawingLayerTo(layerS1Ptr, 4, IntRect(0, 500, 300, 300), 0); // L12
3230 addDrawingLayerTo(layerS1Ptr, 5, IntRect(500, 0, 300, 300), 0); // L13 3233 addDrawingLayerTo(layerS1Ptr, 5, IntRect(500, 0, 300, 300), 0); // L13
3231 addDrawingLayerTo(layerS1Ptr, 6, IntRect(500, 500, 300, 300), 0); // L14 3234 addDrawingLayerTo(layerS1Ptr, 6, IntRect(500, 500, 300, 300), 0); // L14
3232 addDrawingLayerTo(layerS1Ptr, 9, IntRect(500, 500, 300, 300), 0); // L14 3235 addDrawingLayerTo(layerS1Ptr, 9, IntRect(500, 500, 300, 300), 0); // L14
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
3317 CCLayerImpl* layerS1Ptr; 3320 CCLayerImpl* layerS1Ptr;
3318 CCLayerImpl* layerS2Ptr; 3321 CCLayerImpl* layerS2Ptr;
3319 3322
3320 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>(); 3323 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>();
3321 3324
3322 IntSize rootSize(1000, 1000); 3325 IntSize rootSize(1000, 1000);
3323 3326
3324 myHostImpl->initializeRenderer(context.Pass()); 3327 myHostImpl->initializeRenderer(context.Pass());
3325 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height())); 3328 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height()));
3326 3329
3327 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 3330 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
3328 rootPtr = root.get(); 3331 rootPtr = root.get();
3329 3332
3330 root->setAnchorPoint(FloatPoint(0, 0)); 3333 root->setAnchorPoint(FloatPoint(0, 0));
3331 root->setPosition(FloatPoint(0, 0)); 3334 root->setPosition(FloatPoint(0, 0));
3332 root->setBounds(rootSize); 3335 root->setBounds(rootSize);
3333 root->setContentBounds(rootSize); 3336 root->setContentBounds(rootSize);
3334 root->setDrawsContent(true); 3337 root->setDrawsContent(true);
3335 root->setMasksToBounds(true); 3338 root->setMasksToBounds(true);
3336 myHostImpl->setRootLayer(root.release()); 3339 myHostImpl->setRootLayer(root.Pass());
3337 3340
3338 addDrawingLayerTo(rootPtr, 2, IntRect(0, 0, 400, 400), &layerS1Ptr); 3341 addDrawingLayerTo(rootPtr, 2, IntRect(0, 0, 400, 400), &layerS1Ptr);
3339 layerS1Ptr->setForceRenderSurface(true); 3342 layerS1Ptr->setForceRenderSurface(true);
3340 3343
3341 addDrawingLayerTo(layerS1Ptr, 3, IntRect(0, 0, 300, 300), 0); // L11 3344 addDrawingLayerTo(layerS1Ptr, 3, IntRect(0, 0, 300, 300), 0); // L11
3342 addDrawingLayerTo(layerS1Ptr, 4, IntRect(100, 0, 300, 300), 0); // L12 3345 addDrawingLayerTo(layerS1Ptr, 4, IntRect(100, 0, 300, 300), 0); // L12
3343 3346
3344 addDrawingLayerTo(rootPtr, 7, IntRect(200, 0, 300, 300), &layerS2Ptr); 3347 addDrawingLayerTo(rootPtr, 7, IntRect(200, 0, 300, 300), &layerS2Ptr);
3345 layerS2Ptr->setForceRenderSurface(true); 3348 layerS2Ptr->setForceRenderSurface(true);
3346 3349
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
3400 CCLayerImpl* rootPtr; 3403 CCLayerImpl* rootPtr;
3401 CCLayerImpl* layerS1Ptr; 3404 CCLayerImpl* layerS1Ptr;
3402 3405
3403 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>(); 3406 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>();
3404 3407
3405 IntSize rootSize(1000, 1000); 3408 IntSize rootSize(1000, 1000);
3406 3409
3407 myHostImpl->initializeRenderer(context.Pass()); 3410 myHostImpl->initializeRenderer(context.Pass());
3408 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height())); 3411 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height()));
3409 3412
3410 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 3413 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
3411 rootPtr = root.get(); 3414 rootPtr = root.get();
3412 3415
3413 root->setAnchorPoint(FloatPoint(0, 0)); 3416 root->setAnchorPoint(FloatPoint(0, 0));
3414 root->setPosition(FloatPoint(0, 0)); 3417 root->setPosition(FloatPoint(0, 0));
3415 root->setBounds(rootSize); 3418 root->setBounds(rootSize);
3416 root->setContentBounds(rootSize); 3419 root->setContentBounds(rootSize);
3417 root->setDrawsContent(true); 3420 root->setDrawsContent(true);
3418 root->setMasksToBounds(true); 3421 root->setMasksToBounds(true);
3419 myHostImpl->setRootLayer(root.release()); 3422 myHostImpl->setRootLayer(root.Pass());
3420 3423
3421 addDrawingLayerTo(rootPtr, 2, IntRect(0, 0, 400, 400), &layerS1Ptr); 3424 addDrawingLayerTo(rootPtr, 2, IntRect(0, 0, 400, 400), &layerS1Ptr);
3422 layerS1Ptr->setForceRenderSurface(true); 3425 layerS1Ptr->setForceRenderSurface(true);
3423 WebTransformationMatrix transform = layerS1Ptr->transform(); 3426 WebTransformationMatrix transform = layerS1Ptr->transform();
3424 transform.translate(200, 200); 3427 transform.translate(200, 200);
3425 transform.rotate(45); 3428 transform.rotate(45);
3426 transform.translate(-200, -200); 3429 transform.translate(-200, -200);
3427 layerS1Ptr->setTransform(transform); 3430 layerS1Ptr->setTransform(transform);
3428 3431
3429 addDrawingLayerTo(layerS1Ptr, 3, IntRect(200, 0, 200, 400), 0); // L11 3432 addDrawingLayerTo(layerS1Ptr, 3, IntRect(200, 0, 200, 400), 0); // L11
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
3485 CCLayerImpl* layerS1Ptr; 3488 CCLayerImpl* layerS1Ptr;
3486 CCLayerImpl* layerS2Ptr; 3489 CCLayerImpl* layerS2Ptr;
3487 3490
3488 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>(); 3491 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>();
3489 3492
3490 IntSize rootSize(1000, 1000); 3493 IntSize rootSize(1000, 1000);
3491 3494
3492 myHostImpl->initializeRenderer(context.Pass()); 3495 myHostImpl->initializeRenderer(context.Pass());
3493 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height())); 3496 myHostImpl->setViewportSize(IntSize(rootSize.width(), rootSize.height()), In tSize(rootSize.width(), rootSize.height()));
3494 3497
3495 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 3498 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
3496 rootPtr = root.get(); 3499 rootPtr = root.get();
3497 3500
3498 root->setAnchorPoint(FloatPoint(0, 0)); 3501 root->setAnchorPoint(FloatPoint(0, 0));
3499 root->setPosition(FloatPoint(0, 0)); 3502 root->setPosition(FloatPoint(0, 0));
3500 root->setBounds(rootSize); 3503 root->setBounds(rootSize);
3501 root->setContentBounds(rootSize); 3504 root->setContentBounds(rootSize);
3502 root->setDrawsContent(true); 3505 root->setDrawsContent(true);
3503 root->setMasksToBounds(true); 3506 root->setMasksToBounds(true);
3504 myHostImpl->setRootLayer(root.release()); 3507 myHostImpl->setRootLayer(root.Pass());
3505 3508
3506 addDrawingLayerTo(rootPtr, 2, IntRect(300, 300, 300, 300), &layerS1Ptr); 3509 addDrawingLayerTo(rootPtr, 2, IntRect(300, 300, 300, 300), &layerS1Ptr);
3507 layerS1Ptr->setForceRenderSurface(true); 3510 layerS1Ptr->setForceRenderSurface(true);
3508 3511
3509 addDrawingLayerTo(layerS1Ptr, 3, IntRect(10, 10, 10, 10), 0); // L11 3512 addDrawingLayerTo(layerS1Ptr, 3, IntRect(10, 10, 10, 10), 0); // L11
3510 addDrawingLayerTo(layerS1Ptr, 4, IntRect(0, 0, 30, 30), 0); // L12 3513 addDrawingLayerTo(layerS1Ptr, 4, IntRect(0, 0, 30, 30), 0); // L12
3511 3514
3512 addDrawingLayerTo(rootPtr, 5, IntRect(550, 250, 300, 400), &layerS2Ptr); 3515 addDrawingLayerTo(rootPtr, 5, IntRect(550, 250, 300, 400), &layerS2Ptr);
3513 layerS2Ptr->setForceRenderSurface(true); 3516 layerS2Ptr->setForceRenderSurface(true);
3514 3517
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
3591 | | | 3 | 3594 | | | 3 |
3592 | | +-------------------+ 3595 | | +-------------------+
3593 | | | | 3596 | | | |
3594 | +-----------+ | 3597 | +-----------+ |
3595 | | 3598 | |
3596 | | 3599 | |
3597 +--------------------+ 3600 +--------------------+
3598 3601
3599 Layers 1, 2 have render surfaces 3602 Layers 1, 2 have render surfaces
3600 */ 3603 */
3601 OwnPtr<CCLayerImpl> root = CCLayerImpl::create(1); 3604 scoped_ptr<CCLayerImpl> root = CCLayerImpl::create(1);
3602 OwnPtr<CCTiledLayerImpl> child = CCTiledLayerImpl::create(2); 3605 scoped_ptr<CCTiledLayerImpl> child = CCTiledLayerImpl::create(2);
3603 OwnPtr<CCLayerImpl> grandChild = CCLayerImpl::create(3); 3606 scoped_ptr<CCLayerImpl> grandChild = CCLayerImpl::create(3);
3604 3607
3605 IntRect rootRect(0, 0, 100, 100); 3608 IntRect rootRect(0, 0, 100, 100);
3606 IntRect childRect(10, 10, 50, 50); 3609 IntRect childRect(10, 10, 50, 50);
3607 IntRect grandChildRect(5, 5, 150, 150); 3610 IntRect grandChildRect(5, 5, 150, 150);
3608 3611
3609 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>(); 3612 scoped_ptr<CCGraphicsContext> context = FakeWebCompositorOutputSurface::crea te(adoptPtr(new PartialSwapContext)).PassAs<CCGraphicsContext>();
3610 myHostImpl->initializeRenderer(context.Pass()); 3613 myHostImpl->initializeRenderer(context.Pass());
3611 3614
3612 root->setAnchorPoint(FloatPoint(0, 0)); 3615 root->setAnchorPoint(FloatPoint(0, 0));
3613 root->setPosition(FloatPoint(rootRect.x(), rootRect.y())); 3616 root->setPosition(FloatPoint(rootRect.x(), rootRect.y()));
(...skipping 17 matching lines...) Expand all
3631 3634
3632 grandChild->setAnchorPoint(FloatPoint(0, 0)); 3635 grandChild->setAnchorPoint(FloatPoint(0, 0));
3633 grandChild->setPosition(IntPoint(grandChildRect.x(), grandChildRect.y())); 3636 grandChild->setPosition(IntPoint(grandChildRect.x(), grandChildRect.y()));
3634 grandChild->setBounds(IntSize(grandChildRect.width(), grandChildRect.height( ))); 3637 grandChild->setBounds(IntSize(grandChildRect.width(), grandChildRect.height( )));
3635 grandChild->setContentBounds(grandChild->bounds()); 3638 grandChild->setContentBounds(grandChild->bounds());
3636 grandChild->setDrawsContent(true); 3639 grandChild->setDrawsContent(true);
3637 3640
3638 CCTiledLayerImpl* childPtr = child.get(); 3641 CCTiledLayerImpl* childPtr = child.get();
3639 CCRenderPass::Id childPassId(childPtr->id(), 0); 3642 CCRenderPass::Id childPassId(childPtr->id(), 0);
3640 3643
3641 child->addChild(grandChild.release()); 3644 child->addChild(grandChild.Pass());
3642 root->addChild(child.release()); 3645 root->addChild(child.PassAs<CCLayerImpl>());
3643 myHostImpl->setRootLayer(root.release()); 3646 myHostImpl->setRootLayer(root.Pass());
3644 myHostImpl->setViewportSize(rootRect.size(), rootRect.size()); 3647 myHostImpl->setViewportSize(rootRect.size(), rootRect.size());
3645 3648
3646 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(chil dPassId)); 3649 EXPECT_FALSE(myHostImpl->renderer()->haveCachedResourcesForRenderPassId(chil dPassId));
3647 3650
3648 { 3651 {
3649 CCLayerTreeHostImpl::FrameData frame; 3652 CCLayerTreeHostImpl::FrameData frame;
3650 EXPECT_TRUE(myHostImpl->prepareToDraw(frame)); 3653 EXPECT_TRUE(myHostImpl->prepareToDraw(frame));
3651 myHostImpl->drawLayers(frame); 3654 myHostImpl->drawLayers(frame);
3652 myHostImpl->didDrawAllLayers(frame); 3655 myHostImpl->didDrawAllLayers(frame);
3653 } 3656 }
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after
4334 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a); 4337 verifyRenderPassTestData(removeRenderPassesCases[testCaseIndex], testDat a);
4335 testCaseIndex++; 4338 testCaseIndex++;
4336 } 4339 }
4337 } 4340 }
4338 4341
4339 INSTANTIATE_TEST_CASE_P(CCLayerTreeHostImplTests, 4342 INSTANTIATE_TEST_CASE_P(CCLayerTreeHostImplTests,
4340 CCLayerTreeHostImplTest, 4343 CCLayerTreeHostImplTest,
4341 ::testing::Values(false, true)); 4344 ::testing::Values(false, true));
4342 4345
4343 } // namespace 4346 } // namespace
OLDNEW
« cc/CCLayerImpl.h ('K') | « cc/CCLayerTreeHostImpl.cpp ('k') | cc/CCLayerTreeHostTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698