Index: content/browser/renderer_host/render_process_host_impl.cc |
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc |
index 29fe5b2a57909538c6b9b133daa389a830675696..49a1881cd35be094c8aa4c5cb6cb7155150bd976 100644 |
--- a/content/browser/renderer_host/render_process_host_impl.cc |
+++ b/content/browser/renderer_host/render_process_host_impl.cc |
@@ -169,6 +169,8 @@ |
#include "mojo/edk/embedder/embedder.h" |
#include "net/url_request/url_request_context_getter.h" |
#include "ppapi/shared_impl/ppapi_switches.h" |
+#include "services/shell/public/cpp/interface_provider.h" |
+#include "services/shell/public/cpp/interface_registry.h" |
#include "services/shell/runner/common/switches.h" |
#include "storage/browser/fileapi/sandbox_file_system_backend.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
@@ -603,6 +605,8 @@ RenderProcessHostImpl::RenderProcessHostImpl( |
#endif // defined(OS_MACOSX) |
#endif // USE_ATTACHMENT_BROKER |
+ scoped_refptr<base::SequencedTaskRunner> io_task_runner = |
+ BrowserThread::GetTaskRunnerForThread(BrowserThread::IO); |
shell::Connector* connector = |
BrowserContext::GetShellConnectorFor(browser_context_); |
// Some embedders may not initialize Mojo or the shell connector for a browser |
@@ -615,15 +619,14 @@ RenderProcessHostImpl::RenderProcessHostImpl( |
if (!MojoShellConnection::GetForProcess()) { |
shell::mojom::ServiceRequest request = mojo::GetProxy(&test_service_); |
MojoShellConnection::SetForProcess(MojoShellConnection::Create( |
- std::move(request))); |
+ std::move(request), io_task_runner)); |
} |
connector = MojoShellConnection::GetForProcess()->GetConnector(); |
} |
mojo_child_connection_.reset(new MojoChildConnection( |
kRendererMojoApplicationName, |
- base::StringPrintf("%d_%d", id_, instance_id_++), |
- child_token_, |
- connector)); |
+ base::StringPrintf("%d_%d", id_, instance_id_++), child_token_, connector, |
+ io_task_runner)); |
} |
// static |
@@ -763,8 +766,7 @@ bool RenderProcessHostImpl::Init() { |
in_process_renderer_.reset( |
g_renderer_main_thread_factory(InProcessChildThreadParams( |
channel_id, |
- BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO) |
- ->task_runner(), |
+ BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), |
mojo_channel_token_, |
mojo_child_connection_->service_token()))); |
@@ -1130,16 +1132,11 @@ void RenderProcessHostImpl::NotifyTimezoneChange(const std::string& zone_id) { |
} |
shell::InterfaceRegistry* RenderProcessHostImpl::GetInterfaceRegistry() { |
- return GetChildConnection()->GetInterfaceRegistry(); |
+ return mojo_child_connection_->GetInterfaceRegistry(); |
} |
shell::InterfaceProvider* RenderProcessHostImpl::GetRemoteInterfaces() { |
- return GetChildConnection()->GetRemoteInterfaces(); |
-} |
- |
-shell::Connection* RenderProcessHostImpl::GetChildConnection() { |
- DCHECK(mojo_child_connection_); |
- return mojo_child_connection_->connection(); |
+ return mojo_child_connection_->GetRemoteInterfaces(); |
} |
std::unique_ptr<base::SharedPersistentMemoryAllocator> |
@@ -2456,9 +2453,8 @@ void RenderProcessHostImpl::ProcessDied(bool already_dead, |
connector = MojoShellConnection::GetForProcess()->GetConnector(); |
mojo_child_connection_.reset(new MojoChildConnection( |
kRendererMojoApplicationName, |
- base::StringPrintf("%d_%d", id_, instance_id_++), |
- child_token_, |
- connector)); |
+ base::StringPrintf("%d_%d", id_, instance_id_++), child_token_, connector, |
+ BrowserThread::GetTaskRunnerForThread(BrowserThread::IO))); |
within_process_died_observer_ = true; |
NotificationService::current()->Notify( |