Index: shell/child_process_host.cc |
diff --git a/shell/child_process_host.cc b/shell/child_process_host.cc |
index 8e3908f4893cbcf6b2533567f467bd9ad3b0c674..4318bc1fd1b3057e3766a85cc869c03c1474f755 100644 |
--- a/shell/child_process_host.cc |
+++ b/shell/child_process_host.cc |
@@ -16,9 +16,11 @@ |
#include "base/process/launch.h" |
#include "base/task_runner.h" |
#include "base/task_runner_util.h" |
+#include "build/build_config.h" |
#include "mojo/edk/embedder/embedder.h" |
#include "mojo/edk/embedder/platform_channel_pair.h" |
#include "mojo/public/cpp/system/message_pipe.h" |
+#include "shell/application_manager/native_application_options.h" |
#include "shell/child_switches.h" |
#include "shell/context.h" |
#include "shell/task_runners.h" |
@@ -29,6 +31,7 @@ struct ChildProcessHost::LaunchData { |
LaunchData() {} |
~LaunchData() {} |
+ NativeApplicationOptions options; |
base::FilePath child_path; |
mojo::embedder::PlatformChannelPair platform_channel_pair; |
std::string child_connection_id; |
@@ -42,15 +45,17 @@ ChildProcessHost::~ChildProcessHost() { |
DCHECK(!child_process_.IsValid()); |
} |
-void ChildProcessHost::Start(bool require_32_bit) { |
+void ChildProcessHost::Start(const NativeApplicationOptions& options) { |
DCHECK(!child_process_.IsValid()); |
scoped_ptr<LaunchData> launch_data(new LaunchData()); |
+ launch_data->options = options; |
launch_data->child_path = context_->mojo_shell_child_path(); |
#if defined(ARCH_CPU_64_BITS) |
- if (require_32_bit) |
+ if (options.require_32_bit) { |
launch_data->child_path = |
context_->mojo_shell_child_path().InsertBeforeExtensionASCII("_32"); |
+ } |
#endif |
// TODO(vtl): Add something for |slave_info|. |
// TODO(vtl): The "unretained this" is wrong (see also below). |
@@ -136,6 +141,9 @@ base::Process ChildProcessHost::DoLaunch(scoped_ptr<LaunchData> launch_data) { |
base::LaunchOptions options; |
options.fds_to_remap = &handle_passing_info; |
+#if defined(OS_LINUX) |
+ options.allow_new_privs = launch_data->options.allow_new_privs; |
+#endif |
DVLOG(2) << "Launching child with command line: " |
<< child_command_line.GetCommandLineString(); |
base::Process child_process = |