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

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

Issue 1513643010: cc:: Add remote mode to the compositor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed vmpstr's comments. Created 4 years, 10 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/proxy_main_for_test.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/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/thread_task_runner_handle.h" 10 #include "base/thread_task_runner_handle.h"
11 #include "cc/animation/animation.h" 11 #include "cc/animation/animation.h"
12 #include "cc/animation/animation_host.h" 12 #include "cc/animation/animation_host.h"
13 #include "cc/animation/animation_registrar.h" 13 #include "cc/animation/animation_registrar.h"
14 #include "cc/animation/layer_animation_controller.h" 14 #include "cc/animation/layer_animation_controller.h"
15 #include "cc/animation/timing_function.h" 15 #include "cc/animation/timing_function.h"
16 #include "cc/base/switches.h" 16 #include "cc/base/switches.h"
17 #include "cc/input/input_handler.h" 17 #include "cc/input/input_handler.h"
18 #include "cc/layers/layer.h" 18 #include "cc/layers/layer.h"
19 #include "cc/layers/layer_impl.h" 19 #include "cc/layers/layer_impl.h"
20 #include "cc/proto/compositor_message_to_impl.pb.h"
20 #include "cc/test/animation_test_common.h" 21 #include "cc/test/animation_test_common.h"
21 #include "cc/test/begin_frame_args_test.h" 22 #include "cc/test/begin_frame_args_test.h"
22 #include "cc/test/fake_external_begin_frame_source.h" 23 #include "cc/test/fake_external_begin_frame_source.h"
23 #include "cc/test/fake_layer_tree_host_client.h" 24 #include "cc/test/fake_layer_tree_host_client.h"
24 #include "cc/test/fake_output_surface.h" 25 #include "cc/test/fake_output_surface.h"
26 #include "cc/test/remote_channel_impl_for_test.h"
25 #include "cc/test/test_context_provider.h" 27 #include "cc/test/test_context_provider.h"
26 #include "cc/test/test_gpu_memory_buffer_manager.h" 28 #include "cc/test/test_gpu_memory_buffer_manager.h"
27 #include "cc/test/test_shared_bitmap_manager.h" 29 #include "cc/test/test_shared_bitmap_manager.h"
28 #include "cc/test/test_task_graph_runner.h" 30 #include "cc/test/test_task_graph_runner.h"
31 #include "cc/test/threaded_channel_for_test.h"
29 #include "cc/trees/layer_tree_host_client.h" 32 #include "cc/trees/layer_tree_host_client.h"
30 #include "cc/trees/layer_tree_host_impl.h" 33 #include "cc/trees/layer_tree_host_impl.h"
31 #include "cc/trees/layer_tree_host_single_thread_client.h" 34 #include "cc/trees/layer_tree_host_single_thread_client.h"
32 #include "cc/trees/layer_tree_impl.h" 35 #include "cc/trees/layer_tree_impl.h"
33 #include "cc/trees/proxy_impl.h" 36 #include "cc/trees/proxy_impl.h"
34 #include "cc/trees/proxy_main.h" 37 #include "cc/trees/proxy_main.h"
35 #include "cc/trees/single_thread_proxy.h" 38 #include "cc/trees/single_thread_proxy.h"
36 #include "cc/trees/threaded_channel.h" 39 #include "cc/trees/threaded_channel.h"
37 #include "testing/gmock/include/gmock/gmock.h" 40 #include "testing/gmock/include/gmock/gmock.h"
38 #include "ui/gfx/geometry/size_conversions.h" 41 #include "ui/gfx/geometry/size_conversions.h"
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 TestHooks* test_hooks_; 423 TestHooks* test_hooks_;
421 }; 424 };
422 425
423 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting. 426 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting.
424 class LayerTreeHostForTesting : public LayerTreeHost { 427 class LayerTreeHostForTesting : public LayerTreeHost {
425 public: 428 public:
426 static scoped_ptr<LayerTreeHostForTesting> Create( 429 static scoped_ptr<LayerTreeHostForTesting> Create(
427 TestHooks* test_hooks, 430 TestHooks* test_hooks,
428 CompositorMode mode, 431 CompositorMode mode,
429 LayerTreeHostClientForTesting* client, 432 LayerTreeHostClientForTesting* client,
433 RemoteProtoChannel* remote_proto_channel,
430 SharedBitmapManager* shared_bitmap_manager, 434 SharedBitmapManager* shared_bitmap_manager,
431 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, 435 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
432 TaskGraphRunner* task_graph_runner, 436 TaskGraphRunner* task_graph_runner,
433 const LayerTreeSettings& settings, 437 const LayerTreeSettings& settings,
434 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 438 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
435 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, 439 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
436 scoped_ptr<BeginFrameSource> external_begin_frame_source) { 440 scoped_ptr<BeginFrameSource> external_begin_frame_source) {
437 LayerTreeHost::InitParams params; 441 LayerTreeHost::InitParams params;
438 params.client = client; 442 params.client = client;
439 params.shared_bitmap_manager = shared_bitmap_manager; 443 params.shared_bitmap_manager = shared_bitmap_manager;
440 params.gpu_memory_buffer_manager = gpu_memory_buffer_manager; 444 params.gpu_memory_buffer_manager = gpu_memory_buffer_manager;
441 params.task_graph_runner = task_graph_runner; 445 params.task_graph_runner = task_graph_runner;
442 params.settings = &settings; 446 params.settings = &settings;
443 scoped_ptr<LayerTreeHostForTesting> layer_tree_host( 447 scoped_ptr<LayerTreeHostForTesting> layer_tree_host(
444 new LayerTreeHostForTesting(test_hooks, &params, mode)); 448 new LayerTreeHostForTesting(test_hooks, &params, mode));
445 scoped_ptr<TaskRunnerProvider> task_runner_provider = 449 scoped_ptr<TaskRunnerProvider> task_runner_provider =
446 TaskRunnerProvider::Create(main_task_runner, impl_task_runner); 450 TaskRunnerProvider::Create(main_task_runner, impl_task_runner);
447 scoped_ptr<Proxy> proxy; 451 scoped_ptr<Proxy> proxy;
448 if (mode == CompositorMode::Threaded) { 452 switch (mode) {
449 DCHECK(impl_task_runner.get()); 453 case CompositorMode::SINGLE_THREADED:
450 scoped_ptr<ProxyMain> proxy_main = ProxyMainForTest::CreateThreaded( 454 proxy = SingleThreadProxyForTest::Create(test_hooks,
451 test_hooks, layer_tree_host.get(), task_runner_provider.get()); 455 layer_tree_host.get(), client,
452 proxy = std::move(proxy_main); 456 task_runner_provider.get());
453 } else { 457 break;
454 proxy = 458 case CompositorMode::THREADED:
455 SingleThreadProxyForTest::Create(test_hooks, layer_tree_host.get(), 459 DCHECK(impl_task_runner.get());
456 client, task_runner_provider.get()); 460 proxy = ProxyMainForTest::CreateThreaded(
461 test_hooks, layer_tree_host.get(), task_runner_provider.get());
462 break;
463 case CompositorMode::REMOTE:
464 DCHECK(!external_begin_frame_source);
465 // The Remote LayerTreeHost on the client has the impl task runner.
466 if (task_runner_provider->HasImplThread()) {
467 proxy = RemoteChannelImplForTest::Create(
468 test_hooks, layer_tree_host.get(), remote_proto_channel,
469 task_runner_provider.get());
470 } else {
471 proxy = ProxyMainForTest::CreateRemote(
472 test_hooks, remote_proto_channel, layer_tree_host.get(),
473 task_runner_provider.get());
474 }
475 break;
457 } 476 }
458 layer_tree_host->InitializeForTesting( 477 layer_tree_host->InitializeForTesting(
459 std::move(task_runner_provider), std::move(proxy), 478 std::move(task_runner_provider), std::move(proxy),
460 std::move(external_begin_frame_source)); 479 std::move(external_begin_frame_source));
461 return layer_tree_host; 480 return layer_tree_host;
462 } 481 }
463 482
464 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl( 483 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl(
465 LayerTreeHostImplClient* host_impl_client) override { 484 LayerTreeHostImplClient* host_impl_client) override {
466 return LayerTreeHostImplForTesting::Create( 485 return LayerTreeHostImplForTesting::Create(
(...skipping 24 matching lines...) Expand all
491 test_hooks_(test_hooks), 510 test_hooks_(test_hooks),
492 test_started_(false) {} 511 test_started_(false) {}
493 512
494 TestHooks* test_hooks_; 513 TestHooks* test_hooks_;
495 bool test_started_; 514 bool test_started_;
496 }; 515 };
497 516
498 LayerTreeTest::LayerTreeTest() 517 LayerTreeTest::LayerTreeTest()
499 : output_surface_(nullptr), 518 : output_surface_(nullptr),
500 external_begin_frame_source_(nullptr), 519 external_begin_frame_source_(nullptr),
520 remote_proto_channel_bridge_(this),
501 beginning_(false), 521 beginning_(false),
502 end_when_begin_returns_(false), 522 end_when_begin_returns_(false),
503 timed_out_(false), 523 timed_out_(false),
504 scheduled_(false), 524 scheduled_(false),
505 started_(false), 525 started_(false),
506 ended_(false), 526 ended_(false),
507 delegating_renderer_(false), 527 delegating_renderer_(false),
508 verify_property_trees_(true), 528 verify_property_trees_(true),
509 timeout_seconds_(0), 529 timeout_seconds_(0),
510 weak_factory_(this) { 530 weak_factory_(this) {
511 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr(); 531 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr();
512 532
513 // Tests should timeout quickly unless --cc-layer-tree-test-no-timeout was 533 // Tests should timeout quickly unless --cc-layer-tree-test-no-timeout was
514 // specified (for running in a debugger). 534 // specified (for running in a debugger).
515 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 535 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
516 if (!command_line->HasSwitch(switches::kCCLayerTreeTestNoTimeout)) 536 if (!command_line->HasSwitch(switches::kCCLayerTreeTestNoTimeout))
517 timeout_seconds_ = 5; 537 timeout_seconds_ = 5;
518 } 538 }
519 539
520 LayerTreeTest::~LayerTreeTest() {} 540 LayerTreeTest::~LayerTreeTest() {}
521 541
542 Proxy* LayerTreeTest::remote_client_proxy() const {
543 DCHECK(IsRemoteTest());
544 return remote_client_layer_tree_host_
545 ? remote_client_layer_tree_host_->proxy()
546 : nullptr;
547 }
548
549 bool LayerTreeTest::IsRemoteTest() const {
550 return mode_ == CompositorMode::REMOTE;
551 }
552
522 void LayerTreeTest::EndTest() { 553 void LayerTreeTest::EndTest() {
523 if (ended_) 554 if (ended_)
524 return; 555 return;
525 ended_ = true; 556 ended_ = true;
526 557
527 // For the case where we EndTest during BeginTest(), set a flag to indicate 558 // For the case where we EndTest during BeginTest(), set a flag to indicate
528 // that the test should end the second BeginTest regains control. 559 // that the test should end the second BeginTest regains control.
529 if (beginning_) { 560 if (beginning_) {
530 end_when_begin_returns_ = true; 561 end_when_begin_returns_ = true;
531 } else { 562 } else {
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 693
663 void LayerTreeTest::WillBeginTest() { 694 void LayerTreeTest::WillBeginTest() {
664 layer_tree_host_->SetVisible(true); 695 layer_tree_host_->SetVisible(true);
665 } 696 }
666 697
667 void LayerTreeTest::DoBeginTest() { 698 void LayerTreeTest::DoBeginTest() {
668 client_ = LayerTreeHostClientForTesting::Create(this); 699 client_ = LayerTreeHostClientForTesting::Create(this);
669 700
670 scoped_ptr<FakeExternalBeginFrameSource> external_begin_frame_source; 701 scoped_ptr<FakeExternalBeginFrameSource> external_begin_frame_source;
671 if (settings_.use_external_begin_frame_source) { 702 if (settings_.use_external_begin_frame_source) {
703 DCHECK(!IsRemoteTest());
672 external_begin_frame_source.reset(new FakeExternalBeginFrameSource( 704 external_begin_frame_source.reset(new FakeExternalBeginFrameSource(
673 settings_.renderer_settings.refresh_rate)); 705 settings_.renderer_settings.refresh_rate));
674 external_begin_frame_source_ = external_begin_frame_source.get(); 706 external_begin_frame_source_ = external_begin_frame_source.get();
675 } 707 }
676 708
677 DCHECK(!impl_thread_ || impl_thread_->task_runner().get()); 709 DCHECK(!impl_thread_ || impl_thread_->task_runner().get());
678 layer_tree_host_ = LayerTreeHostForTesting::Create( 710
679 this, mode_, client_.get(), shared_bitmap_manager_.get(), 711 if (IsRemoteTest()) {
680 gpu_memory_buffer_manager_.get(), task_graph_runner_.get(), settings_, 712 DCHECK(impl_thread_);
681 base::ThreadTaskRunnerHandle::Get(), 713 layer_tree_host_ = LayerTreeHostForTesting::Create(
682 impl_thread_ ? impl_thread_->task_runner() : NULL, 714 this, mode_, client_.get(), &remote_proto_channel_bridge_.channel_main,
683 std::move(external_begin_frame_source)); 715 nullptr, nullptr, task_graph_runner_.get(), settings_,
716 base::ThreadTaskRunnerHandle::Get(), nullptr,
717 std::move(external_begin_frame_source));
718 DCHECK(remote_proto_channel_bridge_.channel_main.HasReceiver());
719 } else {
720 layer_tree_host_ = LayerTreeHostForTesting::Create(
721 this, mode_, client_.get(), nullptr, shared_bitmap_manager_.get(),
722 gpu_memory_buffer_manager_.get(), task_graph_runner_.get(), settings_,
723 base::ThreadTaskRunnerHandle::Get(),
724 impl_thread_ ? impl_thread_->task_runner() : NULL,
725 std::move(external_begin_frame_source));
726 }
727
684 ASSERT_TRUE(layer_tree_host_); 728 ASSERT_TRUE(layer_tree_host_);
685 729
686 started_ = true; 730 started_ = true;
687 beginning_ = true; 731 beginning_ = true;
688 SetupTree(); 732 SetupTree();
689 WillBeginTest(); 733 WillBeginTest();
690 BeginTest(); 734 BeginTest();
691 beginning_ = false; 735 beginning_ = false;
692 if (end_when_begin_returns_) 736 if (end_when_begin_returns_)
693 RealEndTest(); 737 RealEndTest();
(...skipping 20 matching lines...) Expand all
714 layer_tree_host_->root_layer()->SetIsDrawable(true); 758 layer_tree_host_->root_layer()->SetIsDrawable(true);
715 } 759 }
716 760
717 void LayerTreeTest::Timeout() { 761 void LayerTreeTest::Timeout() {
718 timed_out_ = true; 762 timed_out_ = true;
719 EndTest(); 763 EndTest();
720 } 764 }
721 765
722 void LayerTreeTest::RealEndTest() { 766 void LayerTreeTest::RealEndTest() {
723 // TODO(mithro): Make this method only end when not inside an impl frame. 767 // TODO(mithro): Make this method only end when not inside an impl frame.
724 if (layer_tree_host_ && !timed_out_ && 768 bool main_frame_will_happen;
725 proxy()->MainFrameWillHappenForTesting()) { 769 if (IsRemoteTest()) {
770 main_frame_will_happen =
771 remote_client_layer_tree_host_
772 ? remote_client_proxy()->MainFrameWillHappenForTesting()
773 : false;
774 } else {
775 main_frame_will_happen =
776 layer_tree_host_ ? proxy()->MainFrameWillHappenForTesting() : false;
777 }
778
779 if (main_frame_will_happen && !timed_out_) {
726 main_task_runner_->PostTask( 780 main_task_runner_->PostTask(
727 FROM_HERE, 781 FROM_HERE,
728 base::Bind(&LayerTreeTest::RealEndTest, main_thread_weak_ptr_)); 782 base::Bind(&LayerTreeTest::RealEndTest, main_thread_weak_ptr_));
729 return; 783 return;
730 } 784 }
731 785
732 base::MessageLoop::current()->QuitWhenIdle(); 786 base::MessageLoop::current()->QuitWhenIdle();
733 } 787 }
734 788
735 void LayerTreeTest::DispatchAddAnimation(Layer* layer_to_receive_animation, 789 void LayerTreeTest::DispatchAddAnimation(Layer* layer_to_receive_animation,
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 } 862 }
809 863
810 void LayerTreeTest::DispatchNextCommitWaitsForActivation() { 864 void LayerTreeTest::DispatchNextCommitWaitsForActivation() {
811 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread()); 865 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread());
812 if (layer_tree_host_) 866 if (layer_tree_host_)
813 layer_tree_host_->SetNextCommitWaitsForActivation(); 867 layer_tree_host_->SetNextCommitWaitsForActivation();
814 } 868 }
815 869
816 void LayerTreeTest::RunTest(CompositorMode mode, bool delegating_renderer) { 870 void LayerTreeTest::RunTest(CompositorMode mode, bool delegating_renderer) {
817 mode_ = mode; 871 mode_ = mode;
818 if (mode_ == CompositorMode::Threaded) { 872 if (mode_ == CompositorMode::THREADED || mode_ == CompositorMode::REMOTE) {
819 impl_thread_.reset(new base::Thread("Compositor")); 873 impl_thread_.reset(new base::Thread("Compositor"));
820 ASSERT_TRUE(impl_thread_->Start()); 874 ASSERT_TRUE(impl_thread_->Start());
821 } 875 }
822 876
823 main_task_runner_ = base::ThreadTaskRunnerHandle::Get(); 877 main_task_runner_ = base::ThreadTaskRunnerHandle::Get();
824 878
825 shared_bitmap_manager_.reset(new TestSharedBitmapManager); 879 shared_bitmap_manager_.reset(new TestSharedBitmapManager);
826 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager); 880 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager);
827 task_graph_runner_.reset(new TestTaskGraphRunner); 881 task_graph_runner_.reset(new TestTaskGraphRunner);
828 882
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 if (impl->active_tree()) 952 if (impl->active_tree())
899 return impl->active_tree()->source_frame_number(); 953 return impl->active_tree()->source_frame_number();
900 // Source frames start at 0, so this is invalid. 954 // Source frames start at 0, so this is invalid.
901 return -1; 955 return -1;
902 } 956 }
903 957
904 void LayerTreeTest::DestroyLayerTreeHost() { 958 void LayerTreeTest::DestroyLayerTreeHost() {
905 if (layer_tree_host_ && layer_tree_host_->root_layer()) 959 if (layer_tree_host_ && layer_tree_host_->root_layer())
906 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL); 960 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL);
907 layer_tree_host_ = nullptr; 961 layer_tree_host_ = nullptr;
962
963 DCHECK(!remote_proto_channel_bridge_.channel_main.HasReceiver());
964
965 // Destroying the LayerTreeHost should destroy the remote client
966 // LayerTreeHost.
967 DCHECK(!remote_client_layer_tree_host_);
968 }
969
970 void LayerTreeTest::DestroyRemoteClientHost() {
971 DCHECK(IsRemoteTest());
972 DCHECK(remote_client_layer_tree_host_);
973
974 remote_client_layer_tree_host_ = nullptr;
975 DCHECK(!remote_proto_channel_bridge_.channel_impl.HasReceiver());
976 }
977
978 void LayerTreeTest::CreateRemoteClientHost(
979 const proto::CompositorMessageToImpl& proto) {
980 DCHECK(IsRemoteTest());
981 DCHECK(!remote_client_layer_tree_host_);
982 DCHECK(impl_thread_);
983 DCHECK(proto.message_type() ==
984 proto::CompositorMessageToImpl::INITIALIZE_IMPL);
985
986 proto::InitializeImpl initialize_proto = proto.initialize_impl_message();
987 LayerTreeSettings settings;
988 settings.FromProtobuf(initialize_proto.layer_tree_settings());
989 remote_client_layer_tree_host_ = LayerTreeHostForTesting::Create(
990 this, mode_, client_.get(), &remote_proto_channel_bridge_.channel_impl,
991 nullptr, nullptr, task_graph_runner_.get(), settings,
992 base::ThreadTaskRunnerHandle::Get(), impl_thread_->task_runner(),
993 nullptr);
994
995 DCHECK(remote_proto_channel_bridge_.channel_impl.HasReceiver());
996 DCHECK(task_runner_provider()->HasImplThread());
908 } 997 }
909 998
910 TaskGraphRunner* LayerTreeTest::task_graph_runner() const { 999 TaskGraphRunner* LayerTreeTest::task_graph_runner() const {
911 return task_graph_runner_.get(); 1000 return task_graph_runner_.get();
912 } 1001 }
913 1002
1003 TaskRunnerProvider* LayerTreeTest::task_runner_provider() const {
1004 // All LayerTreeTests can use the task runner provider to access the impl
1005 // thread. In the remote mode, the impl thread of the compositor lives on
1006 // the client, so return the task runner provider owned by the remote client
1007 // LayerTreeHost.
1008 if (IsRemoteTest()) {
1009 return remote_client_layer_tree_host_
1010 ? remote_client_layer_tree_host_->task_runner_provider()
1011 : nullptr;
1012 }
1013 return layer_tree_host_ ? layer_tree_host_->task_runner_provider() : nullptr;
1014 }
1015
914 LayerTreeHost* LayerTreeTest::layer_tree_host() { 1016 LayerTreeHost* LayerTreeTest::layer_tree_host() {
915 // We check for a null task_runner_provider here as we sometimes ask for the 1017 // We check for a null task_runner_provider here as we sometimes ask for the
916 // layer tree host when the task_runner_provider does not exist, often for 1018 // layer tree host when the task_runner_provider does not exist, often for
917 // checking settings after a test has completed. For example, 1019 // checking settings after a test has completed. For example,
918 // LTHPixelResourceTest::RunPixelResourceTest. See elsewhere in this file for 1020 // LTHPixelResourceTest::RunPixelResourceTest. See elsewhere in this file for
919 // other examples. 1021 // other examples.
920 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread() || 1022 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread() ||
921 task_runner_provider()->IsMainThreadBlocked()); 1023 task_runner_provider()->IsMainThreadBlocked());
922 return layer_tree_host_.get(); 1024 return layer_tree_host_.get();
923 } 1025 }
924 1026
925 ProxyMainForTest* LayerTreeTest::GetProxyMainForTest() const { 1027 ProxyMainForTest* LayerTreeTest::GetProxyMainForTest() const {
926 DCHECK(HasImplThread()); 1028 DCHECK(HasImplThread());
927 return static_cast<ProxyMainForTest*>(proxy()); 1029 return static_cast<ProxyMainForTest*>(proxy());
928 } 1030 }
929 1031
930 ProxyImplForTest* LayerTreeTest::GetProxyImplForTest() const { 1032 ProxyImplForTest* LayerTreeTest::GetProxyImplForTest() const {
931 DCHECK(HasImplThread()); 1033 DCHECK(HasImplThread());
932 ThreadedChannel* threaded_channel = 1034
933 static_cast<ThreadedChannel*>(GetProxyMainForTest()->channel_main()); 1035 if (IsRemoteTest()) {
934 ProxyImpl* proxy_impl = threaded_channel->GetProxyImplForTesting(); 1036 return GetRemoteChannelImplForTest()->proxy_impl_for_test();
1037 }
1038
1039 ProxyImplForTest* proxy_impl_for_test =
1040 GetThreadedChannelForTest()->proxy_impl_for_test();
935 1041
936 // We check for null ProxyImpl since ProxyImpl exists in the ThreadedChannel 1042 // We check for null ProxyImpl since ProxyImpl exists in the ThreadedChannel
937 // only after it is initialized. 1043 // only after it is initialized.
938 DCHECK(proxy_impl); 1044 DCHECK(proxy_impl_for_test);
939 return static_cast<ProxyImplForTest*>(proxy_impl); 1045 return proxy_impl_for_test;
1046 }
1047
1048 ThreadedChannelForTest* LayerTreeTest::GetThreadedChannelForTest() const {
1049 DCHECK(mode_ == CompositorMode::THREADED);
1050
1051 return GetProxyMainForTest()->threaded_channel_for_test();
1052 }
1053
1054 RemoteChannelImplForTest* LayerTreeTest::GetRemoteChannelImplForTest() const {
1055 DCHECK(IsRemoteTest());
1056 DCHECK(remote_client_layer_tree_host_);
1057
1058 return static_cast<RemoteChannelImplForTest*>(
1059 remote_client_layer_tree_host_->proxy());
940 } 1060 }
941 1061
942 } // namespace cc 1062 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/layer_tree_test.h ('k') | cc/test/proxy_main_for_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698