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

Unified Diff: content/renderer/render_thread_impl.cc

Issue 2111353002: Move content's shell connections to the IO thread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
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);
« no previous file with comments | « content/renderer/mus/render_widget_window_tree_client_factory.cc ('k') | content/renderer/renderer_blink_platform_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698