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