| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/test/layer_tree_test.h" | 5 #include "cc/test/layer_tree_test.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "cc/animation/animation.h" | 8 #include "cc/animation/animation.h" |
| 9 #include "cc/animation/animation_registrar.h" | 9 #include "cc/animation/animation_registrar.h" |
| 10 #include "cc/animation/layer_animation_controller.h" | 10 #include "cc/animation/layer_animation_controller.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 | 53 |
| 54 void TestHooks::CreateResourceAndTileTaskWorkerPool( | 54 void TestHooks::CreateResourceAndTileTaskWorkerPool( |
| 55 LayerTreeHostImpl* host_impl, | 55 LayerTreeHostImpl* host_impl, |
| 56 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool, | 56 scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool, |
| 57 scoped_ptr<ResourcePool>* resource_pool, | 57 scoped_ptr<ResourcePool>* resource_pool, |
| 58 scoped_ptr<ResourcePool>* staging_resource_pool) { | 58 scoped_ptr<ResourcePool>* staging_resource_pool) { |
| 59 host_impl->LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool( | 59 host_impl->LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool( |
| 60 tile_task_worker_pool, resource_pool, staging_resource_pool); | 60 tile_task_worker_pool, resource_pool, staging_resource_pool); |
| 61 } | 61 } |
| 62 | 62 |
| 63 class TestProxyBeginFrameSource : public ProxyBeginFrameSource { |
| 64 public: |
| 65 explicit TestProxyBeginFrameSource(TestHooks* test_hooks) |
| 66 : test_hooks_(test_hooks) {} |
| 67 ~TestProxyBeginFrameSource() override {} |
| 68 |
| 69 void BeginFrames(const BeginFrameArgs& args) override { |
| 70 test_hooks_->SendBeginFramesToChildren(args); |
| 71 } |
| 72 |
| 73 private: |
| 74 TestHooks* test_hooks_; |
| 75 }; |
| 76 |
| 63 // Adapts ThreadProxy for test. Injects test hooks for testing. | 77 // Adapts ThreadProxy for test. Injects test hooks for testing. |
| 64 class ThreadProxyForTest : public ThreadProxy { | 78 class ThreadProxyForTest : public ThreadProxy { |
| 65 public: | 79 public: |
| 66 static scoped_ptr<Proxy> Create( | 80 static scoped_ptr<Proxy> Create( |
| 67 TestHooks* test_hooks, | 81 TestHooks* test_hooks, |
| 68 LayerTreeHost* host, | 82 LayerTreeHost* host, |
| 69 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, | 83 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
| 70 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, | 84 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
| 71 scoped_ptr<BeginFrameSource> external_begin_frame_source) { | 85 scoped_ptr<BeginFrameSource> external_begin_frame_source) { |
| 72 return make_scoped_ptr(new ThreadProxyForTest( | 86 return make_scoped_ptr(new ThreadProxyForTest( |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 } | 356 } |
| 343 | 357 |
| 344 void RequestNewOutputSurface() override { | 358 void RequestNewOutputSurface() override { |
| 345 test_hooks_->RequestNewOutputSurface(); | 359 test_hooks_->RequestNewOutputSurface(); |
| 346 } | 360 } |
| 347 | 361 |
| 348 void DidInitializeOutputSurface() override { | 362 void DidInitializeOutputSurface() override { |
| 349 test_hooks_->DidInitializeOutputSurface(); | 363 test_hooks_->DidInitializeOutputSurface(); |
| 350 } | 364 } |
| 351 | 365 |
| 352 void SendBeginFramesToChildren(const BeginFrameArgs& args) override { | |
| 353 test_hooks_->SendBeginFramesToChildren(args); | |
| 354 } | |
| 355 | |
| 356 void DidFailToInitializeOutputSurface() override { | 366 void DidFailToInitializeOutputSurface() override { |
| 357 test_hooks_->DidFailToInitializeOutputSurface(); | 367 test_hooks_->DidFailToInitializeOutputSurface(); |
| 358 RequestNewOutputSurface(); | 368 RequestNewOutputSurface(); |
| 359 } | 369 } |
| 360 | 370 |
| 361 void WillCommit() override { test_hooks_->WillCommit(); } | 371 void WillCommit() override { test_hooks_->WillCommit(); } |
| 362 | 372 |
| 363 void DidCommit() override { test_hooks_->DidCommit(); } | 373 void DidCommit() override { test_hooks_->DidCommit(); } |
| 364 | 374 |
| 365 void DidCommitAndDrawFrame() override { | 375 void DidCommitAndDrawFrame() override { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 384 | 394 |
| 385 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting. | 395 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting. |
| 386 class LayerTreeHostForTesting : public LayerTreeHost { | 396 class LayerTreeHostForTesting : public LayerTreeHost { |
| 387 public: | 397 public: |
| 388 static scoped_ptr<LayerTreeHostForTesting> Create( | 398 static scoped_ptr<LayerTreeHostForTesting> Create( |
| 389 TestHooks* test_hooks, | 399 TestHooks* test_hooks, |
| 390 LayerTreeHostClientForTesting* client, | 400 LayerTreeHostClientForTesting* client, |
| 391 const LayerTreeSettings& settings, | 401 const LayerTreeSettings& settings, |
| 392 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, | 402 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
| 393 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, | 403 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
| 394 scoped_ptr<BeginFrameSource> external_begin_frame_source) { | 404 scoped_ptr<BeginFrameSource> external_begin_frame_source, |
| 405 ProxyBeginFrameSource* proxy_begin_frame_source) { |
| 395 scoped_ptr<LayerTreeHostForTesting> layer_tree_host( | 406 scoped_ptr<LayerTreeHostForTesting> layer_tree_host( |
| 396 new LayerTreeHostForTesting(test_hooks, client, settings)); | 407 new LayerTreeHostForTesting(test_hooks, client, settings)); |
| 397 if (impl_task_runner.get()) { | 408 if (impl_task_runner.get()) { |
| 398 layer_tree_host->InitializeForTesting( | 409 layer_tree_host->InitializeForTesting( |
| 399 ThreadProxyForTest::Create(test_hooks, | 410 ThreadProxyForTest::Create(test_hooks, |
| 400 layer_tree_host.get(), | 411 layer_tree_host.get(), |
| 401 main_task_runner, | 412 main_task_runner, |
| 402 impl_task_runner, | 413 impl_task_runner, |
| 403 external_begin_frame_source.Pass())); | 414 external_begin_frame_source.Pass())); |
| 404 } else { | 415 } else { |
| 405 layer_tree_host->InitializeForTesting(SingleThreadProxy::Create( | 416 layer_tree_host->InitializeForTesting(SingleThreadProxy::Create( |
| 406 layer_tree_host.get(), | 417 layer_tree_host.get(), |
| 407 client, | 418 client, |
| 408 main_task_runner, | 419 main_task_runner, |
| 409 external_begin_frame_source.Pass())); | 420 external_begin_frame_source.Pass(), |
| 421 proxy_begin_frame_source)); |
| 410 } | 422 } |
| 411 return layer_tree_host.Pass(); | 423 return layer_tree_host.Pass(); |
| 412 } | 424 } |
| 413 | 425 |
| 414 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl( | 426 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl( |
| 415 LayerTreeHostImplClient* host_impl_client) override { | 427 LayerTreeHostImplClient* host_impl_client) override { |
| 416 return LayerTreeHostImplForTesting::Create( | 428 return LayerTreeHostImplForTesting::Create( |
| 417 test_hooks_, | 429 test_hooks_, |
| 418 settings(), | 430 settings(), |
| 419 host_impl_client, | 431 host_impl_client, |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 void LayerTreeTest::DoBeginTest() { | 592 void LayerTreeTest::DoBeginTest() { |
| 581 client_ = LayerTreeHostClientForTesting::Create(this); | 593 client_ = LayerTreeHostClientForTesting::Create(this); |
| 582 | 594 |
| 583 scoped_ptr<FakeExternalBeginFrameSource> external_begin_frame_source; | 595 scoped_ptr<FakeExternalBeginFrameSource> external_begin_frame_source; |
| 584 if (settings_.use_external_begin_frame_source) { | 596 if (settings_.use_external_begin_frame_source) { |
| 585 external_begin_frame_source.reset(new FakeExternalBeginFrameSource( | 597 external_begin_frame_source.reset(new FakeExternalBeginFrameSource( |
| 586 settings_.renderer_settings.refresh_rate)); | 598 settings_.renderer_settings.refresh_rate)); |
| 587 external_begin_frame_source_ = external_begin_frame_source.get(); | 599 external_begin_frame_source_ = external_begin_frame_source.get(); |
| 588 } | 600 } |
| 589 | 601 |
| 602 if (settings_.forward_begin_frames_to_children) { |
| 603 proxy_begin_frame_source_.reset(new TestProxyBeginFrameSource(this)); |
| 604 } |
| 605 |
| 590 DCHECK(!impl_thread_ || impl_thread_->message_loop_proxy().get()); | 606 DCHECK(!impl_thread_ || impl_thread_->message_loop_proxy().get()); |
| 591 layer_tree_host_ = LayerTreeHostForTesting::Create( | 607 layer_tree_host_ = LayerTreeHostForTesting::Create( |
| 592 this, | 608 this, |
| 593 client_.get(), | 609 client_.get(), |
| 594 settings_, | 610 settings_, |
| 595 base::MessageLoopProxy::current(), | 611 base::MessageLoopProxy::current(), |
| 596 impl_thread_ ? impl_thread_->message_loop_proxy() : NULL, | 612 impl_thread_ ? impl_thread_->message_loop_proxy() : NULL, |
| 597 external_begin_frame_source.Pass()); | 613 external_begin_frame_source.Pass(), |
| 614 proxy_begin_frame_source_.get()); |
| 598 ASSERT_TRUE(layer_tree_host_); | 615 ASSERT_TRUE(layer_tree_host_); |
| 599 | 616 |
| 600 started_ = true; | 617 started_ = true; |
| 601 beginning_ = true; | 618 beginning_ = true; |
| 602 SetupTree(); | 619 SetupTree(); |
| 603 WillBeginTest(); | 620 WillBeginTest(); |
| 604 BeginTest(); | 621 BeginTest(); |
| 605 beginning_ = false; | 622 beginning_ = false; |
| 606 if (end_when_begin_returns_) | 623 if (end_when_begin_returns_) |
| 607 RealEndTest(); | 624 RealEndTest(); |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 return -1; | 808 return -1; |
| 792 } | 809 } |
| 793 | 810 |
| 794 void LayerTreeTest::DestroyLayerTreeHost() { | 811 void LayerTreeTest::DestroyLayerTreeHost() { |
| 795 if (layer_tree_host_ && layer_tree_host_->root_layer()) | 812 if (layer_tree_host_ && layer_tree_host_->root_layer()) |
| 796 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL); | 813 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL); |
| 797 layer_tree_host_ = nullptr; | 814 layer_tree_host_ = nullptr; |
| 798 } | 815 } |
| 799 | 816 |
| 800 } // namespace cc | 817 } // namespace cc |
| OLD | NEW |