158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file.
458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/process/launch.h"
658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace base {
858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)LaunchOptions::LaunchOptions()
1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    : wait(false),
1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(OS_WIN)
1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      start_hidden(false),
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      handles_to_inherit(NULL),
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      inherit_handles(false),
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      as_user(NULL),
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      empty_desktop_name(false),
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      job_handle(NULL),
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      stdin_handle(NULL),
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      stdout_handle(NULL),
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      stderr_handle(NULL),
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      force_breakaway_from_job_(false)
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#else
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      clear_environ(false),
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      fds_to_remap(NULL),
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      maximize_rlimits(NULL),
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      new_process_group(false)
2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(OS_LINUX)
2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      , clone_flags(0)
29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch      , allow_new_privs(false)
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif  // OS_LINUX
3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(OS_CHROMEOS)
3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      , ctrl_terminal_fd(-1)
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif  // OS_CHROMEOS
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif  // !defined(OS_WIN)
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    {
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)LaunchOptions::~LaunchOptions() {
3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochLaunchOptions LaunchOptionsForTest() {
42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  LaunchOptions options;
43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#if defined(OS_LINUX)
44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // To prevent accidental privilege sharing to an untrusted child, processes
45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this
46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // new child will be used for testing only.
47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  options.allow_new_privs = true;
48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif
49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  return options;
50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}
51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace base
53