Home | History | Annotate | Download | only in test
      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 
     10 namespace base {
     11 
     12 MultiProcessTest::MultiProcessTest() {
     13 }
     14 
     15 ProcessHandle MultiProcessTest::SpawnChild(const std::string& procname,
     16                                            bool debug_on_start) {
     17   LaunchOptions options;
     18 #if defined(OS_WIN)
     19   options.start_hidden = true;
     20 #endif
     21   return SpawnChildWithOptions(procname, options, debug_on_start);
     22 }
     23 
     24 #if !defined(OS_ANDROID)
     25 ProcessHandle MultiProcessTest::SpawnChildWithOptions(
     26     const std::string& procname,
     27     const LaunchOptions& options,
     28     bool debug_on_start) {
     29   ProcessHandle handle = kNullProcessHandle;
     30   LaunchProcess(MakeCmdLine(procname, debug_on_start), options, &handle);
     31   return handle;
     32 }
     33 #endif
     34 
     35 #if defined(OS_POSIX)
     36 ProcessHandle MultiProcessTest::SpawnChild(
     37     const std::string& procname,
     38     const FileHandleMappingVector& fds_to_map,
     39     bool debug_on_start) {
     40   LaunchOptions options;
     41   options.fds_to_remap = &fds_to_map;
     42   return SpawnChildWithOptions(procname, options, debug_on_start);
     43 }
     44 #endif
     45 
     46 CommandLine MultiProcessTest::MakeCmdLine(const std::string& procname,
     47                                           bool debug_on_start) {
     48   CommandLine cl(*CommandLine::ForCurrentProcess());
     49   cl.AppendSwitchASCII(switches::kTestChildProcess, procname);
     50   if (debug_on_start)
     51     cl.AppendSwitch(switches::kDebugOnStart);
     52   return cl;
     53 }
     54 
     55 }  // namespace base
     56