multiprocess_test.cc revision cce46a0c214b37e8da48c522c83037e8ffa4f9fd
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/test/multiprocess_test.h" 6 7#include "base/base_switches.h" 8#include "base/command_line.h" 9#include "base/files/file_path.h" 10#include "base/files/file_util.h" 11#include "build/build_config.h" 12 13namespace base { 14 15#if !defined(OS_ANDROID) && !defined(__ANDROID__) && !defined(__ANDROID_HOST__) 16Process SpawnMultiProcessTestChild( 17 const std::string& procname, 18 const CommandLine& base_command_line, 19 const LaunchOptions& options) { 20 CommandLine command_line(base_command_line); 21 // TODO(viettrungluu): See comment above |MakeCmdLine()| in the header file. 22 // This is a temporary hack, since |MakeCmdLine()| has to provide a full 23 // command line. 24 if (!command_line.HasSwitch(switches::kTestChildProcess)) 25 command_line.AppendSwitchASCII(switches::kTestChildProcess, procname); 26 27 return LaunchProcess(command_line, options); 28} 29#endif // !defined(OS_ANDROID) 30 31CommandLine GetMultiProcessTestChildBaseCommandLine() { 32 CommandLine cmd_line = *CommandLine::ForCurrentProcess(); 33 cmd_line.SetProgram(MakeAbsoluteFilePath(cmd_line.GetProgram())); 34 return cmd_line; 35} 36 37// MultiProcessTest ------------------------------------------------------------ 38 39MultiProcessTest::MultiProcessTest() { 40} 41 42Process MultiProcessTest::SpawnChild(const std::string& procname) { 43 LaunchOptions options; 44#if defined(OS_WIN) 45 options.start_hidden = true; 46#endif 47 return SpawnChildWithOptions(procname, options); 48} 49 50Process MultiProcessTest::SpawnChildWithOptions( 51 const std::string& procname, 52 const LaunchOptions& options) { 53 return SpawnMultiProcessTestChild(procname, MakeCmdLine(procname), options); 54} 55 56CommandLine MultiProcessTest::MakeCmdLine(const std::string& procname) { 57 CommandLine command_line = GetMultiProcessTestChildBaseCommandLine(); 58 command_line.AppendSwitchASCII(switches::kTestChildProcess, procname); 59 return command_line; 60} 61 62} // namespace base 63