OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/gpu/gpu_process_host.h" | 5 #include "content/browser/gpu/gpu_process_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <list> | 10 #include <list> |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 } | 186 } |
187 } | 187 } |
188 | 188 |
189 // NOTE: changes to this class need to be reviewed by the security team. | 189 // NOTE: changes to this class need to be reviewed by the security team. |
190 class GpuSandboxedProcessLauncherDelegate | 190 class GpuSandboxedProcessLauncherDelegate |
191 : public SandboxedProcessLauncherDelegate { | 191 : public SandboxedProcessLauncherDelegate { |
192 public: | 192 public: |
193 GpuSandboxedProcessLauncherDelegate(base::CommandLine* cmd_line, | 193 GpuSandboxedProcessLauncherDelegate(base::CommandLine* cmd_line, |
194 ChildProcessHost* host) | 194 ChildProcessHost* host) |
195 #if defined(OS_WIN) | 195 #if defined(OS_WIN) |
196 : cmd_line_(cmd_line) {} | 196 : cmd_line_(cmd_line) |
197 #elif defined(OS_POSIX) | |
198 : ipc_fd_(host->TakeClientFileDescriptor()) {} | |
199 #endif | 197 #endif |
| 198 {} |
200 | 199 |
201 ~GpuSandboxedProcessLauncherDelegate() override {} | 200 ~GpuSandboxedProcessLauncherDelegate() override {} |
202 | 201 |
203 #if defined(OS_WIN) | 202 #if defined(OS_WIN) |
204 bool ShouldSandbox() override { | 203 bool ShouldSandbox() override { |
205 bool sandbox = !cmd_line_->HasSwitch(switches::kDisableGpuSandbox); | 204 bool sandbox = !cmd_line_->HasSwitch(switches::kDisableGpuSandbox); |
206 if (!sandbox) { | 205 if (!sandbox) { |
207 DVLOG(1) << "GPU sandbox is disabled"; | 206 DVLOG(1) << "GPU sandbox is disabled"; |
208 } | 207 } |
209 return sandbox; | 208 return sandbox; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 result = policy->AddRule(sandbox::TargetPolicy::SUBSYS_FILES, | 269 result = policy->AddRule(sandbox::TargetPolicy::SUBSYS_FILES, |
271 sandbox::TargetPolicy::FILES_ALLOW_ANY, | 270 sandbox::TargetPolicy::FILES_ALLOW_ANY, |
272 log_file_path.c_str()); | 271 log_file_path.c_str()); |
273 if (result != sandbox::SBOX_ALL_OK) | 272 if (result != sandbox::SBOX_ALL_OK) |
274 return false; | 273 return false; |
275 } | 274 } |
276 } | 275 } |
277 | 276 |
278 return true; | 277 return true; |
279 } | 278 } |
280 #elif defined(OS_POSIX) | |
281 | |
282 base::ScopedFD TakeIpcFd() override { return std::move(ipc_fd_); } | |
283 #endif // OS_WIN | 279 #endif // OS_WIN |
284 | 280 |
285 SandboxType GetSandboxType() override { | 281 SandboxType GetSandboxType() override { |
286 return SANDBOX_TYPE_GPU; | 282 return SANDBOX_TYPE_GPU; |
287 } | 283 } |
288 | 284 |
289 private: | 285 private: |
290 #if defined(OS_WIN) | 286 #if defined(OS_WIN) |
291 base::CommandLine* cmd_line_; | 287 base::CommandLine* cmd_line_; |
292 #elif defined(OS_POSIX) | |
293 base::ScopedFD ipc_fd_; | |
294 #endif // OS_WIN | 288 #endif // OS_WIN |
295 }; | 289 }; |
296 | 290 |
297 } // anonymous namespace | 291 } // anonymous namespace |
298 | 292 |
299 // static | 293 // static |
300 bool GpuProcessHost::ValidateHost(GpuProcessHost* host) { | 294 bool GpuProcessHost::ValidateHost(GpuProcessHost* host) { |
301 // The Gpu process is invalid if it's not using SwiftShader, the card is | 295 // The Gpu process is invalid if it's not using SwiftShader, the card is |
302 // blacklisted, and we can kill it and start over. | 296 // blacklisted, and we can kill it and start over. |
303 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 297 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
(...skipping 884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1188 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader"); | 1182 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader"); |
1189 ClientIdToShaderCacheMap::iterator iter = | 1183 ClientIdToShaderCacheMap::iterator iter = |
1190 client_id_to_shader_cache_.find(client_id); | 1184 client_id_to_shader_cache_.find(client_id); |
1191 // If the cache doesn't exist then this is an off the record profile. | 1185 // If the cache doesn't exist then this is an off the record profile. |
1192 if (iter == client_id_to_shader_cache_.end()) | 1186 if (iter == client_id_to_shader_cache_.end()) |
1193 return; | 1187 return; |
1194 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader); | 1188 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader); |
1195 } | 1189 } |
1196 | 1190 |
1197 } // namespace content | 1191 } // namespace content |
OLD | NEW |