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/browser_main_loop.h" | 5 #include "content/browser/browser_main_loop.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
185 #endif | 185 #endif |
186 | 186 |
187 // One of the linux specific headers defines this as a macro. | 187 // One of the linux specific headers defines this as a macro. |
188 #ifdef DestroyAll | 188 #ifdef DestroyAll |
189 #undef DestroyAll | 189 #undef DestroyAll |
190 #endif | 190 #endif |
191 | 191 |
192 namespace content { | 192 namespace content { |
193 namespace { | 193 namespace { |
194 | 194 |
195 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) | 195 #if defined(OS_CHROMEOS) |
196 void SetupSandbox(const base::CommandLine& parsed_command_line) { | 196 void SetupSandbox(const base::CommandLine& parsed_command_line) { |
197 TRACE_EVENT0("startup", "SetupSandbox"); | 197 TRACE_EVENT0("startup", "SetupSandbox"); |
198 base::FilePath sandbox_binary; | 198 base::FilePath sandbox_binary; |
199 | 199 |
200 scoped_ptr<sandbox::SetuidSandboxHost> setuid_sandbox_host( | 200 scoped_ptr<sandbox::SetuidSandboxHost> setuid_sandbox_host( |
201 sandbox::SetuidSandboxHost::Create()); | 201 sandbox::SetuidSandboxHost::Create()); |
202 | 202 |
203 const bool want_setuid_sandbox = | 203 const bool want_setuid_sandbox = |
204 !parsed_command_line.HasSwitch(switches::kNoSandbox) && | 204 !parsed_command_line.HasSwitch(switches::kNoSandbox) && |
205 !parsed_command_line.HasSwitch(switches::kDisableSetuidSandbox) && | 205 !parsed_command_line.HasSwitch(switches::kDisableSetuidSandbox) && |
(...skipping 15 matching lines...) Expand all Loading... | |
221 } | 221 } |
222 | 222 |
223 // Tickle the sandbox host and zygote host so they fork now. | 223 // Tickle the sandbox host and zygote host so they fork now. |
224 RenderSandboxHostLinux::GetInstance()->Init(); | 224 RenderSandboxHostLinux::GetInstance()->Init(); |
225 ZygoteHostImpl::GetInstance()->Init(sandbox_binary.value()); | 225 ZygoteHostImpl::GetInstance()->Init(sandbox_binary.value()); |
226 *GetGenericZygote() = CreateZygote(); | 226 *GetGenericZygote() = CreateZygote(); |
227 RenderProcessHostImpl::EarlyZygoteLaunch(); | 227 RenderProcessHostImpl::EarlyZygoteLaunch(); |
228 } | 228 } |
229 #endif | 229 #endif |
230 | 230 |
231 | |
232 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined (OS_CHROMEOS) | |
233 void SetupSandbox() { | |
mdempsky
2016/04/01 23:25:42
I don't understand why you're duplicating all of t
| |
234 base::FilePath sandbox_binary; | |
235 RenderSandboxHostLinux::GetInstance()->Init(); | |
236 ZygoteHostImpl::GetInstance()->Init(sandbox_binary.value()); | |
237 *GetGenericZygote() = CreateZygote(); | |
238 RenderProcessHostImpl::EarlyZygoteLaunch(); | |
239 } | |
240 #endif | |
231 #if defined(USE_GLIB) | 241 #if defined(USE_GLIB) |
232 static void GLibLogHandler(const gchar* log_domain, | 242 static void GLibLogHandler(const gchar* log_domain, |
233 GLogLevelFlags log_level, | 243 GLogLevelFlags log_level, |
234 const gchar* message, | 244 const gchar* message, |
235 gpointer userdata) { | 245 gpointer userdata) { |
236 if (!log_domain) | 246 if (!log_domain) |
237 log_domain = "<unknown>"; | 247 log_domain = "<unknown>"; |
238 if (!message) | 248 if (!message) |
239 message = "<no message>"; | 249 message = "<no message>"; |
240 | 250 |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
433 GetContentClient()->browser()->CreateBrowserMainParts(parameters_)); | 443 GetContentClient()->browser()->CreateBrowserMainParts(parameters_)); |
434 } | 444 } |
435 | 445 |
436 // BrowserMainLoop stages ================================================== | 446 // BrowserMainLoop stages ================================================== |
437 | 447 |
438 void BrowserMainLoop::EarlyInitialization() { | 448 void BrowserMainLoop::EarlyInitialization() { |
439 TRACE_EVENT0("startup", "BrowserMainLoop::EarlyInitialization"); | 449 TRACE_EVENT0("startup", "BrowserMainLoop::EarlyInitialization"); |
440 TRACK_SCOPED_REGION("Startup", "BrowserMainLoop::EarlyInitialization"); | 450 TRACK_SCOPED_REGION("Startup", "BrowserMainLoop::EarlyInitialization"); |
441 | 451 |
442 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) | 452 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) |
443 // No thread should be created before this call, as SetupSandbox() | 453 SetupSandbox(); |
mdempsky
2016/04/01 23:25:43
This won't compile on Chrome OS: your SetupSandbox
| |
444 // will end-up using fork(). | |
445 SetupSandbox(parsed_command_line_); | |
446 #endif | 454 #endif |
447 | |
448 #if defined(USE_X11) | 455 #if defined(USE_X11) |
449 if (UsingInProcessGpu()) { | 456 if (UsingInProcessGpu()) { |
450 if (!gfx::InitializeThreadedX11()) { | 457 if (!gfx::InitializeThreadedX11()) { |
451 LOG(ERROR) << "Failed to put Xlib into threaded mode."; | 458 LOG(ERROR) << "Failed to put Xlib into threaded mode."; |
452 } | 459 } |
453 } | 460 } |
454 #endif | 461 #endif |
455 | 462 |
456 // GLib's spawning of new processes is buggy, so it's important that at this | 463 // GLib's spawning of new processes is buggy, so it's important that at this |
457 // point GLib does not need to start DBUS. Chrome should always start with | 464 // point GLib does not need to start DBUS. Chrome should always start with |
(...skipping 988 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1446 DCHECK(is_tracing_startup_for_duration_); | 1453 DCHECK(is_tracing_startup_for_duration_); |
1447 | 1454 |
1448 is_tracing_startup_for_duration_ = false; | 1455 is_tracing_startup_for_duration_ = false; |
1449 TracingController::GetInstance()->StopTracing( | 1456 TracingController::GetInstance()->StopTracing( |
1450 TracingController::CreateFileSink( | 1457 TracingController::CreateFileSink( |
1451 startup_trace_file_, | 1458 startup_trace_file_, |
1452 base::Bind(OnStoppedStartupTracing, startup_trace_file_))); | 1459 base::Bind(OnStoppedStartupTracing, startup_trace_file_))); |
1453 } | 1460 } |
1454 | 1461 |
1455 } // namespace content | 1462 } // namespace content |
OLD | NEW |