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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "cc/animation/animation_host.h" | 9 #include "cc/animation/animation_host.h" |
10 #include "cc/base/filter_operation.h" | 10 #include "cc/base/filter_operation.h" |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 const gfx::Size& bounds, | 181 const gfx::Size& bounds, |
182 bool opaque) { | 182 bool opaque) { |
183 TestContentLayerImpl* layer = | 183 TestContentLayerImpl* layer = |
184 CreateDrawingLayer(parent, transform, position, bounds, opaque); | 184 CreateDrawingLayer(parent, transform, position, bounds, opaque); |
185 layer->test_properties()->force_render_surface = true; | 185 layer->test_properties()->force_render_surface = true; |
186 return layer; | 186 return layer; |
187 } | 187 } |
188 | 188 |
189 void DestroyLayers() { | 189 void DestroyLayers() { |
190 host_->host_impl()->active_tree()->SetRootLayerForTesting(nullptr); | 190 host_->host_impl()->active_tree()->SetRootLayerForTesting(nullptr); |
191 render_surface_layer_list_impl_.clear(); | 191 render_surface_list_impl_.clear(); |
192 mask_layers_.clear(); | 192 mask_layers_.clear(); |
193 layer_iterator_.reset(); | 193 layer_iterator_.reset(); |
194 } | 194 } |
195 | 195 |
196 void CopyOutputCallback(std::unique_ptr<CopyOutputResult> result) {} | 196 void CopyOutputCallback(std::unique_ptr<CopyOutputResult> result) {} |
197 | 197 |
198 void AddCopyRequest(Layer* layer) { | 198 void AddCopyRequest(Layer* layer) { |
199 layer->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( | 199 layer->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( |
200 base::Bind(&OcclusionTrackerTest::CopyOutputCallback, | 200 base::Bind(&OcclusionTrackerTest::CopyOutputCallback, |
201 base::Unretained(this)))); | 201 base::Unretained(this)))); |
202 } | 202 } |
203 | 203 |
204 void AddCopyRequest(LayerImpl* layer) { | 204 void AddCopyRequest(LayerImpl* layer) { |
205 layer->test_properties()->copy_requests.push_back( | 205 layer->test_properties()->copy_requests.push_back( |
206 CopyOutputRequest::CreateBitmapRequest( | 206 CopyOutputRequest::CreateBitmapRequest( |
207 base::Bind(&OcclusionTrackerTest::CopyOutputCallback, | 207 base::Bind(&OcclusionTrackerTest::CopyOutputCallback, |
208 base::Unretained(this)))); | 208 base::Unretained(this)))); |
209 } | 209 } |
210 | 210 |
211 void CalcDrawEtc(TestContentLayerImpl* root) { | 211 void CalcDrawEtc(TestContentLayerImpl* root) { |
212 root->layer_tree_impl()->BuildLayerListForTesting(); | 212 root->layer_tree_impl()->BuildLayerListForTesting(); |
213 DCHECK(root == root->layer_tree_impl()->root_layer_for_testing()); | 213 DCHECK(root == root->layer_tree_impl()->root_layer_for_testing()); |
214 | 214 |
215 // These occlusion tests attach and detach layers in multiple | 215 // These occlusion tests attach and detach layers in multiple |
216 // iterations, so rebuild property trees every time. | 216 // iterations, so rebuild property trees every time. |
217 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 217 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
218 | 218 |
219 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( | 219 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( |
220 root, root->bounds(), &render_surface_layer_list_impl_); | 220 root, root->bounds(), &render_surface_list_impl_); |
221 inputs.can_adjust_raster_scales = true; | 221 inputs.can_adjust_raster_scales = true; |
222 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); | 222 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); |
223 | 223 |
224 layer_iterator_ = base::MakeUnique<EffectTreeLayerListIterator>( | 224 layer_iterator_ = base::MakeUnique<EffectTreeLayerListIterator>( |
225 host_->host_impl()->active_tree()); | 225 host_->host_impl()->active_tree()); |
226 } | 226 } |
227 | 227 |
228 void EnterLayer(LayerImpl* layer, OcclusionTracker* occlusion) { | 228 void EnterLayer(LayerImpl* layer, OcclusionTracker* occlusion) { |
229 ASSERT_EQ(layer_iterator_->current_layer(), layer); | 229 ASSERT_EQ(layer_iterator_->current_layer(), layer); |
230 ASSERT_TRUE(layer_iterator_->state() == | 230 ASSERT_TRUE(layer_iterator_->state() == |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 void SetMask(LayerImpl* owning_layer, std::unique_ptr<LayerImpl> layer) { | 298 void SetMask(LayerImpl* owning_layer, std::unique_ptr<LayerImpl> layer) { |
299 owning_layer->test_properties()->SetMaskLayer(std::move(layer)); | 299 owning_layer->test_properties()->SetMaskLayer(std::move(layer)); |
300 } | 300 } |
301 | 301 |
302 bool opaque_layers_; | 302 bool opaque_layers_; |
303 FakeLayerTreeHostClient client_; | 303 FakeLayerTreeHostClient client_; |
304 TestTaskGraphRunner task_graph_runner_; | 304 TestTaskGraphRunner task_graph_runner_; |
305 std::unique_ptr<AnimationHost> animation_host_; | 305 std::unique_ptr<AnimationHost> animation_host_; |
306 std::unique_ptr<FakeLayerTreeHost> host_; | 306 std::unique_ptr<FakeLayerTreeHost> host_; |
307 // These hold ownership of the layers for the duration of the test. | 307 // These hold ownership of the layers for the duration of the test. |
308 LayerImplList render_surface_layer_list_impl_; | 308 RenderSurfaceList render_surface_list_impl_; |
309 std::unique_ptr<EffectTreeLayerListIterator> layer_iterator_; | 309 std::unique_ptr<EffectTreeLayerListIterator> layer_iterator_; |
310 LayerList mask_layers_; | 310 LayerList mask_layers_; |
311 int next_layer_impl_id_; | 311 int next_layer_impl_id_; |
312 }; | 312 }; |
313 | 313 |
314 #define RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName) \ | 314 #define RUN_TEST_IMPL_THREAD_OPAQUE_LAYERS(ClassName) \ |
315 class ClassName##ImplThreadOpaqueLayers : public ClassName { \ | 315 class ClassName##ImplThreadOpaqueLayers : public ClassName { \ |
316 public: /* NOLINT(whitespace/indent) */ \ | 316 public: /* NOLINT(whitespace/indent) */ \ |
317 ClassName##ImplThreadOpaqueLayers() : ClassName(true) {} \ | 317 ClassName##ImplThreadOpaqueLayers() : ClassName(true) {} \ |
318 }; \ | 318 }; \ |
(...skipping 2113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2432 EXPECT_EQ(gfx::Rect(), | 2432 EXPECT_EQ(gfx::Rect(), |
2433 occlusion.UnoccludedSurfaceContentRect( | 2433 occlusion.UnoccludedSurfaceContentRect( |
2434 surface, gfx::Rect(80, 70, 50, 50))); | 2434 surface, gfx::Rect(80, 70, 50, 50))); |
2435 } | 2435 } |
2436 }; | 2436 }; |
2437 | 2437 |
2438 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestUnoccludedSurfaceQuery) | 2438 ALL_OCCLUSIONTRACKER_TEST(OcclusionTrackerTestUnoccludedSurfaceQuery) |
2439 | 2439 |
2440 } // namespace | 2440 } // namespace |
2441 } // namespace cc | 2441 } // namespace cc |
OLD | NEW |