| 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 |