// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/test/multiprocess_test.h" #include "base/base_switches.h" #include "base/command_line.h" namespace base { #if !defined(OS_ANDROID) ProcessHandle SpawnMultiProcessTestChild( const std::string& procname, const CommandLine& base_command_line, const LaunchOptions& options) { CommandLine command_line(base_command_line); // TODO(viettrungluu): See comment above |MakeCmdLine()| in the header file. // This is a temporary hack, since |MakeCmdLine()| has to provide a full // command line. if (!command_line.HasSwitch(switches::kTestChildProcess)) command_line.AppendSwitchASCII(switches::kTestChildProcess, procname); ProcessHandle handle = kNullProcessHandle; LaunchProcess(command_line, options, &handle); return handle; } #endif // !defined(OS_ANDROID) CommandLine GetMultiProcessTestChildBaseCommandLine() { return *CommandLine::ForCurrentProcess(); } // MultiProcessTest ------------------------------------------------------------ MultiProcessTest::MultiProcessTest() { } ProcessHandle MultiProcessTest::SpawnChild(const std::string& procname) { LaunchOptions options; #if defined(OS_WIN) options.start_hidden = true; #endif return SpawnChildWithOptions(procname, options); } ProcessHandle MultiProcessTest::SpawnChildWithOptions( const std::string& procname, const LaunchOptions& options) { return SpawnMultiProcessTestChild(procname, MakeCmdLine(procname), options); } CommandLine MultiProcessTest::MakeCmdLine(const std::string& procname) { CommandLine command_line = GetMultiProcessTestChildBaseCommandLine(); command_line.AppendSwitchASCII(switches::kTestChildProcess, procname); return command_line; } } // namespace base