Home | History | Annotate | Download | only in process
      1 // Copyright (c) 2013 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/process/launch.h"
      6 #include "build/build_config.h"
      7 
      8 namespace base {
      9 
     10 LaunchOptions::LaunchOptions()
     11     : wait(false),
     12 #if defined(OS_WIN)
     13       start_hidden(false),
     14       handles_to_inherit(NULL),
     15       inherit_handles(false),
     16       as_user(NULL),
     17       empty_desktop_name(false),
     18       job_handle(NULL),
     19       stdin_handle(NULL),
     20       stdout_handle(NULL),
     21       stderr_handle(NULL),
     22       force_breakaway_from_job_(false)
     23 #else
     24       clear_environ(false),
     25       fds_to_remap(NULL),
     26       maximize_rlimits(NULL),
     27       new_process_group(false)
     28 #if defined(OS_LINUX)
     29       , clone_flags(0)
     30       , allow_new_privs(false)
     31       , kill_on_parent_death(false)
     32 #endif  // OS_LINUX
     33 #if defined(OS_POSIX)
     34       , pre_exec_delegate(NULL)
     35 #endif  // OS_POSIX
     36 #if defined(OS_CHROMEOS)
     37       , ctrl_terminal_fd(-1)
     38 #endif  // OS_CHROMEOS
     39 #endif  // !defined(OS_WIN)
     40     {
     41 }
     42 
     43 LaunchOptions::~LaunchOptions() {
     44 }
     45 
     46 LaunchOptions LaunchOptionsForTest() {
     47   LaunchOptions options;
     48 #if defined(OS_LINUX)
     49   // To prevent accidental privilege sharing to an untrusted child, processes
     50   // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this
     51   // new child will be used for testing only.
     52   options.allow_new_privs = true;
     53 #endif
     54   return options;
     55 }
     56 
     57 }  // namespace base
     58