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

Unified Diff: content/child/child_thread_impl.cc

Issue 2389193004: Always use ChannelMojo for content child processes. (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « content/child/child_thread_impl.h ('k') | content/common/child_process_host_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/child/child_thread_impl.cc
diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc
index 84261823a3351dc24057d20307c45a7db93680b2..f6ce618d821d33d0f8a04edbf321e89cd28b1d6e 100644
--- a/content/child/child_thread_impl.cc
+++ b/content/child/child_thread_impl.cc
@@ -61,7 +61,6 @@
#include "ipc/ipc_channel_mojo.h"
#include "ipc/ipc_logging.h"
#include "ipc/ipc_platform_file.h"
-#include "ipc/ipc_switches.h"
#include "ipc/ipc_sync_channel.h"
#include "ipc/ipc_sync_message_filter.h"
#include "mojo/edk/embedder/embedder.h"
@@ -293,14 +292,7 @@ ChildThread* ChildThread::Get() {
}
ChildThreadImpl::Options::Options()
- : channel_name(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
- switches::kProcessChannelID)),
- use_mojo_channel(base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kMojoApplicationChannelToken) ||
- base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kMojoChannelToken)),
- auto_start_mojo_shell_connection(true),
- connect_to_browser(false) {}
+ : auto_start_mojo_shell_connection(true), connect_to_browser(false) {}
ChildThreadImpl::Options::Options(const Options& other) = default;
@@ -314,18 +306,11 @@ ChildThreadImpl::Options::Builder&
ChildThreadImpl::Options::Builder::InBrowserProcess(
const InProcessChildThreadParams& params) {
options_.browser_process_io_runner = params.io_runner();
- options_.channel_name = params.channel_name();
options_.in_process_application_token = params.application_token();
return *this;
}
ChildThreadImpl::Options::Builder&
-ChildThreadImpl::Options::Builder::UseMojoChannel(bool use_mojo_channel) {
- options_.use_mojo_channel = use_mojo_channel;
- return *this;
-}
-
-ChildThreadImpl::Options::Builder&
ChildThreadImpl::Options::Builder::AutoStartMojoShellConnection(
bool auto_start) {
options_.auto_start_mojo_shell_connection = auto_start;
@@ -340,13 +325,6 @@ ChildThreadImpl::Options::Builder::ConnectToBrowser(
}
ChildThreadImpl::Options::Builder&
-ChildThreadImpl::Options::Builder::WithChannelName(
- const std::string& channel_name) {
- options_.channel_name = channel_name;
- return *this;
-}
-
-ChildThreadImpl::Options::Builder&
ChildThreadImpl::Options::Builder::AddStartupFilter(
IPC::MessageFilter* filter) {
options_.startup_filters.push_back(filter);
@@ -407,46 +385,35 @@ scoped_refptr<base::SequencedTaskRunner> ChildThreadImpl::GetIOTaskRunner() {
return ChildProcess::current()->io_task_runner();
}
-void ChildThreadImpl::ConnectChannel(bool use_mojo_channel) {
- bool create_pipe_now = true;
- if (use_mojo_channel) {
- VLOG(1) << "Mojo is enabled on child";
- std::string channel_token;
- mojo::ScopedMessagePipeHandle handle;
- if (!IsInBrowserProcess()) {
- channel_token =
- base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
- switches::kMojoChannelToken);
- }
-
- if (!channel_token.empty()) {
- // TODO(rockot): Remove all paths which lead to this branch. The Channel
- // connection should always be established by a shell connection from the
- // browser. http://crbug.com/623396.
- handle = mojo::edk::CreateChildMessagePipe(channel_token);
- } else {
- DCHECK(mojo_shell_connection_);
- IPC::mojom::ChannelBootstrapPtr bootstrap;
- handle = mojo::GetProxy(&bootstrap).PassMessagePipe();
- mojo_shell_connection_->AddConnectionFilter(
- base::MakeUnique<ChannelBootstrapFilter>(bootstrap.PassInterface()));
- }
+void ChildThreadImpl::ConnectChannel() {
+ std::string channel_token;
+ mojo::ScopedMessagePipeHandle handle;
+ if (!IsInBrowserProcess()) {
+ channel_token = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ switches::kMojoChannelToken);
+ }
- DCHECK(handle.is_valid());
- channel_->Init(
- IPC::ChannelMojo::CreateClientFactory(
- std::move(handle), ChildProcess::current()->io_task_runner()),
- create_pipe_now);
- return;
+ if (!channel_token.empty()) {
+ // TODO(rockot): Remove all paths which lead to this branch. The Channel
+ // connection should always be established by a shell connection from the
+ // browser. http://crbug.com/623396.
+ handle = mojo::edk::CreateChildMessagePipe(channel_token);
+ } else {
+ DCHECK(mojo_shell_connection_);
+ IPC::mojom::ChannelBootstrapPtr bootstrap;
+ handle = mojo::GetProxy(&bootstrap).PassMessagePipe();
+ mojo_shell_connection_->AddConnectionFilter(
+ base::MakeUnique<ChannelBootstrapFilter>(bootstrap.PassInterface()));
}
- VLOG(1) << "Mojo is disabled on child";
- channel_->Init(channel_name_, IPC::Channel::MODE_CLIENT, create_pipe_now);
+ DCHECK(handle.is_valid());
+ channel_->Init(
+ IPC::ChannelMojo::CreateClientFactory(
+ std::move(handle), ChildProcess::current()->io_task_runner()),
+ true /* create_pipe_now */);
}
void ChildThreadImpl::Init(const Options& options) {
- channel_name_ = options.channel_name;
-
g_lazy_tls.Pointer()->Set(this);
on_channel_error_called_ = false;
message_loop_ = base::MessageLoop::current();
@@ -575,7 +542,7 @@ void ChildThreadImpl::Init(const Options& options) {
base::Bind(&ChildThreadImpl::OnRouteProviderRequest,
base::Unretained(this)));
- ConnectChannel(options.use_mojo_channel);
+ ConnectChannel();
// This must always be done after ConnectChannel, because ConnectChannel() may
// add a ConnectionFilter to the connection.
« no previous file with comments | « content/child/child_thread_impl.h ('k') | content/common/child_process_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698