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; | |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |