// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SANDBOX_MAC_SANDBOX_TEST_H_ #define SANDBOX_MAC_SANDBOX_TEST_H_ #include #include #include "base/command_line.h" #include "base/functional/callback.h" #include "base/process/process.h" #include "base/test/multiprocess_test.h" namespace sandbox { // Base class for multiprocess sandbox tests. This exists to override some // command line preparation behavior for spawned child processes. class SandboxTest : public base::MultiProcessTest { public: using CommandLineModifier = std::optional>; SandboxTest(); ~SandboxTest() override; // Launches a new test child process to run `procname`. If // `command_line_modifier` is not null, it will be run to modify the child // command line immediately before launch. Returns a handle to the launched // process. base::Process SpawnChildWithOptions( const std::string& procname, const base::LaunchOptions& options, CommandLineModifier command_line_modifier = std::nullopt); // Same as SpawnChildWithOptions, but uses a default LaunchOptions value. base::Process SpawnChild( const std::string& procname, CommandLineModifier command_line_modifier = std::nullopt); }; } // namespace sandbox #endif // SANDBOX_MAC_SANDBOX_TEST_H_