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

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: Exports not needed in FakeRemoteChannel class. 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
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;
476 default:
vmpstr 2016/01/28 22:48:27 nit: Don't add default if you're handling all case
Khushal 2016/01/29 00:08:00 done.
477 NOTREACHED();
457 } 478 }
458 layer_tree_host->InitializeForTesting( 479 layer_tree_host->InitializeForTesting(
459 std::move(task_runner_provider), std::move(proxy), 480 std::move(task_runner_provider), std::move(proxy),
460 std::move(external_begin_frame_source)); 481 std::move(external_begin_frame_source));
461 return layer_tree_host; 482 return layer_tree_host;
462 } 483 }
463 484
464 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl( 485 scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl(
465 LayerTreeHostImplClient* host_impl_client) override { 486 LayerTreeHostImplClient* host_impl_client) override {
466 return LayerTreeHostImplForTesting::Create( 487 return LayerTreeHostImplForTesting::Create(
(...skipping 24 matching lines...) Expand all
491 test_hooks_(test_hooks), 512 test_hooks_(test_hooks),
492 test_started_(false) {} 513 test_started_(false) {}
493 514
494 TestHooks* test_hooks_; 515 TestHooks* test_hooks_;
495 bool test_started_; 516 bool test_started_;
496 }; 517 };
497 518
498 LayerTreeTest::LayerTreeTest() 519 LayerTreeTest::LayerTreeTest()
499 : output_surface_(nullptr), 520 : output_surface_(nullptr),
500 external_begin_frame_source_(nullptr), 521 external_begin_frame_source_(nullptr),
522 remote_proto_channel_bridge_(this),
501 beginning_(false), 523 beginning_(false),
502 end_when_begin_returns_(false), 524 end_when_begin_returns_(false),
503 timed_out_(false), 525 timed_out_(false),
504 scheduled_(false), 526 scheduled_(false),
505 started_(false), 527 started_(false),
506 ended_(false), 528 ended_(false),
507 delegating_renderer_(false), 529 delegating_renderer_(false),
508 verify_property_trees_(true), 530 verify_property_trees_(true),
509 timeout_seconds_(0), 531 timeout_seconds_(0),
510 weak_factory_(this) { 532 weak_factory_(this) {
511 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr(); 533 main_thread_weak_ptr_ = weak_factory_.GetWeakPtr();
512 534
513 // Tests should timeout quickly unless --cc-layer-tree-test-no-timeout was 535 // Tests should timeout quickly unless --cc-layer-tree-test-no-timeout was
514 // specified (for running in a debugger). 536 // specified (for running in a debugger).
515 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); 537 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
516 if (!command_line->HasSwitch(switches::kCCLayerTreeTestNoTimeout)) 538 if (!command_line->HasSwitch(switches::kCCLayerTreeTestNoTimeout))
517 timeout_seconds_ = 5; 539 timeout_seconds_ = 5;
518 } 540 }
519 541
520 LayerTreeTest::~LayerTreeTest() {} 542 LayerTreeTest::~LayerTreeTest() {}
521 543
544 Proxy* LayerTreeTest::remote_client_proxy() const {
545 DCHECK(IsRemoteTest());
546 return remote_client_layer_tree_host_
547 ? remote_client_layer_tree_host_->proxy()
548 : nullptr;
549 }
550
551 bool LayerTreeTest::IsRemoteTest() const {
552 return mode_ == CompositorMode::REMOTE;
553 }
554
522 void LayerTreeTest::EndTest() { 555 void LayerTreeTest::EndTest() {
523 if (ended_) 556 if (ended_)
524 return; 557 return;
525 ended_ = true; 558 ended_ = true;
526 559
527 // For the case where we EndTest during BeginTest(), set a flag to indicate 560 // For the case where we EndTest during BeginTest(), set a flag to indicate
528 // that the test should end the second BeginTest regains control. 561 // that the test should end the second BeginTest regains control.
529 if (beginning_) { 562 if (beginning_) {
530 end_when_begin_returns_ = true; 563 end_when_begin_returns_ = true;
531 } else { 564 } else {
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 695
663 void LayerTreeTest::WillBeginTest() { 696 void LayerTreeTest::WillBeginTest() {
664 layer_tree_host_->SetVisible(true); 697 layer_tree_host_->SetVisible(true);
665 } 698 }
666 699
667 void LayerTreeTest::DoBeginTest() { 700 void LayerTreeTest::DoBeginTest() {
668 client_ = LayerTreeHostClientForTesting::Create(this); 701 client_ = LayerTreeHostClientForTesting::Create(this);
669 702
670 scoped_ptr<FakeExternalBeginFrameSource> external_begin_frame_source; 703 scoped_ptr<FakeExternalBeginFrameSource> external_begin_frame_source;
671 if (settings_.use_external_begin_frame_source) { 704 if (settings_.use_external_begin_frame_source) {
705 DCHECK(!IsRemoteTest());
672 external_begin_frame_source.reset(new FakeExternalBeginFrameSource( 706 external_begin_frame_source.reset(new FakeExternalBeginFrameSource(
673 settings_.renderer_settings.refresh_rate)); 707 settings_.renderer_settings.refresh_rate));
674 external_begin_frame_source_ = external_begin_frame_source.get(); 708 external_begin_frame_source_ = external_begin_frame_source.get();
675 } 709 }
676 710
677 DCHECK(!impl_thread_ || impl_thread_->task_runner().get()); 711 DCHECK(!impl_thread_ || impl_thread_->task_runner().get());
678 layer_tree_host_ = LayerTreeHostForTesting::Create( 712
679 this, mode_, client_.get(), shared_bitmap_manager_.get(), 713 if (IsRemoteTest()) {
680 gpu_memory_buffer_manager_.get(), task_graph_runner_.get(), settings_, 714 DCHECK(impl_thread_);
681 base::ThreadTaskRunnerHandle::Get(), 715 layer_tree_host_ = LayerTreeHostForTesting::Create(
682 impl_thread_ ? impl_thread_->task_runner() : NULL, 716 this, mode_, client_.get(), &remote_proto_channel_bridge_.channel_main,
683 std::move(external_begin_frame_source)); 717 nullptr, nullptr, task_graph_runner_.get(), settings_,
718 base::ThreadTaskRunnerHandle::Get(), nullptr,
719 std::move(external_begin_frame_source));
720 DCHECK(remote_proto_channel_bridge_.channel_main.HasReceiver());
721 } else {
722 layer_tree_host_ = LayerTreeHostForTesting::Create(
723 this, mode_, client_.get(), nullptr, shared_bitmap_manager_.get(),
724 gpu_memory_buffer_manager_.get(), task_graph_runner_.get(), settings_,
725 base::ThreadTaskRunnerHandle::Get(),
726 impl_thread_ ? impl_thread_->task_runner() : NULL,
727 std::move(external_begin_frame_source));
728 }
729
684 ASSERT_TRUE(layer_tree_host_); 730 ASSERT_TRUE(layer_tree_host_);
685 731
686 started_ = true; 732 started_ = true;
687 beginning_ = true; 733 beginning_ = true;
688 SetupTree(); 734 SetupTree();
689 WillBeginTest(); 735 WillBeginTest();
690 BeginTest(); 736 BeginTest();
691 beginning_ = false; 737 beginning_ = false;
692 if (end_when_begin_returns_) 738 if (end_when_begin_returns_)
693 RealEndTest(); 739 RealEndTest();
(...skipping 20 matching lines...) Expand all
714 layer_tree_host_->root_layer()->SetIsDrawable(true); 760 layer_tree_host_->root_layer()->SetIsDrawable(true);
715 } 761 }
716 762
717 void LayerTreeTest::Timeout() { 763 void LayerTreeTest::Timeout() {
718 timed_out_ = true; 764 timed_out_ = true;
719 EndTest(); 765 EndTest();
720 } 766 }
721 767
722 void LayerTreeTest::RealEndTest() { 768 void LayerTreeTest::RealEndTest() {
723 // TODO(mithro): Make this method only end when not inside an impl frame. 769 // TODO(mithro): Make this method only end when not inside an impl frame.
724 if (layer_tree_host_ && !timed_out_ && 770 bool main_frame_will_happen;
725 proxy()->MainFrameWillHappenForTesting()) { 771 if (IsRemoteTest()) {
772 main_frame_will_happen =
773 remote_client_layer_tree_host_
774 ? remote_client_proxy()->MainFrameWillHappenForTesting()
775 : false;
776 } else {
777 main_frame_will_happen =
778 layer_tree_host_ ? proxy()->MainFrameWillHappenForTesting() : false;
779 }
780
781 if (main_frame_will_happen && !timed_out_) {
726 main_task_runner_->PostTask( 782 main_task_runner_->PostTask(
727 FROM_HERE, 783 FROM_HERE,
728 base::Bind(&LayerTreeTest::RealEndTest, main_thread_weak_ptr_)); 784 base::Bind(&LayerTreeTest::RealEndTest, main_thread_weak_ptr_));
729 return; 785 return;
730 } 786 }
731 787
732 base::MessageLoop::current()->QuitWhenIdle(); 788 base::MessageLoop::current()->QuitWhenIdle();
733 } 789 }
734 790
735 void LayerTreeTest::DispatchAddAnimation(Layer* layer_to_receive_animation, 791 void LayerTreeTest::DispatchAddAnimation(Layer* layer_to_receive_animation,
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 } 864 }
809 865
810 void LayerTreeTest::DispatchNextCommitWaitsForActivation() { 866 void LayerTreeTest::DispatchNextCommitWaitsForActivation() {
811 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread()); 867 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread());
812 if (layer_tree_host_) 868 if (layer_tree_host_)
813 layer_tree_host_->SetNextCommitWaitsForActivation(); 869 layer_tree_host_->SetNextCommitWaitsForActivation();
814 } 870 }
815 871
816 void LayerTreeTest::RunTest(CompositorMode mode, bool delegating_renderer) { 872 void LayerTreeTest::RunTest(CompositorMode mode, bool delegating_renderer) {
817 mode_ = mode; 873 mode_ = mode;
818 if (mode_ == CompositorMode::Threaded) { 874 if (mode_ == CompositorMode::THREADED || mode_ == CompositorMode::REMOTE) {
819 impl_thread_.reset(new base::Thread("Compositor")); 875 impl_thread_.reset(new base::Thread("Compositor"));
820 ASSERT_TRUE(impl_thread_->Start()); 876 ASSERT_TRUE(impl_thread_->Start());
821 } 877 }
822 878
823 main_task_runner_ = base::ThreadTaskRunnerHandle::Get(); 879 main_task_runner_ = base::ThreadTaskRunnerHandle::Get();
824 880
825 shared_bitmap_manager_.reset(new TestSharedBitmapManager); 881 shared_bitmap_manager_.reset(new TestSharedBitmapManager);
826 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager); 882 gpu_memory_buffer_manager_.reset(new TestGpuMemoryBufferManager);
827 task_graph_runner_.reset(new TestTaskGraphRunner); 883 task_graph_runner_.reset(new TestTaskGraphRunner);
828 884
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 if (impl->active_tree()) 954 if (impl->active_tree())
899 return impl->active_tree()->source_frame_number(); 955 return impl->active_tree()->source_frame_number();
900 // Source frames start at 0, so this is invalid. 956 // Source frames start at 0, so this is invalid.
901 return -1; 957 return -1;
902 } 958 }
903 959
904 void LayerTreeTest::DestroyLayerTreeHost() { 960 void LayerTreeTest::DestroyLayerTreeHost() {
905 if (layer_tree_host_ && layer_tree_host_->root_layer()) 961 if (layer_tree_host_ && layer_tree_host_->root_layer())
906 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL); 962 layer_tree_host_->root_layer()->SetLayerTreeHost(NULL);
907 layer_tree_host_ = nullptr; 963 layer_tree_host_ = nullptr;
964
965 DCHECK(!remote_proto_channel_bridge_.channel_main.HasReceiver());
966
967 // Destroying the LayerTreeHost should destroy the remote client
968 // LayerTreeHost.
969 DCHECK(!remote_client_layer_tree_host_);
970 }
971
972 void LayerTreeTest::DestroyRemoteClientHost() {
973 DCHECK(IsRemoteTest());
974 DCHECK(remote_client_layer_tree_host_);
975
976 remote_client_layer_tree_host_ = nullptr;
977 DCHECK(!remote_proto_channel_bridge_.channel_impl.HasReceiver());
978 }
979
980 void LayerTreeTest::CreateRemoteClientHost(
981 const proto::CompositorMessageToImpl& proto) {
982 DCHECK(IsRemoteTest());
983 DCHECK(!remote_client_layer_tree_host_);
984 DCHECK(impl_thread_);
985 DCHECK(proto.message_type() ==
986 proto::CompositorMessageToImpl::INITIALIZE_IMPL);
987
988 proto::InitializeImpl initialize_proto = proto.initialize_impl_message();
989 LayerTreeSettings settings;
990 settings.FromProtobuf(initialize_proto.layer_tree_settings());
991 remote_client_layer_tree_host_ = LayerTreeHostForTesting::Create(
992 this, mode_, client_.get(), &remote_proto_channel_bridge_.channel_impl,
993 nullptr, nullptr, task_graph_runner_.get(), settings,
994 base::ThreadTaskRunnerHandle::Get(), impl_thread_->task_runner(),
995 nullptr);
996
997 DCHECK(remote_proto_channel_bridge_.channel_impl.HasReceiver());
998 DCHECK(task_runner_provider()->HasImplThread());
908 } 999 }
909 1000
910 TaskGraphRunner* LayerTreeTest::task_graph_runner() const { 1001 TaskGraphRunner* LayerTreeTest::task_graph_runner() const {
911 return task_graph_runner_.get(); 1002 return task_graph_runner_.get();
912 } 1003 }
913 1004
1005 TaskRunnerProvider* LayerTreeTest::task_runner_provider() const {
1006 // All LayerTreeTests can use the task runner provider to access the impl
1007 // thread. In the remote mode, the impl thread of the compositor lives on
1008 // the client, so return the task runner provider owned by the remote client
1009 // LayerTreeHost.
1010 if (IsRemoteTest()) {
1011 return remote_client_layer_tree_host_
1012 ? remote_client_layer_tree_host_->task_runner_provider()
1013 : nullptr;
1014 }
1015 return layer_tree_host_ ? layer_tree_host_->task_runner_provider() : nullptr;
1016 }
1017
914 LayerTreeHost* LayerTreeTest::layer_tree_host() { 1018 LayerTreeHost* LayerTreeTest::layer_tree_host() {
915 // We check for a null task_runner_provider here as we sometimes ask for the 1019 // 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 1020 // layer tree host when the task_runner_provider does not exist, often for
917 // checking settings after a test has completed. For example, 1021 // checking settings after a test has completed. For example,
918 // LTHPixelResourceTest::RunPixelResourceTest. See elsewhere in this file for 1022 // LTHPixelResourceTest::RunPixelResourceTest. See elsewhere in this file for
919 // other examples. 1023 // other examples.
920 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread() || 1024 DCHECK(!task_runner_provider() || task_runner_provider()->IsMainThread() ||
921 task_runner_provider()->IsMainThreadBlocked()); 1025 task_runner_provider()->IsMainThreadBlocked());
922 return layer_tree_host_.get(); 1026 return layer_tree_host_.get();
923 } 1027 }
924 1028
925 ProxyMainForTest* LayerTreeTest::GetProxyMainForTest() const { 1029 ProxyMainForTest* LayerTreeTest::GetProxyMainForTest() const {
926 DCHECK(HasImplThread()); 1030 DCHECK(HasImplThread());
927 return static_cast<ProxyMainForTest*>(proxy()); 1031 return static_cast<ProxyMainForTest*>(proxy());
928 } 1032 }
929 1033
930 ProxyImplForTest* LayerTreeTest::GetProxyImplForTest() const { 1034 ProxyImplForTest* LayerTreeTest::GetProxyImplForTest() const {
931 DCHECK(HasImplThread()); 1035 DCHECK(HasImplThread());
932 ThreadedChannel* threaded_channel = 1036
933 static_cast<ThreadedChannel*>(GetProxyMainForTest()->channel_main()); 1037 if (IsRemoteTest()) {
934 ProxyImpl* proxy_impl = threaded_channel->GetProxyImplForTesting(); 1038 return GetRemoteChannelImplForTest()->proxy_impl_for_test();
1039 }
1040
1041 ProxyImplForTest* proxy_impl_for_test =
1042 GetThreadedChannelForTest()->proxy_impl_for_test();
935 1043
936 // We check for null ProxyImpl since ProxyImpl exists in the ThreadedChannel 1044 // We check for null ProxyImpl since ProxyImpl exists in the ThreadedChannel
937 // only after it is initialized. 1045 // only after it is initialized.
938 DCHECK(proxy_impl); 1046 DCHECK(proxy_impl_for_test);
939 return static_cast<ProxyImplForTest*>(proxy_impl); 1047 return proxy_impl_for_test;
1048 }
1049
1050 ThreadedChannelForTest* LayerTreeTest::GetThreadedChannelForTest() const {
1051 DCHECK(mode_ == CompositorMode::THREADED);
1052
1053 return GetProxyMainForTest()->threaded_channel_for_test();
1054 }
1055
1056 RemoteChannelImplForTest* LayerTreeTest::GetRemoteChannelImplForTest() const {
1057 DCHECK(IsRemoteTest());
1058 DCHECK(remote_client_layer_tree_host_);
1059
1060 return static_cast<RemoteChannelImplForTest*>(
1061 remote_client_layer_tree_host_->proxy());
940 } 1062 }
941 1063
942 } // namespace cc 1064 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/layer_tree_test.h ('k') | cc/test/proxy_main_for_test.h » ('j') | cc/test/test_hooks.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698