| 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 "cc/trees/occlusion_tracker.h" | 5 #include "cc/trees/occlusion_tracker.h" |
| 6 | 6 |
| 7 #include "cc/animation/layer_animation_controller.h" | 7 #include "cc/animation/layer_animation_controller.h" |
| 8 #include "cc/base/math_util.h" | 8 #include "cc/base/math_util.h" |
| 9 #include "cc/layers/layer.h" | 9 #include "cc/layers/layer.h" |
| 10 #include "cc/layers/layer_impl.h" | 10 #include "cc/layers/layer_impl.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 typedef scoped_refptr<Layer> LayerPtrType; | 114 typedef scoped_refptr<Layer> LayerPtrType; |
| 115 typedef scoped_refptr<ContentLayerType> ContentLayerPtrType; | 115 typedef scoped_refptr<ContentLayerType> ContentLayerPtrType; |
| 116 typedef LayerIterator<Layer> TestLayerIterator; | 116 typedef LayerIterator<Layer> TestLayerIterator; |
| 117 typedef OcclusionTracker<Layer> OcclusionTrackerType; | 117 typedef OcclusionTracker<Layer> OcclusionTrackerType; |
| 118 | 118 |
| 119 static LayerPtrType CreateLayer(HostType* host) { return Layer::Create(); } | 119 static LayerPtrType CreateLayer(HostType* host) { return Layer::Create(); } |
| 120 static ContentLayerPtrType CreateContentLayer(HostType* host) { | 120 static ContentLayerPtrType CreateContentLayer(HostType* host) { |
| 121 return make_scoped_refptr(new ContentLayerType()); | 121 return make_scoped_refptr(new ContentLayerType()); |
| 122 } | 122 } |
| 123 | 123 |
| 124 static LayerPtrType PassLayerPtr(ContentLayerPtrType* layer) { | 124 template <typename T> |
| 125 static LayerPtrType PassLayerPtr(T* layer) { |
| 125 LayerPtrType ref(*layer); | 126 LayerPtrType ref(*layer); |
| 126 *layer = NULL; | 127 *layer = NULL; |
| 127 return ref; | 128 return ref; |
| 128 } | |
| 129 | |
| 130 static LayerPtrType PassLayerPtr(LayerPtrType* layer) { | |
| 131 LayerPtrType ref(*layer); | |
| 132 *layer = NULL; | |
| 133 return ref; | |
| 134 } | 129 } |
| 135 | 130 |
| 136 static void DestroyLayer(LayerPtrType* layer) { *layer = NULL; } | 131 static void DestroyLayer(LayerPtrType* layer) { *layer = NULL; } |
| 137 | 132 |
| 138 static void RecursiveUpdateNumChildren(LayerType* layerType) {} | 133 static void RecursiveUpdateNumChildren(LayerType* layerType) {} |
| 139 }; | 134 }; |
| 140 | 135 |
| 141 struct OcclusionTrackerTestImplThreadTypes { | 136 struct OcclusionTrackerTestImplThreadTypes { |
| 142 typedef LayerImpl LayerType; | 137 typedef LayerImpl LayerType; |
| 143 typedef LayerTreeImpl HostType; | 138 typedef LayerTreeImpl HostType; |
| 144 typedef RenderSurfaceImpl RenderSurfaceType; | 139 typedef RenderSurfaceImpl RenderSurfaceType; |
| 145 typedef TestContentLayerImpl ContentLayerType; | 140 typedef TestContentLayerImpl ContentLayerType; |
| 146 typedef scoped_ptr<LayerImpl> LayerPtrType; | 141 typedef scoped_ptr<LayerImpl> LayerPtrType; |
| 147 typedef scoped_ptr<ContentLayerType> ContentLayerPtrType; | 142 typedef scoped_ptr<ContentLayerType> ContentLayerPtrType; |
| 148 typedef LayerIterator<LayerImpl> TestLayerIterator; | 143 typedef LayerIterator<LayerImpl> TestLayerIterator; |
| 149 typedef OcclusionTracker<LayerImpl> OcclusionTrackerType; | 144 typedef OcclusionTracker<LayerImpl> OcclusionTrackerType; |
| 150 | 145 |
| 151 static LayerPtrType CreateLayer(HostType* host) { | 146 static LayerPtrType CreateLayer(HostType* host) { |
| 152 return LayerImpl::Create(host, next_layer_impl_id++); | 147 return LayerImpl::Create(host, next_layer_impl_id++); |
| 153 } | 148 } |
| 154 static ContentLayerPtrType CreateContentLayer(HostType* host) { | 149 static ContentLayerPtrType CreateContentLayer(HostType* host) { |
| 155 return make_scoped_ptr(new ContentLayerType(host, next_layer_impl_id++)); | 150 return make_scoped_ptr(new ContentLayerType(host, next_layer_impl_id++)); |
| 156 } | 151 } |
| 157 static int next_layer_impl_id; | 152 static int next_layer_impl_id; |
| 158 | 153 |
| 159 static LayerPtrType PassLayerPtr(LayerPtrType* layer) { | 154 template <typename T> |
| 155 static LayerPtrType PassLayerPtr(T* layer) { |
| 160 return layer->Pass(); | 156 return layer->Pass(); |
| 161 } | 157 } |
| 162 | 158 |
| 163 static LayerPtrType PassLayerPtr(ContentLayerPtrType* layer) { | |
| 164 return layer->PassAs<LayerType>(); | |
| 165 } | |
| 166 | |
| 167 static void DestroyLayer(LayerPtrType* layer) { layer->reset(); } | 159 static void DestroyLayer(LayerPtrType* layer) { layer->reset(); } |
| 168 | 160 |
| 169 static void RecursiveUpdateNumChildren(LayerType* layer) { | 161 static void RecursiveUpdateNumChildren(LayerType* layer) { |
| 170 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(layer); | 162 FakeLayerTreeHostImpl::RecursiveUpdateNumChildren(layer); |
| 171 } | 163 } |
| 172 }; | 164 }; |
| 173 | 165 |
| 174 int OcclusionTrackerTestImplThreadTypes::next_layer_impl_id = 1; | 166 int OcclusionTrackerTestImplThreadTypes::next_layer_impl_id = 1; |
| 175 | 167 |
| 176 template <typename Types> class OcclusionTrackerTest : public testing::Test { | 168 template <typename Types> class OcclusionTrackerTest : public testing::Test { |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 const gfx::Size& bounds, | 271 const gfx::Size& bounds, |
| 280 bool opaque) { | 272 bool opaque) { |
| 281 typename Types::ContentLayerType* layer = | 273 typename Types::ContentLayerType* layer = |
| 282 CreateDrawingLayer(parent, transform, position, bounds, opaque); | 274 CreateDrawingLayer(parent, transform, position, bounds, opaque); |
| 283 layer->SetForceRenderSurface(true); | 275 layer->SetForceRenderSurface(true); |
| 284 return layer; | 276 return layer; |
| 285 } | 277 } |
| 286 | 278 |
| 287 void DestroyLayers() { | 279 void DestroyLayers() { |
| 288 Types::DestroyLayer(&root_); | 280 Types::DestroyLayer(&root_); |
| 289 render_surface_layer_list_.reset(); | 281 render_surface_layer_list_ = nullptr; |
| 290 render_surface_layer_list_impl_.clear(); | 282 render_surface_layer_list_impl_.clear(); |
| 291 replica_layers_.clear(); | 283 replica_layers_.clear(); |
| 292 mask_layers_.clear(); | 284 mask_layers_.clear(); |
| 293 ResetLayerIterator(); | 285 ResetLayerIterator(); |
| 294 } | 286 } |
| 295 | 287 |
| 296 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) {} | 288 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) {} |
| 297 | 289 |
| 298 void AddCopyRequest(Layer* layer) { | 290 void AddCopyRequest(Layer* layer) { |
| 299 layer->RequestCopyOfOutput( | 291 layer->RequestCopyOfOutput( |
| (...skipping 3009 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3309 EXPECT_EQ(gfx::Rect(), | 3301 EXPECT_EQ(gfx::Rect(), |
| 3310 occlusion.UnoccludedSurfaceContentRect( | 3302 occlusion.UnoccludedSurfaceContentRect( |
| 3311 surface, gfx::Rect(80, 70, 50, 50))); | 3303 surface, gfx::Rect(80, 70, 50, 50))); |
| 3312 } | 3304 } |
| 3313 }; | 3305 }; |
| 3314 | 3306 |
| 3315 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestUnoccludedSurfaceQuery) | 3307 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestUnoccludedSurfaceQuery) |
| 3316 | 3308 |
| 3317 } // namespace | 3309 } // namespace |
| 3318 } // namespace cc | 3310 } // namespace cc |
| OLD | NEW |