Index: chrome/browser/service_process/service_process_control.cc |
diff --git a/chrome/browser/service_process/service_process_control.cc b/chrome/browser/service_process/service_process_control.cc |
index 3650429c38d3033f0a70b6d142ee5fdb324994ed..193f1f08d97614e22ee4f5970f431b72e176dda8 100644 |
--- a/chrome/browser/service_process/service_process_control.cc |
+++ b/chrome/browser/service_process/service_process_control.cc |
@@ -18,18 +18,12 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/upgrade_detector.h" |
-#include "chrome/common/chrome_switches.h" |
#include "chrome/common/service_messages.h" |
#include "chrome/common/service_process_util.h" |
-#include "components/cloud_devices/common/cloud_devices_switches.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/notification_service.h" |
-#include "content/public/common/child_process_host.h" |
-#include "google_apis/gaia/gaia_switches.h" |
-#include "ui/base/ui_base_switches.h" |
using content::BrowserThread; |
-using content::ChildProcessHost; |
// ServiceProcessControl implementation. |
ServiceProcessControl::ServiceProcessControl() { |
@@ -118,47 +112,9 @@ void ServiceProcessControl::Launch(const base::Closure& success_task, |
UMA_HISTOGRAM_ENUMERATION("CloudPrint.ServiceEvents", SERVICE_EVENT_LAUNCH, |
SERVICE_EVENT_MAX); |
- // A service process should have a different mechanism for starting, but now |
- // we start it as if it is a child process. |
- |
-#if defined(OS_LINUX) |
- int flags = ChildProcessHost::CHILD_ALLOW_SELF; |
-#else |
- int flags = ChildProcessHost::CHILD_NORMAL; |
-#endif |
- |
- base::FilePath exe_path = ChildProcessHost::GetChildPath(flags); |
- if (exe_path.empty()) |
- NOTREACHED() << "Unable to get service process binary name."; |
- |
- CommandLine* cmd_line = new CommandLine(exe_path); |
- cmd_line->AppendSwitchASCII(switches::kProcessType, |
- switches::kServiceProcess); |
- |
- static const char* const kSwitchesToCopy[] = { |
- switches::kCloudPrintSetupProxy, |
- switches::kCloudPrintURL, |
- switches::kCloudPrintXmppEndpoint, |
-#if defined(OS_WIN) |
- switches::kEnableCloudPrintXps, |
-#endif |
- switches::kEnableLogging, |
- switches::kIgnoreUrlFetcherCertRequests, |
- switches::kLang, |
- switches::kLoggingLevel, |
- switches::kLsoUrl, |
- switches::kNoServiceAutorun, |
- switches::kUserDataDir, |
- switches::kV, |
- switches::kVModule, |
- switches::kWaitForDebugger, |
- }; |
- cmd_line->CopySwitchesFrom(*CommandLine::ForCurrentProcess(), |
- kSwitchesToCopy, |
- arraysize(kSwitchesToCopy)); |
- |
+ scoped_ptr<base::CommandLine> cmd_line(CreateServiceProcessCommandLine()); |
// And then start the process asynchronously. |
- launcher_ = new Launcher(this, cmd_line); |
+ launcher_ = new Launcher(this, cmd_line.Pass()); |
launcher_->Run(base::Bind(&ServiceProcessControl::OnProcessLaunched, |
base::Unretained(this))); |
} |
@@ -356,10 +312,11 @@ ServiceProcessControl* ServiceProcessControl::GetInstance() { |
return Singleton<ServiceProcessControl>::get(); |
} |
-ServiceProcessControl::Launcher::Launcher(ServiceProcessControl* process, |
- CommandLine* cmd_line) |
+ServiceProcessControl::Launcher::Launcher( |
+ ServiceProcessControl* process, |
+ scoped_ptr<base::CommandLine> cmd_line) |
: process_(process), |
- cmd_line_(cmd_line), |
+ cmd_line_(cmd_line.Pass()), |
launched_(false), |
retry_count_(0), |
process_handle_(base::kNullProcessHandle) { |