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