Index: chrome/browser/plugin_process_host.cc |
diff --git a/chrome/browser/plugin_process_host.cc b/chrome/browser/plugin_process_host.cc |
index 50ca1b9415f30601bb9b5d8d1b9da5dcae9454c1..9da52d265ed9043f452cebf3c899485ea36c9650 100644 |
--- a/chrome/browser/plugin_process_host.cc |
+++ b/chrome/browser/plugin_process_host.cc |
@@ -461,13 +461,11 @@ bool PluginProcessHost::Init(const FilePath& plugin_path, |
if (!PathService::Get(base::FILE_EXE, &exe_path)) |
return false; |
- std::wstring cmd_line(L"\""); |
- cmd_line += exe_path; |
- cmd_line += L"\""; |
+ CommandLine cmd_line(exe_path); |
if (logging::DialogsAreSuppressed()) |
- CommandLine::AppendSwitch(&cmd_line, switches::kNoErrorDialogs); |
+ cmd_line.AppendSwitch(switches::kNoErrorDialogs); |
- CommandLine browser_command_line; |
+ const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); |
// propagate the following switches to the plugin command line (along with |
// any associated values) if present in the browser command line |
@@ -492,8 +490,8 @@ bool PluginProcessHost::Init(const FilePath& plugin_path, |
for (int i = 0; i < arraysize(switch_names); ++i) { |
if (browser_command_line.HasSwitch(switch_names[i])) { |
- CommandLine::AppendSwitchWithValue( |
- &cmd_line, switch_names[i], |
+ cmd_line.AppendSwitchWithValue( |
+ switch_names[i], |
browser_command_line.GetSwitchValue(switch_names[i])); |
} |
} |
@@ -501,26 +499,26 @@ bool PluginProcessHost::Init(const FilePath& plugin_path, |
// If specified, prepend a launcher program to the command line. |
std::wstring plugin_launcher = |
browser_command_line.GetSwitchValue(switches::kPluginLauncher); |
- if (!plugin_launcher.empty()) |
- cmd_line = plugin_launcher + L" " + cmd_line; |
+ if (!plugin_launcher.empty()) { |
+ CommandLine new_cmd_line = CommandLine(plugin_launcher); |
+ new_cmd_line.AppendArguments(cmd_line, true); |
+ cmd_line = new_cmd_line; |
+ } |
if (!locale.empty()) { |
// Pass on the locale so the null plugin will use the right language in the |
// prompt to install the desired plugin. |
- CommandLine::AppendSwitchWithValue(&cmd_line, switches::kLang, locale); |
+ cmd_line.AppendSwitchWithValue(switches::kLang, locale); |
} |
- CommandLine::AppendSwitchWithValue(&cmd_line, |
- switches::kProcessType, |
- switches::kPluginProcess); |
+ cmd_line.AppendSwitchWithValue(switches::kProcessType, |
+ switches::kPluginProcess); |
- CommandLine::AppendSwitchWithValue(&cmd_line, |
- switches::kProcessChannelID, |
- channel_id_); |
+ cmd_line.AppendSwitchWithValue(switches::kProcessChannelID, |
+ channel_id_); |
- CommandLine::AppendSwitchWithValue(&cmd_line, |
- switches::kPluginPath, |
- plugin_path.ToWStringHack()); |
+ cmd_line.AppendSwitchWithValue(switches::kPluginPath, |
+ plugin_path.ToWStringHack()); |
bool in_sandbox = !browser_command_line.HasSwitch(switches::kNoSandbox) && |
browser_command_line.HasSwitch(switches::kSafePlugins); |
@@ -550,8 +548,10 @@ bool PluginProcessHost::Init(const FilePath& plugin_path, |
return false; |
} |
- result = broker_service->SpawnTarget(exe_path.c_str(), |
- cmd_line.c_str(), policy, &target); |
+ result = |
+ broker_service->SpawnTarget(exe_path.c_str(), |
+ cmd_line.command_line_string().c_str(), |
+ policy, &target); |
policy->Release(); |
if (sandbox::SBOX_ALL_OK != result) |
return false; |