Index: content/renderer/render_thread_impl.cc |
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
index d7c9fc819df6e483fda59f4af9691e40a2e74132..fb9f65cf601db918aeaa5481c2e1fa370351c6d3 100644 |
--- a/content/renderer/render_thread_impl.cc |
+++ b/content/renderer/render_thread_impl.cc |
@@ -141,6 +141,8 @@ |
#include "net/base/port_util.h" |
#include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
#include "net/base/url_util.h" |
+#include "services/shell/public/cpp/interface_provider.h" |
+#include "services/shell/public/cpp/interface_registry.h" |
#include "skia/ext/event_tracer_impl.h" |
#include "skia/ext/skia_memory_dump_provider.h" |
#include "third_party/WebKit/public/platform/WebImageGenerator.h" |
@@ -608,6 +610,7 @@ RenderThreadImpl::RenderThreadImpl( |
: ChildThreadImpl(Options::Builder() |
.InBrowserProcess(params) |
.UseMojoChannel(true) |
+ .AutoStartMojoShellConnection(false) |
.Build()), |
renderer_scheduler_(std::move(scheduler)), |
categorized_worker_pool_(new CategorizedWorkerPool()) { |
@@ -619,7 +622,10 @@ RenderThreadImpl::RenderThreadImpl( |
RenderThreadImpl::RenderThreadImpl( |
std::unique_ptr<base::MessageLoop> main_message_loop, |
std::unique_ptr<scheduler::RendererScheduler> scheduler) |
- : ChildThreadImpl(Options::Builder().UseMojoChannel(true).Build()), |
+ : ChildThreadImpl(Options::Builder() |
+ .UseMojoChannel(true) |
+ .AutoStartMojoShellConnection(false) |
+ .Build()), |
renderer_scheduler_(std::move(scheduler)), |
main_message_loop_(std::move(main_message_loop)), |
categorized_worker_pool_(new CategorizedWorkerPool()) { |
@@ -646,10 +652,8 @@ void RenderThreadImpl::Init( |
ChildProcess::current()->set_main_thread(this); |
#if defined(MOJO_SHELL_CLIENT) |
- if (IsRunningInMash()) { |
- auto* shell_connection = ChildThread::Get()->GetMojoShellConnection(); |
- ui::GpuService::Initialize(shell_connection->GetConnector()); |
- } |
+ if (IsRunningInMash()) |
+ ui::GpuService::Initialize(GetMojoShellConnection()->GetConnector()); |
#endif |
InitializeWebKit(resource_task_queue); |
@@ -723,6 +727,16 @@ void RenderThreadImpl::Init( |
AddFilter((new ServiceWorkerContextMessageFilter())->GetFilter()); |
+#if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA) |
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kUseMusInRenderer)) { |
+ CreateRenderWidgetWindowTreeClientFactory(GetMojoShellConnection()); |
+ } |
+#endif |
+ |
+ // Must be called before RenderThreadStarted() below. |
+ StartMojoShellConnection(); |
+ |
GetContentClient()->renderer()->RenderThreadStarted(); |
InitSkiaEventTracer(); |
@@ -848,15 +862,6 @@ void RenderThreadImpl::Init( |
GetInterfaceRegistry()->AddInterface(base::Bind(CreateFrameFactory)); |
GetInterfaceRegistry()->AddInterface(base::Bind(CreateEmbeddedWorkerSetup)); |
-#if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA) |
- // We may not have a MojoShellConnection object in tests that directly |
- // instantiate a RenderThreadImpl. |
- if (ChildThread::Get()->GetMojoShellConnection() && |
- base::CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kUseMusInRenderer)) |
- CreateRenderWidgetWindowTreeClientFactory(); |
-#endif |
- |
GetRemoteInterfaces()->GetInterface( |
mojo::GetProxy(&storage_partition_service_)); |
@@ -1822,7 +1827,7 @@ RenderThreadImpl::CreateCompositorOutputSurface( |
use_software = true; |
#if defined(MOJO_SHELL_CLIENT) && defined(USE_AURA) |
- if (ChildThread::Get()->GetMojoShellConnection() && !use_software && |
+ if (GetMojoShellConnection() && !use_software && |
command_line.HasSwitch(switches::kUseMusInRenderer)) { |
RenderWidgetMusConnection* connection = |
RenderWidgetMusConnection::GetOrCreate(routing_id); |