Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1353)

Side by Side Diff: cc/test/layer_tree_test.cc

Issue 2646623002: cc: Remove all blimp code from cc. (Closed)
Patch Set: test build Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/test/layer_tree_test.h ('k') | cc/test/picture_cache_model.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/location.h" 8 #include "base/location.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
11 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
12 #include "base/threading/thread_task_runner_handle.h" 12 #include "base/threading/thread_task_runner_handle.h"
13 #include "cc/animation/animation.h" 13 #include "cc/animation/animation.h"
14 #include "cc/animation/animation_host.h" 14 #include "cc/animation/animation_host.h"
15 #include "cc/animation/animation_player.h" 15 #include "cc/animation/animation_player.h"
16 #include "cc/animation/timing_function.h" 16 #include "cc/animation/timing_function.h"
17 #include "cc/base/switches.h" 17 #include "cc/base/switches.h"
18 #include "cc/blimp/remote_compositor_bridge.h"
19 #include "cc/input/input_handler.h" 18 #include "cc/input/input_handler.h"
20 #include "cc/layers/layer.h" 19 #include "cc/layers/layer.h"
21 #include "cc/layers/layer_impl.h" 20 #include "cc/layers/layer_impl.h"
22 #include "cc/output/buffer_to_texture_target_map.h" 21 #include "cc/output/buffer_to_texture_target_map.h"
23 #include "cc/test/animation_test_common.h" 22 #include "cc/test/animation_test_common.h"
24 #include "cc/test/begin_frame_args_test.h" 23 #include "cc/test/begin_frame_args_test.h"
25 #include "cc/test/fake_image_serialization_processor.h"
26 #include "cc/test/fake_layer_tree_host_client.h" 24 #include "cc/test/fake_layer_tree_host_client.h"
27 #include "cc/test/fake_output_surface.h" 25 #include "cc/test/fake_output_surface.h"
28 #include "cc/test/layer_tree_host_remote_for_testing.h"
29 #include "cc/test/test_compositor_frame_sink.h" 26 #include "cc/test/test_compositor_frame_sink.h"
30 #include "cc/test/test_context_provider.h" 27 #include "cc/test/test_context_provider.h"
31 #include "cc/test/test_shared_bitmap_manager.h" 28 #include "cc/test/test_shared_bitmap_manager.h"
32 #include "cc/trees/layer_tree_host_client.h" 29 #include "cc/trees/layer_tree_host_client.h"
33 #include "cc/trees/layer_tree_host_impl.h" 30 #include "cc/trees/layer_tree_host_impl.h"
34 #include "cc/trees/layer_tree_host_single_thread_client.h" 31 #include "cc/trees/layer_tree_host_single_thread_client.h"
35 #include "cc/trees/layer_tree_impl.h" 32 #include "cc/trees/layer_tree_impl.h"
36 #include "cc/trees/proxy_impl.h" 33 #include "cc/trees/proxy_impl.h"
37 #include "cc/trees/proxy_main.h" 34 #include "cc/trees/proxy_main.h"
38 #include "cc/trees/single_thread_proxy.h" 35 #include "cc/trees/single_thread_proxy.h"
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 case CompositorMode::SINGLE_THREADED: 359 case CompositorMode::SINGLE_THREADED:
363 proxy = SingleThreadProxy::Create(layer_tree_host.get(), 360 proxy = SingleThreadProxy::Create(layer_tree_host.get(),
364 single_thread_client, 361 single_thread_client,
365 task_runner_provider.get()); 362 task_runner_provider.get());
366 break; 363 break;
367 case CompositorMode::THREADED: 364 case CompositorMode::THREADED:
368 DCHECK(impl_task_runner.get()); 365 DCHECK(impl_task_runner.get());
369 proxy = base::MakeUnique<ProxyMain>(layer_tree_host.get(), 366 proxy = base::MakeUnique<ProxyMain>(layer_tree_host.get(),
370 task_runner_provider.get()); 367 task_runner_provider.get());
371 break; 368 break;
372 case CompositorMode::REMOTE:
373 NOTREACHED();
374 } 369 }
375 layer_tree_host->InitializeForTesting(std::move(task_runner_provider), 370 layer_tree_host->InitializeForTesting(std::move(task_runner_provider),
376 std::move(proxy)); 371 std::move(proxy));
377 return layer_tree_host; 372 return layer_tree_host;
378 } 373 }
379 374
380 std::unique_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl( 375 std::unique_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl(
381 LayerTreeHostImplClient* host_impl_client) override { 376 LayerTreeHostImplClient* host_impl_client) override {
382 std::unique_ptr<LayerTreeHostImpl> host_impl = 377 std::unique_ptr<LayerTreeHostImpl> host_impl =
383 LayerTreeHostImplForTesting::Create( 378 LayerTreeHostImplForTesting::Create(
(...skipping 23 matching lines...) Expand all
407 LayerTreeHostInProcess::InitParams* params, 402 LayerTreeHostInProcess::InitParams* params,
408 CompositorMode mode) 403 CompositorMode mode)
409 : LayerTreeHostInProcess(params, mode), 404 : LayerTreeHostInProcess(params, mode),
410 test_hooks_(test_hooks), 405 test_hooks_(test_hooks),
411 test_started_(false) {} 406 test_started_(false) {}
412 407
413 TestHooks* test_hooks_; 408 TestHooks* test_hooks_;
414 bool test_started_; 409 bool test_started_;
415 }; 410 };
416 411
417 // Adapts the LayerTreeHostRemoteForTesting to inject the
418 // LayerTreeHostInProcess.
419 class LayerTreeHostRemoteForLayerTreeTest
420 : public LayerTreeHostRemoteForTesting {
421 public:
422 static std::unique_ptr<LayerTreeHostRemoteForLayerTreeTest> Create(
423 TestHooks* test_hooks,
424 LayerTreeHostClient* client,
425 LayerTreeSettings const* settings,
426 TaskGraphRunner* task_graph_runner,
427 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
428 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
429 MutatorHost* mutator_host) {
430 std::unique_ptr<FakeImageSerializationProcessor>
431 image_serialization_processor =
432 base::MakeUnique<FakeImageSerializationProcessor>();
433
434 LayerTreeHostRemote::InitParams params;
435 params.client = client;
436 params.main_task_runner = main_task_runner;
437 params.mutator_host = mutator_host;
438 params.remote_compositor_bridge =
439 CreateRemoteCompositorBridge(main_task_runner);
440 params.engine_picture_cache =
441 image_serialization_processor->CreateEnginePictureCache();
442 params.settings = settings;
443
444 std::unique_ptr<LayerTreeHostRemoteForLayerTreeTest> layer_tree_host =
445 base::WrapUnique(
446 new LayerTreeHostRemoteForLayerTreeTest(&params, test_hooks));
447 layer_tree_host->Initialize(task_graph_runner, main_task_runner,
448 impl_task_runner,
449 std::move(image_serialization_processor));
450 return layer_tree_host;
451 }
452
453 ~LayerTreeHostRemoteForLayerTreeTest() override = default;
454
455 std::unique_ptr<LayerTreeHostInProcess> CreateLayerTreeHostInProcess(
456 LayerTreeHostClient* client,
457 TaskGraphRunner* task_graph_runner,
458 const LayerTreeSettings& settings,
459 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
460 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
461 MutatorHost* mutator_host) override {
462 return LayerTreeHostForTesting::Create(
463 test_hooks_, CompositorMode::THREADED, client, nullptr,
464 task_graph_runner, settings, main_task_runner, impl_task_runner,
465 mutator_host);
466 }
467
468 private:
469 LayerTreeHostRemoteForLayerTreeTest(InitParams* params, TestHooks* test_hooks)
470 : LayerTreeHostRemoteForTesting(params), test_hooks_(test_hooks) {}
471
472 TestHooks* test_hooks_;
473 };
474
475 class LayerTreeTestCompositorFrameSinkClient 412 class LayerTreeTestCompositorFrameSinkClient
476 : public TestCompositorFrameSinkClient { 413 : public TestCompositorFrameSinkClient {
477 public: 414 public:
478 explicit LayerTreeTestCompositorFrameSinkClient(TestHooks* hooks) 415 explicit LayerTreeTestCompositorFrameSinkClient(TestHooks* hooks)
479 : hooks_(hooks) {} 416 : hooks_(hooks) {}
480 417
481 // TestCompositorFrameSinkClient implementation. 418 // TestCompositorFrameSinkClient implementation.
482 std::unique_ptr<OutputSurface> CreateDisplayOutputSurface( 419 std::unique_ptr<OutputSurface> CreateDisplayOutputSurface(
483 scoped_refptr<ContextProvider> compositor_context_provider) override { 420 scoped_refptr<ContextProvider> compositor_context_provider) override {
484 return hooks_->CreateDisplayOutputSurfaceOnThread( 421 return hooks_->CreateDisplayOutputSurfaceOnThread(
(...skipping 27 matching lines...) Expand all
512 timeout_seconds_ = 5; 449 timeout_seconds_ = 5;
513 if (command_line->HasSwitch(switches::kCCLayerTreeTestLongTimeout)) 450 if (command_line->HasSwitch(switches::kCCLayerTreeTestLongTimeout))
514 timeout_seconds_ = 5 * 60; 451 timeout_seconds_ = 5 * 60;
515 } 452 }
516 453
517 LayerTreeTest::~LayerTreeTest() { 454 LayerTreeTest::~LayerTreeTest() {
518 if (animation_host_) 455 if (animation_host_)
519 animation_host_->SetMutatorHostClient(nullptr); 456 animation_host_->SetMutatorHostClient(nullptr);
520 } 457 }
521 458
522 bool LayerTreeTest::IsRemoteTest() const {
523 return mode_ == CompositorMode::REMOTE;
524 }
525
526 gfx::Vector2dF LayerTreeTest::ScrollDelta(LayerImpl* layer_impl) { 459 gfx::Vector2dF LayerTreeTest::ScrollDelta(LayerImpl* layer_impl) {
527 gfx::ScrollOffset delta = 460 gfx::ScrollOffset delta =
528 layer_impl->layer_tree_impl() 461 layer_impl->layer_tree_impl()
529 ->property_trees() 462 ->property_trees()
530 ->scroll_tree.GetScrollOffsetDeltaForTesting(layer_impl->id()); 463 ->scroll_tree.GetScrollOffsetDeltaForTesting(layer_impl->id());
531 return gfx::Vector2dF(delta.x(), delta.y()); 464 return gfx::Vector2dF(delta.x(), delta.y());
532 } 465 }
533 466
534 void LayerTreeTest::EndTest() { 467 void LayerTreeTest::EndTest() {
535 if (ended_) 468 if (ended_)
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 587
655 DCHECK(!impl_thread_ || impl_thread_->task_runner().get()); 588 DCHECK(!impl_thread_ || impl_thread_->task_runner().get());
656 589
657 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner = 590 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner =
658 base::ThreadTaskRunnerHandle::Get(); 591 base::ThreadTaskRunnerHandle::Get();
659 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner = 592 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner =
660 impl_thread_ ? impl_thread_->task_runner() : nullptr; 593 impl_thread_ ? impl_thread_->task_runner() : nullptr;
661 594
662 animation_host_ = AnimationHost::CreateForTesting(ThreadInstance::MAIN); 595 animation_host_ = AnimationHost::CreateForTesting(ThreadInstance::MAIN);
663 596
664 if (IsRemoteTest()) { 597 std::unique_ptr<LayerTreeHostForTesting> layer_tree_host_for_testing =
665 std::unique_ptr<LayerTreeHostRemoteForLayerTreeTest> 598 LayerTreeHostForTesting::Create(
666 layer_tree_host_remote = LayerTreeHostRemoteForLayerTreeTest::Create( 599 this, mode_, client_.get(), client_.get(), task_graph_runner_.get(),
667 this, client_.get(), &settings_, task_graph_runner_.get(), 600 settings_, main_task_runner, impl_task_runner, animation_host_.get());
668 main_task_runner, impl_task_runner, animation_host_.get()); 601 layer_tree_host_in_process_ = layer_tree_host_for_testing.get();
669 layer_tree_host_in_process_ = 602 layer_tree_host_ = std::move(layer_tree_host_for_testing);
670 layer_tree_host_remote->layer_tree_host_in_process();
671 layer_tree_host_ = std::move(layer_tree_host_remote);
672 } else {
673 std::unique_ptr<LayerTreeHostForTesting> layer_tree_host_for_testing =
674 LayerTreeHostForTesting::Create(
675 this, mode_, client_.get(), client_.get(), task_graph_runner_.get(),
676 settings_, main_task_runner, impl_task_runner,
677 animation_host_.get());
678 layer_tree_host_in_process_ = layer_tree_host_for_testing.get();
679 layer_tree_host_ = std::move(layer_tree_host_for_testing);
680 }
681 603
682 ASSERT_TRUE(layer_tree_host_); 604 ASSERT_TRUE(layer_tree_host_);
683 605
684 main_task_runner_ = 606 main_task_runner_ =
685 layer_tree_host_->GetTaskRunnerProvider()->MainThreadTaskRunner(); 607 layer_tree_host_->GetTaskRunnerProvider()->MainThreadTaskRunner();
686 impl_task_runner_ = 608 impl_task_runner_ =
687 layer_tree_host_->GetTaskRunnerProvider()->ImplThreadTaskRunner(); 609 layer_tree_host_->GetTaskRunnerProvider()->ImplThreadTaskRunner();
688 if (!impl_task_runner_) { 610 if (!impl_task_runner_) {
689 // For tests, if there's no impl thread, make things easier by just giving 611 // For tests, if there's no impl thread, make things easier by just giving
690 // the main thread task runner. 612 // the main thread task runner.
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 } 734 }
813 735
814 void LayerTreeTest::DispatchNextCommitWaitsForActivation() { 736 void LayerTreeTest::DispatchNextCommitWaitsForActivation() {
815 DCHECK(main_task_runner_->BelongsToCurrentThread()); 737 DCHECK(main_task_runner_->BelongsToCurrentThread());
816 if (layer_tree_host_) 738 if (layer_tree_host_)
817 layer_tree_host_->SetNextCommitWaitsForActivation(); 739 layer_tree_host_->SetNextCommitWaitsForActivation();
818 } 740 }
819 741
820 void LayerTreeTest::RunTest(CompositorMode mode) { 742 void LayerTreeTest::RunTest(CompositorMode mode) {
821 mode_ = mode; 743 mode_ = mode;
822 if (mode_ == CompositorMode::THREADED || mode_ == CompositorMode::REMOTE) { 744 if (mode_ == CompositorMode::THREADED) {
823 impl_thread_.reset(new base::Thread("Compositor")); 745 impl_thread_.reset(new base::Thread("Compositor"));
824 ASSERT_TRUE(impl_thread_->Start()); 746 ASSERT_TRUE(impl_thread_->Start());
825 } 747 }
826 748
827 shared_bitmap_manager_.reset(new TestSharedBitmapManager); 749 shared_bitmap_manager_.reset(new TestSharedBitmapManager);
828 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager); 750 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager);
829 task_graph_runner_.reset(new TestTaskGraphRunner); 751 task_graph_runner_.reset(new TestTaskGraphRunner);
830 752
831 // Spend less time waiting for BeginFrame because the output is 753 // Spend less time waiting for BeginFrame because the output is
832 // mocked out. 754 // mocked out.
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 835
914 LayerTreeHost* LayerTreeTest::layer_tree_host() { 836 LayerTreeHost* LayerTreeTest::layer_tree_host() {
915 DCHECK(task_runner_provider()->IsMainThread() || 837 DCHECK(task_runner_provider()->IsMainThread() ||
916 task_runner_provider()->IsMainThreadBlocked()); 838 task_runner_provider()->IsMainThreadBlocked());
917 return layer_tree_host_.get(); 839 return layer_tree_host_.get();
918 } 840 }
919 841
920 LayerTreeHostInProcess* LayerTreeTest::layer_tree_host_in_process() { 842 LayerTreeHostInProcess* LayerTreeTest::layer_tree_host_in_process() {
921 DCHECK(task_runner_provider()->IsMainThread() || 843 DCHECK(task_runner_provider()->IsMainThread() ||
922 task_runner_provider()->IsMainThreadBlocked()); 844 task_runner_provider()->IsMainThreadBlocked());
923 DCHECK(!IsRemoteTest());
924 return layer_tree_host_in_process_; 845 return layer_tree_host_in_process_;
925 } 846 }
926 847
927 Proxy* LayerTreeTest::proxy() { 848 Proxy* LayerTreeTest::proxy() {
928 return layer_tree_host_in_process() ? layer_tree_host_in_process()->proxy() 849 return layer_tree_host_in_process() ? layer_tree_host_in_process()->proxy()
929 : NULL; 850 : NULL;
930 } 851 }
931 852
932 } // namespace cc 853 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/layer_tree_test.h ('k') | cc/test/picture_cache_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698