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

Side by Side Diff: cc/CCOcclusionTrackerTest.cpp

Issue 11076013: [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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "CCOcclusionTracker.h" 7 #include "CCOcclusionTracker.h"
8 8
9 #include "CCAnimationTestCommon.h" 9 #include "CCAnimationTestCommon.h"
10 #include "CCGeometryTestUtils.h" 10 #include "CCGeometryTestUtils.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 private: 103 private:
104 bool m_overrideLayerClipRect; 104 bool m_overrideLayerClipRect;
105 IntRect m_layerClipRect; 105 IntRect m_layerClipRect;
106 }; 106 };
107 107
108 struct CCOcclusionTrackerTestMainThreadTypes { 108 struct CCOcclusionTrackerTestMainThreadTypes {
109 typedef LayerChromium LayerType; 109 typedef LayerChromium LayerType;
110 typedef RenderSurfaceChromium RenderSurfaceType; 110 typedef RenderSurfaceChromium RenderSurfaceType;
111 typedef TestContentLayerChromium ContentLayerType; 111 typedef TestContentLayerChromium ContentLayerType;
112 typedef scoped_refptr<LayerChromium> LayerPtrType; 112 typedef scoped_refptr<LayerChromium> LayerPtrType;
113 typedef scoped_refptr<LayerChromium> PassLayerPtrType;
114 typedef scoped_refptr<ContentLayerType> ContentLayerPtrType; 113 typedef scoped_refptr<ContentLayerType> ContentLayerPtrType;
115 typedef scoped_refptr<ContentLayerType> PassContentLayerPtrType;
116 typedef CCLayerIterator<LayerChromium, std::vector<scoped_refptr<LayerChromi um> >, RenderSurfaceChromium, CCLayerIteratorActions::FrontToBack> LayerIterator ; 114 typedef CCLayerIterator<LayerChromium, std::vector<scoped_refptr<LayerChromi um> >, RenderSurfaceChromium, CCLayerIteratorActions::FrontToBack> LayerIterator ;
117 typedef CCOcclusionTracker OcclusionTrackerType; 115 typedef CCOcclusionTracker OcclusionTrackerType;
118 116
119 static PassLayerPtrType createLayer() 117 static LayerPtrType createLayer()
120 { 118 {
121 return LayerChromium::create(); 119 return LayerChromium::create();
122 } 120 }
123 static PassContentLayerPtrType createContentLayer() { return make_scoped_ref ptr(new ContentLayerType()); } 121 static ContentLayerPtrType createContentLayer() { return make_scoped_refptr( new ContentLayerType()); }
122
123 static LayerPtrType passLayerPtr(ContentLayerPtrType& layer)
124 {
125 return layer.release();
126 }
127
128 static LayerPtrType passLayerPtr(LayerPtrType& layer)
129 {
130 return layer.release();
131 }
124 132
125 static void destroyLayer(LayerPtrType& layer) 133 static void destroyLayer(LayerPtrType& layer)
126 { 134 {
127 layer = NULL; 135 layer = NULL;
128 } 136 }
129 }; 137 };
130 138
131 struct CCOcclusionTrackerTestImplThreadTypes { 139 struct CCOcclusionTrackerTestImplThreadTypes {
132 typedef CCLayerImpl LayerType; 140 typedef CCLayerImpl LayerType;
133 typedef CCRenderSurface RenderSurfaceType; 141 typedef CCRenderSurface RenderSurfaceType;
134 typedef TestContentLayerImpl ContentLayerType; 142 typedef TestContentLayerImpl ContentLayerType;
135 typedef OwnPtr<CCLayerImpl> LayerPtrType; 143 typedef scoped_ptr<CCLayerImpl> LayerPtrType;
136 typedef PassOwnPtr<CCLayerImpl> PassLayerPtrType; 144 typedef scoped_ptr<ContentLayerType> ContentLayerPtrType;
137 typedef OwnPtr<ContentLayerType> ContentLayerPtrType;
138 typedef PassOwnPtr<ContentLayerType> PassContentLayerPtrType;
139 typedef CCLayerIterator<CCLayerImpl, std::vector<CCLayerImpl*>, CCRenderSurf ace, CCLayerIteratorActions::FrontToBack> LayerIterator; 145 typedef CCLayerIterator<CCLayerImpl, std::vector<CCLayerImpl*>, CCRenderSurf ace, CCLayerIteratorActions::FrontToBack> LayerIterator;
140 typedef CCOcclusionTrackerImpl OcclusionTrackerType; 146 typedef CCOcclusionTrackerImpl OcclusionTrackerType;
141 147
142 static PassLayerPtrType createLayer() { return CCLayerImpl::create(nextCCLay erImplId++); } 148 static LayerPtrType createLayer() { return CCLayerImpl::create(nextCCLayerIm plId++); }
143 static PassContentLayerPtrType createContentLayer() { return adoptPtr(new Co ntentLayerType(nextCCLayerImplId++)); } 149 static ContentLayerPtrType createContentLayer() { return make_scoped_ptr(new ContentLayerType(nextCCLayerImplId++)); }
144 static int nextCCLayerImplId; 150 static int nextCCLayerImplId;
145 151
152 static LayerPtrType passLayerPtr(LayerPtrType& layer)
153 {
154 return layer.Pass();
155 }
156
157 static LayerPtrType passLayerPtr(ContentLayerPtrType& layer)
158 {
159 return layer.PassAs<LayerType>();
160 }
161
146 static void destroyLayer(LayerPtrType& layer) 162 static void destroyLayer(LayerPtrType& layer)
147 { 163 {
148 layer.clear(); 164 layer.reset();
149 } 165 }
150 }; 166 };
151 167
152 int CCOcclusionTrackerTestImplThreadTypes::nextCCLayerImplId = 1; 168 int CCOcclusionTrackerTestImplThreadTypes::nextCCLayerImplId = 1;
153 169
154 template<typename Types, bool opaqueLayers> 170 template<typename Types, bool opaqueLayers>
155 class CCOcclusionTrackerTest : public testing::Test { 171 class CCOcclusionTrackerTest : public testing::Test {
156 protected: 172 protected:
157 CCOcclusionTrackerTest() 173 CCOcclusionTrackerTest()
158 : testing::Test() 174 : testing::Test()
(...skipping 11 matching lines...) Expand all
170 CCLayerTreeHost::setNeedsFilterContext(false); 186 CCLayerTreeHost::setNeedsFilterContext(false);
171 } 187 }
172 188
173 typename Types::ContentLayerType* createRoot(const WebTransformationMatrix& transform, const FloatPoint& position, const IntSize& bounds) 189 typename Types::ContentLayerType* createRoot(const WebTransformationMatrix& transform, const FloatPoint& position, const IntSize& bounds)
174 { 190 {
175 typename Types::ContentLayerPtrType layer(Types::createContentLayer()); 191 typename Types::ContentLayerPtrType layer(Types::createContentLayer());
176 typename Types::ContentLayerType* layerPtr = layer.get(); 192 typename Types::ContentLayerType* layerPtr = layer.get();
177 setProperties(layerPtr, transform, position, bounds); 193 setProperties(layerPtr, transform, position, bounds);
178 194
179 ASSERT(!m_root); 195 ASSERT(!m_root);
180 m_root = layer.release(); 196 m_root = Types::passLayerPtr(layer);
181 return layerPtr; 197 return layerPtr;
182 } 198 }
183 199
184 typename Types::LayerType* createLayer(typename Types::LayerType* parent, co nst WebTransformationMatrix& transform, const FloatPoint& position, const IntSiz e& bounds) 200 typename Types::LayerType* createLayer(typename Types::LayerType* parent, co nst WebTransformationMatrix& transform, const FloatPoint& position, const IntSiz e& bounds)
185 { 201 {
186 typename Types::LayerPtrType layer(Types::createLayer()); 202 typename Types::LayerPtrType layer(Types::createLayer());
187 typename Types::LayerType* layerPtr = layer.get(); 203 typename Types::LayerType* layerPtr = layer.get();
188 setProperties(layerPtr, transform, position, bounds); 204 setProperties(layerPtr, transform, position, bounds);
189 parent->addChild(layer.release()); 205 parent->addChild(Types::passLayerPtr(layer));
190 return layerPtr; 206 return layerPtr;
191 } 207 }
192 208
193 typename Types::LayerType* createSurface(typename Types::LayerType* parent, const WebTransformationMatrix& transform, const FloatPoint& position, const IntS ize& bounds) 209 typename Types::LayerType* createSurface(typename Types::LayerType* parent, const WebTransformationMatrix& transform, const FloatPoint& position, const IntS ize& bounds)
194 { 210 {
195 typename Types::LayerType* layer = createLayer(parent, transform, positi on, bounds); 211 typename Types::LayerType* layer = createLayer(parent, transform, positi on, bounds);
196 WebFilterOperations filters; 212 WebFilterOperations filters;
197 filters.append(WebFilterOperation::createGrayscaleFilter(0.5)); 213 filters.append(WebFilterOperation::createGrayscaleFilter(0.5));
198 layer->setFilters(filters); 214 layer->setFilters(filters);
199 return layer; 215 return layer;
200 } 216 }
201 217
202 typename Types::ContentLayerType* createDrawingLayer(typename Types::LayerTy pe* parent, const WebTransformationMatrix& transform, const FloatPoint& position , const IntSize& bounds, bool opaque) 218 typename Types::ContentLayerType* createDrawingLayer(typename Types::LayerTy pe* parent, const WebTransformationMatrix& transform, const FloatPoint& position , const IntSize& bounds, bool opaque)
203 { 219 {
204 typename Types::ContentLayerPtrType layer(Types::createContentLayer()); 220 typename Types::ContentLayerPtrType layer(Types::createContentLayer());
205 typename Types::ContentLayerType* layerPtr = layer.get(); 221 typename Types::ContentLayerType* layerPtr = layer.get();
206 setProperties(layerPtr, transform, position, bounds); 222 setProperties(layerPtr, transform, position, bounds);
207 223
208 if (opaqueLayers) 224 if (opaqueLayers)
209 layerPtr->setContentsOpaque(opaque); 225 layerPtr->setContentsOpaque(opaque);
210 else { 226 else {
211 layerPtr->setContentsOpaque(false); 227 layerPtr->setContentsOpaque(false);
212 if (opaque) 228 if (opaque)
213 layerPtr->setOpaqueContentsRect(IntRect(IntPoint(), bounds)); 229 layerPtr->setOpaqueContentsRect(IntRect(IntPoint(), bounds));
214 else 230 else
215 layerPtr->setOpaqueContentsRect(IntRect()); 231 layerPtr->setOpaqueContentsRect(IntRect());
216 } 232 }
217 233
218 parent->addChild(layer.release()); 234 parent->addChild(Types::passLayerPtr(layer));
219 return layerPtr; 235 return layerPtr;
220 } 236 }
221 237
222 typename Types::LayerType* createReplicaLayer(typename Types::LayerType* own ingLayer, const WebTransformationMatrix& transform, const FloatPoint& position, const IntSize& bounds) 238 typename Types::LayerType* createReplicaLayer(typename Types::LayerType* own ingLayer, const WebTransformationMatrix& transform, const FloatPoint& position, const IntSize& bounds)
223 { 239 {
224 typename Types::ContentLayerPtrType layer(Types::createContentLayer()); 240 typename Types::ContentLayerPtrType layer(Types::createContentLayer());
225 typename Types::ContentLayerType* layerPtr = layer.get(); 241 typename Types::ContentLayerType* layerPtr = layer.get();
226 setProperties(layerPtr, transform, position, bounds); 242 setProperties(layerPtr, transform, position, bounds);
227 setReplica(owningLayer, layer.release()); 243 setReplica(owningLayer, Types::passLayerPtr(layer));
228 return layerPtr; 244 return layerPtr;
229 } 245 }
230 246
231 typename Types::LayerType* createMaskLayer(typename Types::LayerType* owning Layer, const IntSize& bounds) 247 typename Types::LayerType* createMaskLayer(typename Types::LayerType* owning Layer, const IntSize& bounds)
232 { 248 {
233 typename Types::ContentLayerPtrType layer(Types::createContentLayer()); 249 typename Types::ContentLayerPtrType layer(Types::createContentLayer());
234 typename Types::ContentLayerType* layerPtr = layer.get(); 250 typename Types::ContentLayerType* layerPtr = layer.get();
235 setProperties(layerPtr, identityMatrix, FloatPoint(), bounds); 251 setProperties(layerPtr, identityMatrix, FloatPoint(), bounds);
236 setMask(owningLayer, layer.release()); 252 setMask(owningLayer, Types::passLayerPtr(layer));
237 return layerPtr; 253 return layerPtr;
238 } 254 }
239 255
240 typename Types::ContentLayerType* createDrawingSurface(typename Types::Layer Type* parent, const WebTransformationMatrix& transform, const FloatPoint& positi on, const IntSize& bounds, bool opaque) 256 typename Types::ContentLayerType* createDrawingSurface(typename Types::Layer Type* parent, const WebTransformationMatrix& transform, const FloatPoint& positi on, const IntSize& bounds, bool opaque)
241 { 257 {
242 typename Types::ContentLayerType* layer = createDrawingLayer(parent, tra nsform, position, bounds, opaque); 258 typename Types::ContentLayerType* layer = createDrawingLayer(parent, tra nsform, position, bounds, opaque);
243 WebFilterOperations filters; 259 WebFilterOperations filters;
244 filters.append(WebFilterOperation::createGrayscaleFilter(0.5)); 260 filters.append(WebFilterOperation::createGrayscaleFilter(0.5));
245 layer->setFilters(filters); 261 layer->setFilters(filters);
246 return layer; 262 return layer;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 363
348 layer->setContentBounds(layer->bounds()); 364 layer->setContentBounds(layer->bounds());
349 } 365 }
350 366
351 void setReplica(LayerChromium* owningLayer, scoped_refptr<LayerChromium> lay er) 367 void setReplica(LayerChromium* owningLayer, scoped_refptr<LayerChromium> lay er)
352 { 368 {
353 owningLayer->setReplicaLayer(layer.get()); 369 owningLayer->setReplicaLayer(layer.get());
354 m_replicaLayers.push_back(layer); 370 m_replicaLayers.push_back(layer);
355 } 371 }
356 372
357 void setReplica(CCLayerImpl* owningLayer, PassOwnPtr<CCLayerImpl> layer) 373 void setReplica(CCLayerImpl* owningLayer, scoped_ptr<CCLayerImpl> layer)
358 { 374 {
359 owningLayer->setReplicaLayer(layer); 375 owningLayer->setReplicaLayer(layer.Pass());
360 } 376 }
361 377
362 void setMask(LayerChromium* owningLayer, scoped_refptr<LayerChromium> layer) 378 void setMask(LayerChromium* owningLayer, scoped_refptr<LayerChromium> layer)
363 { 379 {
364 owningLayer->setMaskLayer(layer.get()); 380 owningLayer->setMaskLayer(layer.get());
365 m_maskLayers.push_back(layer); 381 m_maskLayers.push_back(layer);
366 } 382 }
367 383
368 void setMask(CCLayerImpl* owningLayer, PassOwnPtr<CCLayerImpl> layer) 384 void setMask(CCLayerImpl* owningLayer, scoped_ptr<CCLayerImpl> layer)
369 { 385 {
370 owningLayer->setMaskLayer(layer); 386 owningLayer->setMaskLayer(layer.Pass());
371 } 387 }
372 388
373 // These hold ownership of the layers for the duration of the test. 389 // These hold ownership of the layers for the duration of the test.
374 typename Types::LayerPtrType m_root; 390 typename Types::LayerPtrType m_root;
375 std::vector<scoped_refptr<LayerChromium> > m_renderSurfaceLayerListChromium; 391 std::vector<scoped_refptr<LayerChromium> > m_renderSurfaceLayerListChromium;
376 std::vector<CCLayerImpl*> m_renderSurfaceLayerListImpl; 392 std::vector<CCLayerImpl*> m_renderSurfaceLayerListImpl;
377 typename Types::LayerIterator m_layerIteratorBegin; 393 typename Types::LayerIterator m_layerIteratorBegin;
378 typename Types::LayerIterator m_layerIterator; 394 typename Types::LayerIterator m_layerIterator;
379 typename Types::LayerType* m_lastLayerVisited; 395 typename Types::LayerType* m_lastLayerVisited;
380 std::vector<scoped_refptr<LayerChromium> > m_replicaLayers; 396 std::vector<scoped_refptr<LayerChromium> > m_replicaLayers;
(...skipping 2639 matching lines...) Expand 10 before | Expand all | Expand 10 after
3020 EXPECT_RECT_EQ(IntRect(IntPoint(), trackingSize), occlusion.occlusionInS creenSpace().bounds()); 3036 EXPECT_RECT_EQ(IntRect(IntPoint(), trackingSize), occlusion.occlusionInS creenSpace().bounds());
3021 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size()); 3037 EXPECT_EQ(1u, occlusion.occlusionInScreenSpace().rects().size());
3022 EXPECT_RECT_EQ(IntRect(IntPoint(), trackingSize), occlusion.occlusionInT argetSurface().bounds()); 3038 EXPECT_RECT_EQ(IntRect(IntPoint(), trackingSize), occlusion.occlusionInT argetSurface().bounds());
3023 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size()); 3039 EXPECT_EQ(1u, occlusion.occlusionInTargetSurface().rects().size());
3024 } 3040 }
3025 }; 3041 };
3026 3042
3027 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestMinimumTrackingSize); 3043 ALL_CCOCCLUSIONTRACKER_TEST(CCOcclusionTrackerTestMinimumTrackingSize);
3028 3044
3029 } // namespace 3045 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698