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

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: Addressing comments. Created 4 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
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 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 TestHooks* test_hooks_; 424 TestHooks* test_hooks_;
422 }; 425 };
423 426
424 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting. 427 // Adapts LayerTreeHost for test. Injects LayerTreeHostImplForTesting.
425 class LayerTreeHostForTesting : public LayerTreeHost { 428 class LayerTreeHostForTesting : public LayerTreeHost {
426 public: 429 public:
427 static scoped_ptr<LayerTreeHostForTesting> Create( 430 static scoped_ptr<LayerTreeHostForTesting> Create(
428 TestHooks* test_hooks, 431 TestHooks* test_hooks,
429 CompositorMode mode, 432 CompositorMode mode,
430 LayerTreeHostClientForTesting* client, 433 LayerTreeHostClientForTesting* client,
434 RemoteProtoChannel* remote_proto_channel,
431 SharedBitmapManager* shared_bitmap_manager, 435 SharedBitmapManager* shared_bitmap_manager,
432 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, 436 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
433 TaskGraphRunner* task_graph_runner, 437 TaskGraphRunner* task_graph_runner,
434 const LayerTreeSettings& settings, 438 const LayerTreeSettings& settings,
435 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 439 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
436 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, 440 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
437 scoped_ptr<BeginFrameSource> external_begin_frame_source) { 441 scoped_ptr<BeginFrameSource> external_begin_frame_source) {
438 LayerTreeHost::InitParams params; 442 LayerTreeHost::InitParams params;
439 params.client = client; 443 params.client = client;
440 params.shared_bitmap_manager = shared_bitmap_manager; 444 params.shared_bitmap_manager = shared_bitmap_manager;
441 params.gpu_memory_buffer_manager = gpu_memory_buffer_manager; 445 params.gpu_memory_buffer_manager = gpu_memory_buffer_manager;
442 params.task_graph_runner = task_graph_runner; 446 params.task_graph_runner = task_graph_runner;
443 params.settings = &settings; 447 params.settings = &settings;
444 scoped_ptr<LayerTreeHostForTesting> layer_tree_host( 448 scoped_ptr<LayerTreeHostForTesting> layer_tree_host(
445 new LayerTreeHostForTesting(test_hooks, &params, mode)); 449 new LayerTreeHostForTesting(test_hooks, &params, mode));
446 scoped_ptr<TaskRunnerProvider> task_runner_provider = 450 scoped_ptr<TaskRunnerProvider> task_runner_provider =
447 TaskRunnerProvider::Create(main_task_runner, impl_task_runner); 451 TaskRunnerProvider::Create(main_task_runner, impl_task_runner);
448 scoped_ptr<Proxy> proxy; 452 scoped_ptr<Proxy> proxy;
449 if (mode == CompositorMode::Threaded) { 453 switch (mode) {
450 DCHECK(impl_task_runner.get()); 454 case CompositorMode::SINGLE_THREADED:
451 scoped_ptr<ProxyMain> proxy_main = ProxyMainForTest::CreateThreaded( 455 proxy = SingleThreadProxyForTest::Create(test_hooks,
452 test_hooks, layer_tree_host.get(), task_runner_provider.get()); 456 layer_tree_host.get(), client,
453 proxy = std::move(proxy_main); 457 task_runner_provider.get());
454 } else { 458 break;
455 proxy = 459 case CompositorMode::THREADED:
456 SingleThreadProxyForTest::Create(test_hooks, layer_tree_host.get(), 460 DCHECK(impl_task_runner.get());
457 client, task_runner_provider.get()); 461 proxy = ProxyMainForTest::CreateThreaded(
462 test_hooks, layer_tree_host.get(), task_runner_provider.get());
463 break;
464 case CompositorMode::REMOTE:
465 DCHECK(!external_begin_frame_source);
466 if (task_runner_provider->HasImplThread()) {
ericrk 2016/01/20 22:32:29 would it make sense to make IsRemoteClient/IsRemot
Khushal 2016/01/22 01:03:24 We pass both the task runner provider and the prox
ericrk 2016/01/22 18:36:59 ok, fair - yeah, as long as we don't have this che
467 // The Remote LayerTreeHost on the client has the impl task runner.
468 proxy = RemoteChannelImplForTest::Create(
469 test_hooks, layer_tree_host.get(), remote_proto_channel,
470 task_runner_provider.get());
471 } else {
472 proxy = ProxyMainForTest::CreateRemote(
473 test_hooks, remote_proto_channel, layer_tree_host.get(),
474 task_runner_provider.get());
475 }
476 break;
477 default:
478 NOTREACHED();
458 } 479 }
459 layer_tree_host->InitializeForTesting( 480 layer_tree_host->InitializeForTesting(
460 std::move(task_runner_provider), std::move(proxy), 481 std::move(task_runner_provider), std::move(proxy),
461 std::move(external_begin_frame_source)); 482 std::move(external_begin_frame_source));
462 return layer_tree_host; 483 return layer_tree_host;
463 } 484 }
464 485
465 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl( 486 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl(
466 LayerTreeHostImplClient* host_impl_client) override { 487 LayerTreeHostImplClient* host_impl_client) override {
467 return LayerTreeHostImplForTesting::Create( 488 return LayerTreeHostImplForTesting::Create(
(...skipping 24 matching lines...) Expand all
492 test_hooks_(test_hooks), 513 test_hooks_(test_hooks),
493 test_started_(false) {} 514 test_started_(false) {}
494 515
495 TestHooks* test_hooks_; 516 TestHooks* test_hooks_;
496 bool test_started_; 517 bool test_started_;
497 }; 518 };
498 519
499 LayerTreeTest::LayerTreeTest() 520 LayerTreeTest::LayerTreeTest()
500 : output_surface_(nullptr), 521 : output_surface_(nullptr),
501 external_begin_frame_source_(nullptr), 522 external_begin_frame_source_(nullptr),
523 remote_proto_channel_bridge_(this),
502 beginning_(false), 524 beginning_(false),
503 end_when_begin_returns_(false), 525 end_when_begin_returns_(false),
504 timed_out_(false), 526 timed_out_(false),
505 scheduled_(false), 527 scheduled_(false),
506 started_(false), 528 started_(false),
507 ended_(false), 529 ended_(false),
508 delegating_renderer_(false), 530 delegating_renderer_(false),
509 verify_property_trees_(true), 531 verify_property_trees_(true),
510 timeout_seconds_(0), 532 timeout_seconds_(0),
511 weak_factory_(this) { 533 weak_factory_(this) {
512 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr(); 534 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr();
513 535
514 // Tests should timeout quickly unless --cc-layer-tree-test-no-timeout was 536 // Tests should timeout quickly unless --cc-layer-tree-test-no-timeout was
515 // specified (for running in a debugger). 537 // specified (for running in a debugger).
516 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 538 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
517 if (!command_line->HasSwitch(switches::kCCLayerTreeTestNoTimeout)) 539 if (!command_line->HasSwitch(switches::kCCLayerTreeTestNoTimeout))
518 timeout_seconds_ = 5; 540 timeout_seconds_ = 5;
519 } 541 }
520 542
521 LayerTreeTest::~LayerTreeTest() {} 543 LayerTreeTest::~LayerTreeTest() {}
522 544
545 Proxy* LayerTreeTest::remote_client_proxy() const {
546 DCHECK(IsRemoteTest());
547 return remote_client_layer_tree_host_
548 ? remote_client_layer_tree_host_->proxy()
549 : nullptr;
550 }
551
552 bool LayerTreeTest::IsRemoteTest() const {
553 return mode_ == CompositorMode::REMOTE;
554 }
555
523 void LayerTreeTest::EndTest() { 556 void LayerTreeTest::EndTest() {
524 if (ended_) 557 if (ended_)
525 return; 558 return;
526 ended_ = true; 559 ended_ = true;
527 560
528 // For the case where we EndTest during BeginTest(), set a flag to indicate 561 // For the case where we EndTest during BeginTest(), set a flag to indicate
529 // that the test should end the second BeginTest regains control. 562 // that the test should end the second BeginTest regains control.
530 if (beginning_) { 563 if (beginning_) {
531 end_when_begin_returns_ = true; 564 end_when_begin_returns_ = true;
532 } else { 565 } else {
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 689
657 void LayerTreeTest::WillBeginTest() { 690 void LayerTreeTest::WillBeginTest() {
658 layer_tree_host_->SetVisible(true); 691 layer_tree_host_->SetVisible(true);
659 } 692 }
660 693
661 void LayerTreeTest::DoBeginTest() { 694 void LayerTreeTest::DoBeginTest() {
662 client_ = LayerTreeHostClientForTesting::Create(this); 695 client_ = LayerTreeHostClientForTesting::Create(this);
663 696
664 scoped_ptr<FakeExternalBeginFrameSource> external_begin_frame_source; 697 scoped_ptr<FakeExternalBeginFrameSource> external_begin_frame_source;
665 if (settings_.use_external_begin_frame_source) { 698 if (settings_.use_external_begin_frame_source) {
699 DCHECK(!IsRemoteTest());
666 external_begin_frame_source.reset(new FakeExternalBeginFrameSource( 700 external_begin_frame_source.reset(new FakeExternalBeginFrameSource(
667 settings_.renderer_settings.refresh_rate)); 701 settings_.renderer_settings.refresh_rate));
668 external_begin_frame_source_ = external_begin_frame_source.get(); 702 external_begin_frame_source_ = external_begin_frame_source.get();
669 } 703 }
670 704
671 DCHECK(!impl_thread_ || impl_thread_->task_runner().get()); 705 DCHECK(!impl_thread_ || impl_thread_->task_runner().get());
672 layer_tree_host_ = LayerTreeHostForTesting::Create( 706
673 this, mode_, client_.get(), shared_bitmap_manager_.get(), 707 if (IsRemoteTest()) {
674 gpu_memory_buffer_manager_.get(), task_graph_runner_.get(), settings_, 708 DCHECK(impl_thread_);
675 base::ThreadTaskRunnerHandle::Get(), 709 layer_tree_host_ = LayerTreeHostForTesting::Create(
676 impl_thread_ ? impl_thread_->task_runner() : NULL, 710 this, mode_, client_.get(), &remote_proto_channel_bridge_.channel_main,
677 std::move(external_begin_frame_source)); 711 nullptr, nullptr, task_graph_runner_.get(), settings_,
712 base::ThreadTaskRunnerHandle::Get(), nullptr,
713 std::move(external_begin_frame_source));
714 DCHECK(remote_proto_channel_bridge_.channel_main.HasReceiver());
715 } else {
716 layer_tree_host_ = LayerTreeHostForTesting::Create(
717 this, mode_, client_.get(), nullptr, shared_bitmap_manager_.get(),
718 gpu_memory_buffer_manager_.get(), task_graph_runner_.get(), settings_,
719 base::ThreadTaskRunnerHandle::Get(),
720 impl_thread_ ? impl_thread_->task_runner() : NULL,
721 std::move(external_begin_frame_source));
722 }
723
678 ASSERT_TRUE(layer_tree_host_); 724 ASSERT_TRUE(layer_tree_host_);
679 725
680 started_ = true; 726 started_ = true;
681 beginning_ = true; 727 beginning_ = true;
682 SetupTree(); 728 SetupTree();
683 WillBeginTest(); 729 WillBeginTest();
684 BeginTest(); 730 BeginTest();
685 beginning_ = false; 731 beginning_ = false;
686 if (end_when_begin_returns_) 732 if (end_when_begin_returns_)
687 RealEndTest(); 733 RealEndTest();
(...skipping 20 matching lines...) Expand all
708 layer_tree_host_->root_layer()->SetIsDrawable(true); 754 layer_tree_host_->root_layer()->SetIsDrawable(true);
709 } 755 }
710 756
711 void LayerTreeTest::Timeout() { 757 void LayerTreeTest::Timeout() {
712 timed_out_ = true; 758 timed_out_ = true;
713 EndTest(); 759 EndTest();
714 } 760 }
715 761
716 void LayerTreeTest::RealEndTest() { 762 void LayerTreeTest::RealEndTest() {
717 // TODO(mithro): Make this method only end when not inside an impl frame. 763 // TODO(mithro): Make this method only end when not inside an impl frame.
718 if (layer_tree_host_ && !timed_out_ && 764 bool main_frame_will_happen;
719 proxy()->MainFrameWillHappenForTesting()) { 765 if (IsRemoteTest()) {
766 main_frame_will_happen =
767 remote_client_layer_tree_host_
768 ? remote_client_proxy()->MainFrameWillHappenForTesting()
769 : false;
770 } else {
771 main_frame_will_happen =
772 layer_tree_host_ ? proxy()->MainFrameWillHappenForTesting() : false;
773 }
774
775 if (main_frame_will_happen && !timed_out_) {
720 main_task_runner_->PostTask( 776 main_task_runner_->PostTask(
721 FROM_HERE, 777 FROM_HERE,
722 base::Bind(&LayerTreeTest::RealEndTest, main_thread_weak_ptr_)); 778 base::Bind(&LayerTreeTest::RealEndTest, main_thread_weak_ptr_));
723 return; 779 return;
724 } 780 }
725 781
726 base::MessageLoop::current()->QuitWhenIdle(); 782 base::MessageLoop::current()->QuitWhenIdle();
727 } 783 }
728 784
729 void LayerTreeTest::DispatchAddAnimation(Layer* layer_to_receive_animation, 785 void LayerTreeTest::DispatchAddAnimation(Layer* layer_to_receive_animation,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 } 852 }
797 853
798 void LayerTreeTest::DispatchCompositeImmediately() { 854 void LayerTreeTest::DispatchCompositeImmediately() {
799 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread()); 855 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread());
800 if (layer_tree_host_) 856 if (layer_tree_host_)
801 layer_tree_host_->Composite(base::TimeTicks::Now()); 857 layer_tree_host_->Composite(base::TimeTicks::Now());
802 } 858 }
803 859
804 void LayerTreeTest::RunTest(CompositorMode mode, bool delegating_renderer) { 860 void LayerTreeTest::RunTest(CompositorMode mode, bool delegating_renderer) {
805 mode_ = mode; 861 mode_ = mode;
806 if (mode_ == CompositorMode::Threaded) { 862 if (mode_ == CompositorMode::THREADED || mode_ == CompositorMode::REMOTE) {
807 impl_thread_.reset(new base::Thread("Compositor")); 863 impl_thread_.reset(new base::Thread("Compositor"));
808 ASSERT_TRUE(impl_thread_->Start()); 864 ASSERT_TRUE(impl_thread_->Start());
809 } 865 }
810 866
811 main_task_runner_ = base::ThreadTaskRunnerHandle::Get(); 867 main_task_runner_ = base::ThreadTaskRunnerHandle::Get();
812 868
813 shared_bitmap_manager_.reset(new TestSharedBitmapManager); 869 shared_bitmap_manager_.reset(new TestSharedBitmapManager);
814 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager); 870 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager);
815 task_graph_runner_.reset(new TestTaskGraphRunner); 871 task_graph_runner_.reset(new TestTaskGraphRunner);
816 872
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 if (impl->active_tree()) 942 if (impl->active_tree())
887 return impl->active_tree()->source_frame_number(); 943 return impl->active_tree()->source_frame_number();
888 // Source frames start at 0, so this is invalid. 944 // Source frames start at 0, so this is invalid.
889 return -1; 945 return -1;
890 } 946 }
891 947
892 void LayerTreeTest::DestroyLayerTreeHost() { 948 void LayerTreeTest::DestroyLayerTreeHost() {
893 if (layer_tree_host_ && layer_tree_host_->root_layer()) 949 if (layer_tree_host_ && layer_tree_host_->root_layer())
894 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL); 950 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL);
895 layer_tree_host_ = nullptr; 951 layer_tree_host_ = nullptr;
952
953 DCHECK(!remote_proto_channel_bridge_.channel_main.HasReceiver());
954
955 // Destroying the LayerTreeHost should destroy the remote client
956 // LayerTreeHost.
957 DCHECK(!remote_client_layer_tree_host_);
958 }
959
960 void LayerTreeTest::DestroyRemoteClientHost() {
961 DCHECK(IsRemoteTest());
962 DCHECK(remote_client_layer_tree_host_);
963
964 remote_client_layer_tree_host_ = nullptr;
965 DCHECK(!remote_proto_channel_bridge_.channel_impl.HasReceiver());
966 }
967
968 void LayerTreeTest::CreateRemoteClientHost(
969 const proto::CompositorMessageToImpl& proto) {
970 DCHECK(IsRemoteTest());
971 DCHECK(!remote_client_layer_tree_host_);
972 DCHECK(impl_thread_);
973 DCHECK(proto.message_type() ==
974 proto::CompositorMessageToImpl::INITIALIZE_IMPL);
975
976 proto::InitializeImpl initialize_proto = proto.initialize_impl_message();
977 LayerTreeSettings settings;
978 settings.FromProtobuf(initialize_proto.layer_tree_settings());
979 remote_client_layer_tree_host_ = LayerTreeHostForTesting::Create(
980 this, mode_, client_.get(), &remote_proto_channel_bridge_.channel_impl,
981 nullptr, nullptr, task_graph_runner_.get(), settings,
982 base::ThreadTaskRunnerHandle::Get(), impl_thread_->task_runner(),
983 nullptr);
984
985 DCHECK(remote_proto_channel_bridge_.channel_impl.HasReceiver());
896 } 986 }
897 987
898 TaskGraphRunner* LayerTreeTest::task_graph_runner() const { 988 TaskGraphRunner* LayerTreeTest::task_graph_runner() const {
899 return task_graph_runner_.get(); 989 return task_graph_runner_.get();
900 } 990 }
901 991
902 LayerTreeHost* LayerTreeTest::layer_tree_host() { 992 LayerTreeHost* LayerTreeTest::layer_tree_host() {
903 // We check for a null task_runner_provider here as we sometimes ask for the 993 // We check for a null task_runner_provider here as we sometimes ask for the
904 // layer tree host when the task_runner_provider does not exist, often for 994 // layer tree host when the task_runner_provider does not exist, often for
905 // checking settings after a test has completed. For example, 995 // checking settings after a test has completed. For example,
906 // LTHPixelResourceTest::RunPixelResourceTest. See elsewhere in this file for 996 // LTHPixelResourceTest::RunPixelResourceTest. See elsewhere in this file for
907 // other examples. 997 // other examples.
908 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread() || 998 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread() ||
909 task_runner_provider()->IsMainThreadBlocked()); 999 task_runner_provider()->IsMainThreadBlocked());
910 return layer_tree_host_.get(); 1000 return layer_tree_host_.get();
911 } 1001 }
912 1002
913 ProxyMainForTest* LayerTreeTest::GetProxyMainForTest() const { 1003 ProxyMainForTest* LayerTreeTest::GetProxyMainForTest() const {
914 DCHECK(HasImplThread()); 1004 DCHECK(HasImplThread());
915 return static_cast<ProxyMainForTest*>(proxy()); 1005 return static_cast<ProxyMainForTest*>(proxy());
916 } 1006 }
917 1007
918 ProxyImplForTest* LayerTreeTest::GetProxyImplForTest() const { 1008 ProxyImplForTest* LayerTreeTest::GetProxyImplForTest() const {
919 DCHECK(HasImplThread()); 1009 DCHECK(HasImplThread());
920 ThreadedChannel* threaded_channel = 1010
921 static_cast<ThreadedChannel*>(GetProxyMainForTest()->channel_main()); 1011 if (IsRemoteTest()) {
922 ProxyImpl* proxy_impl = threaded_channel->GetProxyImplForTesting(); 1012 return GetRemoteChannelImplForTest()->proxy_impl_for_test();
1013 }
1014
1015 ProxyImplForTest* proxy_impl_for_test =
1016 GetThreadedChannelForTest()->proxy_impl_for_test();
923 1017
924 // We check for null ProxyImpl since ProxyImpl exists in the ThreadedChannel 1018 // We check for null ProxyImpl since ProxyImpl exists in the ThreadedChannel
925 // only after it is initialized. 1019 // only after it is initialized.
926 DCHECK(proxy_impl); 1020 DCHECK(proxy_impl_for_test);
927 return static_cast<ProxyImplForTest*>(proxy_impl); 1021 return proxy_impl_for_test;
1022 }
1023
1024 ThreadedChannelForTest* LayerTreeTest::GetThreadedChannelForTest() const {
1025 DCHECK(mode_ == CompositorMode::THREADED);
1026
1027 return GetProxyMainForTest()->threaded_channel_for_test();
1028 }
1029
1030 RemoteChannelImplForTest* LayerTreeTest::GetRemoteChannelImplForTest() const {
1031 DCHECK(IsRemoteTest());
1032 DCHECK(remote_client_layer_tree_host_);
1033
1034 return static_cast<RemoteChannelImplForTest*>(
1035 remote_client_layer_tree_host_->proxy());
928 } 1036 }
929 1037
930 } // namespace cc 1038 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698