Avi Drissman | 4e1b7bc3 | 2022-09-15 14:03:50 | [diff] [blame] | 1 | // Copyright 2017 The Chromium Authors |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 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 "content/browser/sandbox_parameters_mac.h" |
| 6 | |
| 7 | #include <unistd.h> |
| 8 | |
Arthur Sonzogni | c686e8f | 2024-01-11 08:36:37 | [diff] [blame] | 9 | #include <optional> |
| 10 | |
Avi Drissman | d4f0708 | 2023-05-12 18:05:44 | [diff] [blame] | 11 | #include "base/apple/bundle_locations.h" |
Avi Drissman | eac566b0 | 2023-08-18 02:56:21 | [diff] [blame] | 12 | #include "base/apple/foundation_util.h" |
Hans Wennborg | da08b736 | 2020-05-14 17:30:50 | [diff] [blame] | 13 | #include "base/check.h" |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 14 | #include "base/command_line.h" |
Greg Kerr | f46f3187 | 2019-08-08 20:22:44 | [diff] [blame] | 15 | #include "base/feature_list.h" |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 16 | #include "base/files/file_util.h" |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 17 | #include "base/mac/mac_util.h" |
Robert Sesek | 6a9e65f | 2019-08-14 20:02:34 | [diff] [blame] | 18 | #include "base/no_destructor.h" |
Peter Boström | b41d6ee | 2024-11-20 15:49:39 | [diff] [blame] | 19 | #include "base/notreached.h" |
Greg Kerr | 4fa6e52 | 2017-07-10 19:00:45 | [diff] [blame] | 20 | #include "base/numerics/checked_math.h" |
Robert Sesek | 34f68f31 | 2019-01-14 20:25:11 | [diff] [blame] | 21 | #include "base/strings/string_number_conversions.h" |
Greg Kerr | 51462da | 2018-01-31 23:14:25 | [diff] [blame] | 22 | #include "base/strings/stringprintf.h" |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 23 | #include "base/strings/sys_string_conversions.h" |
Sebastien Marchand | 75a7cdf | 2018-11-13 23:47:03 | [diff] [blame] | 24 | #include "base/system/sys_info.h" |
Mark Rowe | e5ada49 | 2023-06-23 14:48:49 | [diff] [blame] | 25 | #include "content/browser/mac_helpers.h" |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 26 | #include "content/public/browser/content_browser_client.h" |
| 27 | #include "content/public/common/content_client.h" |
Greg Kerr | f46f3187 | 2019-08-08 20:22:44 | [diff] [blame] | 28 | #include "content/public/common/content_features.h" |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 29 | #include "content/public/common/content_switches.h" |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 30 | #include "sandbox/mac/sandbox_serializer.h" |
Robert Sesek | 7838cee1 | 2021-04-14 18:39:22 | [diff] [blame] | 31 | #include "sandbox/policy/mac/params.h" |
Robert Sesek | 7d0b49b | 2020-07-08 18:31:27 | [diff] [blame] | 32 | #include "sandbox/policy/mac/sandbox_mac.h" |
Alex Gough | eb6a38f | 2021-10-22 01:55:13 | [diff] [blame] | 33 | #include "sandbox/policy/mojom/sandbox.mojom.h" |
Robert Sesek | 7d0b49b | 2020-07-08 18:31:27 | [diff] [blame] | 34 | #include "sandbox/policy/switches.h" |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 35 | |
| 36 | namespace content { |
| 37 | |
Greg Kerr | 4fa6e52 | 2017-07-10 19:00:45 | [diff] [blame] | 38 | namespace { |
| 39 | |
Arthur Sonzogni | c686e8f | 2024-01-11 08:36:37 | [diff] [blame] | 40 | std::optional<base::FilePath>& GetNetworkTestCertsDirectory() { |
Kenneth Russell | 1c9a9ab | 2021-02-10 23:19:50 | [diff] [blame] | 41 | // Set by SetNetworkTestCertsDirectoryForTesting(). |
Arthur Sonzogni | c686e8f | 2024-01-11 08:36:37 | [diff] [blame] | 42 | static base::NoDestructor<std::optional<base::FilePath>> |
Kenneth Russell | 1c9a9ab | 2021-02-10 23:19:50 | [diff] [blame] | 43 | network_test_certs_dir; |
| 44 | return *network_test_certs_dir; |
| 45 | } |
Robert Sesek | 6a9e65f | 2019-08-14 20:02:34 | [diff] [blame] | 46 | |
Greg Kerr | 4fa6e52 | 2017-07-10 19:00:45 | [diff] [blame] | 47 | // Produce the OS version as an integer "1010", etc. and pass that to the |
| 48 | // profile. The profile converts the string back to a number and can do |
| 49 | // comparison operations on OS version. |
| 50 | std::string GetOSVersion() { |
| 51 | int32_t major_version, minor_version, bugfix_version; |
| 52 | base::SysInfo::OperatingSystemVersionNumbers(&major_version, &minor_version, |
| 53 | &bugfix_version); |
| 54 | base::CheckedNumeric<int32_t> os_version(major_version); |
| 55 | os_version *= 100; |
| 56 | os_version += minor_version; |
| 57 | |
| 58 | int32_t final_os_version = os_version.ValueOrDie(); |
Helmut Januschka | a965cc1 | 2024-05-07 07:11:09 | [diff] [blame] | 59 | return base::NumberToString(final_os_version); |
Greg Kerr | 4fa6e52 | 2017-07-10 19:00:45 | [diff] [blame] | 60 | } |
| 61 | |
Greg Kerr | 19c405e9 | 2019-10-04 21:23:38 | [diff] [blame] | 62 | // Retrieves the users shared darwin dirs and adds it to the profile. |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 63 | void AddDarwinDirs(sandbox::SandboxSerializer* serializer) { |
Greg Kerr | 5bff988 | 2019-07-01 22:43:14 | [diff] [blame] | 64 | char dir_path[PATH_MAX + 1]; |
| 65 | |
| 66 | size_t rv = confstr(_CS_DARWIN_USER_CACHE_DIR, dir_path, sizeof(dir_path)); |
| 67 | PCHECK(rv != 0); |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 68 | CHECK(serializer->SetParameter( |
Robert Sesek | 7838cee1 | 2021-04-14 18:39:22 | [diff] [blame] | 69 | sandbox::policy::kParamDarwinUserCacheDir, |
Robert Sesek | 5aef352 | 2021-04-14 22:48:23 | [diff] [blame] | 70 | sandbox::policy::GetCanonicalPath(base::FilePath(dir_path)).value())); |
Greg Kerr | 19c405e9 | 2019-10-04 21:23:38 | [diff] [blame] | 71 | |
| 72 | rv = confstr(_CS_DARWIN_USER_DIR, dir_path, sizeof(dir_path)); |
| 73 | PCHECK(rv != 0); |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 74 | CHECK(serializer->SetParameter( |
Robert Sesek | 7838cee1 | 2021-04-14 18:39:22 | [diff] [blame] | 75 | sandbox::policy::kParamDarwinUserDir, |
Robert Sesek | 5aef352 | 2021-04-14 22:48:23 | [diff] [blame] | 76 | sandbox::policy::GetCanonicalPath(base::FilePath(dir_path)).value())); |
Greg Kerr | 19c405e9 | 2019-10-04 21:23:38 | [diff] [blame] | 77 | |
| 78 | rv = confstr(_CS_DARWIN_USER_TEMP_DIR, dir_path, sizeof(dir_path)); |
| 79 | PCHECK(rv != 0); |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 80 | CHECK(serializer->SetParameter( |
Robert Sesek | 7838cee1 | 2021-04-14 18:39:22 | [diff] [blame] | 81 | sandbox::policy::kParamDarwinUserTempDir, |
Robert Sesek | 5aef352 | 2021-04-14 22:48:23 | [diff] [blame] | 82 | sandbox::policy::GetCanonicalPath(base::FilePath(dir_path)).value())); |
Greg Kerr | 5bff988 | 2019-07-01 22:43:14 | [diff] [blame] | 83 | } |
| 84 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 85 | // All of the below functions populate the `serializer` with the parameters that |
Robert Sesek | 794b082 | 2022-12-05 15:22:27 | [diff] [blame] | 86 | // the sandbox needs to resolve information that cannot be known at build time, |
| 87 | // such as the user's home directory. |
Robert Sesek | 8c901864 | 2022-12-03 01:55:46 | [diff] [blame] | 88 | void SetupCommonSandboxParameters( |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 89 | sandbox::SandboxSerializer* serializer, |
Robert Sesek | 8c901864 | 2022-12-03 01:55:46 | [diff] [blame] | 90 | const base::CommandLine& target_command_line) { |
| 91 | const base::CommandLine* browser_command_line = |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 92 | base::CommandLine::ForCurrentProcess(); |
Robert Sesek | 8c901864 | 2022-12-03 01:55:46 | [diff] [blame] | 93 | bool enable_logging = browser_command_line->HasSwitch( |
| 94 | sandbox::policy::switches::kEnableSandboxLogging); |
| 95 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 96 | CHECK(serializer->SetParameter( |
Robert Sesek | 8c901864 | 2022-12-03 01:55:46 | [diff] [blame] | 97 | sandbox::policy::kParamExecutablePath, |
| 98 | sandbox::policy::GetCanonicalPath(target_command_line.GetProgram()) |
| 99 | .value())); |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 100 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 101 | CHECK(serializer->SetBooleanParameter(sandbox::policy::kParamEnableLogging, |
| 102 | enable_logging)); |
| 103 | CHECK(serializer->SetBooleanParameter( |
Robert Sesek | 7838cee1 | 2021-04-14 18:39:22 | [diff] [blame] | 104 | sandbox::policy::kParamDisableSandboxDenialLogging, !enable_logging)); |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 105 | |
Tom Sepez | 305e0d0d | 2017-10-19 20:48:52 | [diff] [blame] | 106 | std::string bundle_path = |
Avi Drissman | d4f0708 | 2023-05-12 18:05:44 | [diff] [blame] | 107 | sandbox::policy::GetCanonicalPath(base::apple::MainBundlePath()).value(); |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 108 | CHECK( |
| 109 | serializer->SetParameter(sandbox::policy::kParamBundlePath, bundle_path)); |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 110 | |
Avi Drissman | 370a5810 | 2025-05-06 15:54:54 | [diff] [blame] | 111 | std::string bundle_id(base::apple::BaseBundleID()); |
Avi Drissman | d4f0708 | 2023-05-12 18:05:44 | [diff] [blame] | 112 | DCHECK(!bundle_id.empty()) << "base::apple::OuterBundle is unset"; |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 113 | CHECK(serializer->SetParameter(sandbox::policy::kParamBundleId, bundle_id)); |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 114 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 115 | CHECK(serializer->SetParameter(sandbox::policy::kParamBrowserPid, |
| 116 | base::NumberToString(getpid()))); |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 117 | |
Robert Sesek | 8c901864 | 2022-12-03 01:55:46 | [diff] [blame] | 118 | std::string logging_path = GetContentClient() |
| 119 | ->browser() |
| 120 | ->GetLoggingFileName(*browser_command_line) |
| 121 | .value(); |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 122 | CHECK(serializer->SetParameter(sandbox::policy::kParamLogFilePath, |
| 123 | logging_path)); |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 124 | |
| 125 | #if defined(COMPONENT_BUILD) |
| 126 | // For component builds, allow access to one directory level higher, where |
| 127 | // the dylibs live. |
Avi Drissman | d4f0708 | 2023-05-12 18:05:44 | [diff] [blame] | 128 | base::FilePath component_path = base::apple::MainBundlePath().Append(".."); |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 129 | std::string component_path_canonical = |
Robert Sesek | 5aef352 | 2021-04-14 22:48:23 | [diff] [blame] | 130 | sandbox::policy::GetCanonicalPath(component_path).value(); |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 131 | CHECK(serializer->SetParameter(sandbox::policy::kParamComponentPath, |
| 132 | component_path_canonical)); |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 133 | #endif |
Greg Kerr | c382e2ae | 2017-12-14 23:43:34 | [diff] [blame] | 134 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 135 | CHECK(serializer->SetParameter(sandbox::policy::kParamOsVersion, |
| 136 | GetOSVersion())); |
Greg Kerr | c382e2ae | 2017-12-14 23:43:34 | [diff] [blame] | 137 | |
| 138 | std::string homedir = |
Robert Sesek | 5aef352 | 2021-04-14 22:48:23 | [diff] [blame] | 139 | sandbox::policy::GetCanonicalPath(base::GetHomeDir()).value(); |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 140 | CHECK(serializer->SetParameter(sandbox::policy::kParamHomedirAsLiteral, |
| 141 | homedir)); |
Greg Kerr | c382e2ae | 2017-12-14 23:43:34 | [diff] [blame] | 142 | } |
| 143 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 144 | void SetupNetworkSandboxParameters(sandbox::SandboxSerializer* serializer, |
Robert Sesek | 8c901864 | 2022-12-03 01:55:46 | [diff] [blame] | 145 | const base::CommandLine& command_line) { |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 146 | SetupCommonSandboxParameters(serializer, command_line); |
Robert Sesek | 34f68f31 | 2019-01-14 20:25:11 | [diff] [blame] | 147 | |
Robert Sesek | 34f68f31 | 2019-01-14 20:25:11 | [diff] [blame] | 148 | std::vector<base::FilePath> storage_paths = |
| 149 | GetContentClient()->browser()->GetNetworkContextsParentDirectory(); |
| 150 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 151 | AddDarwinDirs(serializer); |
Greg Kerr | 5bff988 | 2019-07-01 22:43:14 | [diff] [blame] | 152 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 153 | CHECK(serializer->SetParameter( |
Robert Sesek | 7838cee1 | 2021-04-14 18:39:22 | [diff] [blame] | 154 | sandbox::policy::kParamNetworkServiceStoragePathsCount, |
| 155 | base::NumberToString(storage_paths.size()))); |
Robert Sesek | 34f68f31 | 2019-01-14 20:25:11 | [diff] [blame] | 156 | for (size_t i = 0; i < storage_paths.size(); ++i) { |
Robert Sesek | 5aef352 | 2021-04-14 22:48:23 | [diff] [blame] | 157 | base::FilePath path = sandbox::policy::GetCanonicalPath(storage_paths[i]); |
Robert Sesek | 7838cee1 | 2021-04-14 18:39:22 | [diff] [blame] | 158 | std::string param_name = base::StringPrintf( |
| 159 | "%s%zu", sandbox::policy::kParamNetworkServiceStoragePathN, i); |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 160 | CHECK(serializer->SetParameter(param_name, path.value())) << param_name; |
Robert Sesek | 34f68f31 | 2019-01-14 20:25:11 | [diff] [blame] | 161 | } |
Robert Sesek | 6a9e65f | 2019-08-14 20:02:34 | [diff] [blame] | 162 | |
Kenneth Russell | 1c9a9ab | 2021-02-10 23:19:50 | [diff] [blame] | 163 | if (GetNetworkTestCertsDirectory().has_value()) { |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 164 | CHECK(serializer->SetParameter( |
Robert Sesek | 5aef352 | 2021-04-14 22:48:23 | [diff] [blame] | 165 | sandbox::policy::kParamNetworkServiceTestCertsDir, |
| 166 | sandbox::policy::GetCanonicalPath(*GetNetworkTestCertsDirectory()) |
| 167 | .value())); |
Robert Sesek | 6a9e65f | 2019-08-14 20:02:34 | [diff] [blame] | 168 | } |
Robert Sesek | 34f68f31 | 2019-01-14 20:25:11 | [diff] [blame] | 169 | } |
| 170 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 171 | bool SetupGpuSandboxParameters(sandbox::SandboxSerializer* serializer, |
Kenneth Russell | 1c9a9ab | 2021-02-10 23:19:50 | [diff] [blame] | 172 | const base::CommandLine& command_line) { |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 173 | SetupCommonSandboxParameters(serializer, command_line); |
| 174 | AddDarwinDirs(serializer); |
| 175 | CHECK(serializer->SetBooleanParameter( |
Robert Sesek | 7838cee1 | 2021-04-14 18:39:22 | [diff] [blame] | 176 | sandbox::policy::kParamDisableMetalShaderCache, |
Kenneth Russell | 1c9a9ab | 2021-02-10 23:19:50 | [diff] [blame] | 177 | command_line.HasSwitch( |
| 178 | sandbox::policy::switches::kDisableMetalShaderCache))); |
Mark Rowe | e5ada49 | 2023-06-23 14:48:49 | [diff] [blame] | 179 | |
| 180 | base::FilePath helper_bundle_path = |
Avi Drissman | eac566b0 | 2023-08-18 02:56:21 | [diff] [blame] | 181 | base::apple::GetInnermostAppBundlePath(command_line.GetProgram()); |
Mark Rowe | e5ada49 | 2023-06-23 14:48:49 | [diff] [blame] | 182 | |
| 183 | // The helper may not be contained in an app bundle for unit tests. |
| 184 | // In that case `kParamHelperBundleId` will remain unset. |
| 185 | if (!helper_bundle_path.empty()) { |
| 186 | @autoreleasepool { |
| 187 | NSBundle* helper_bundle = [NSBundle |
| 188 | bundleWithPath:base::SysUTF8ToNSString(helper_bundle_path.value())]; |
Ken Rockot | af26458 | 2024-05-23 01:03:27 | [diff] [blame] | 189 | if (!helper_bundle) { |
| 190 | return false; |
| 191 | } |
Mark Rowe | e5ada49 | 2023-06-23 14:48:49 | [diff] [blame] | 192 | |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 193 | return serializer->SetParameter( |
Mark Rowe | e5ada49 | 2023-06-23 14:48:49 | [diff] [blame] | 194 | sandbox::policy::kParamHelperBundleId, |
Ken Rockot | af26458 | 2024-05-23 01:03:27 | [diff] [blame] | 195 | base::SysNSStringToUTF8(helper_bundle.bundleIdentifier)); |
Mark Rowe | e5ada49 | 2023-06-23 14:48:49 | [diff] [blame] | 196 | } |
| 197 | } |
Ken Rockot | af26458 | 2024-05-23 01:03:27 | [diff] [blame] | 198 | |
| 199 | return true; |
Kenneth Russell | 1c9a9ab | 2021-02-10 23:19:50 | [diff] [blame] | 200 | } |
| 201 | |
Greg Kerr | b7fdb79 | 2019-04-24 23:05:46 | [diff] [blame] | 202 | } // namespace |
| 203 | |
Ken Rockot | af26458 | 2024-05-23 01:03:27 | [diff] [blame] | 204 | bool SetupSandboxParameters(sandbox::mojom::Sandbox sandbox_type, |
Greg Kerr | b7fdb79 | 2019-04-24 23:05:46 | [diff] [blame] | 205 | const base::CommandLine& command_line, |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 206 | sandbox::SandboxSerializer* serializer) { |
Greg Kerr | b7fdb79 | 2019-04-24 23:05:46 | [diff] [blame] | 207 | switch (sandbox_type) { |
Alex Gough | eb6a38f | 2021-10-22 01:55:13 | [diff] [blame] | 208 | case sandbox::mojom::Sandbox::kAudio: |
| 209 | case sandbox::mojom::Sandbox::kCdm: |
| 210 | case sandbox::mojom::Sandbox::kMirroring: |
Alex Gough | eb6a38f | 2021-10-22 01:55:13 | [diff] [blame] | 211 | case sandbox::mojom::Sandbox::kPrintBackend: |
Alex Gough | eb6a38f | 2021-10-22 01:55:13 | [diff] [blame] | 212 | case sandbox::mojom::Sandbox::kPrintCompositor: |
| 213 | case sandbox::mojom::Sandbox::kRenderer: |
| 214 | case sandbox::mojom::Sandbox::kService: |
Alex Gough | 7242135 | 2021-12-21 11:08:31 | [diff] [blame] | 215 | case sandbox::mojom::Sandbox::kServiceWithJit: |
Alex Gough | eb6a38f | 2021-10-22 01:55:13 | [diff] [blame] | 216 | case sandbox::mojom::Sandbox::kUtility: |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 217 | SetupCommonSandboxParameters(serializer, command_line); |
Greg Kerr | b7fdb79 | 2019-04-24 23:05:46 | [diff] [blame] | 218 | break; |
Ken Rockot | 624ae327 | 2023-11-10 00:43:23 | [diff] [blame] | 219 | case sandbox::mojom::Sandbox::kOnDeviceModelExecution: |
Ken Rockot | af26458 | 2024-05-23 01:03:27 | [diff] [blame] | 220 | case sandbox::mojom::Sandbox::kGpu: |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 221 | return SetupGpuSandboxParameters(serializer, command_line); |
Alex Gough | eb6a38f | 2021-10-22 01:55:13 | [diff] [blame] | 222 | case sandbox::mojom::Sandbox::kNetwork: |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 223 | SetupNetworkSandboxParameters(serializer, command_line); |
Greg Kerr | b7fdb79 | 2019-04-24 23:05:46 | [diff] [blame] | 224 | break; |
Alex Gough | eb6a38f | 2021-10-22 01:55:13 | [diff] [blame] | 225 | case sandbox::mojom::Sandbox::kNoSandbox: |
Peter Boström | b41d6ee | 2024-11-20 15:49:39 | [diff] [blame] | 226 | NOTREACHED() << "Unhandled parameters for sandbox_type " |
Alex Gough | 9ab468a6c3 | 2019-12-10 19:10:22 | [diff] [blame] | 227 | << static_cast<int>(sandbox_type); |
Alex Gough | 53fc147 | 2024-11-22 19:31:13 | [diff] [blame] | 228 | // Setup parameters for sandbox types handled by embedders below. |
David Tseng | 24e69a2f | 2022-05-13 19:09:43 | [diff] [blame] | 229 | case sandbox::mojom::Sandbox::kScreenAI: |
Alex Gough | eb6a38f | 2021-10-22 01:55:13 | [diff] [blame] | 230 | case sandbox::mojom::Sandbox::kSpeechRecognition: |
Tsuyoshi Horo | 85ca5f90 | 2024-09-25 04:28:50 | [diff] [blame] | 231 | case sandbox::mojom::Sandbox::kOnDeviceTranslation: |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 232 | SetupCommonSandboxParameters(serializer, command_line); |
Evan Liu | 054dc08 | 2020-09-30 14:09:42 | [diff] [blame] | 233 | CHECK(GetContentClient()->browser()->SetupEmbedderSandboxParameters( |
Evan Stade | 526e35a6 | 2025-02-01 00:09:37 | [diff] [blame] | 234 | sandbox_type, serializer)); |
mark a. foltz | a312818 | 2024-09-06 05:43:53 | [diff] [blame] | 235 | break; |
Greg Kerr | b7fdb79 | 2019-04-24 23:05:46 | [diff] [blame] | 236 | } |
Ken Rockot | af26458 | 2024-05-23 01:03:27 | [diff] [blame] | 237 | return true; |
Greg Kerr | b7fdb79 | 2019-04-24 23:05:46 | [diff] [blame] | 238 | } |
| 239 | |
Robert Sesek | 6a9e65f | 2019-08-14 20:02:34 | [diff] [blame] | 240 | void SetNetworkTestCertsDirectoryForTesting(const base::FilePath& path) { |
Kenneth Russell | 1c9a9ab | 2021-02-10 23:19:50 | [diff] [blame] | 241 | GetNetworkTestCertsDirectory().emplace(path); |
Robert Sesek | 6a9e65f | 2019-08-14 20:02:34 | [diff] [blame] | 242 | } |
| 243 | |
kerrnel | 0f7a192 | 2017-06-26 23:40:58 | [diff] [blame] | 244 | } // namespace content |