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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/hi_res_timer_manager.h" | 10 #include "base/hi_res_timer_manager.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
67 #include <commctrl.h> | 67 #include <commctrl.h> |
68 #include <shellapi.h> | 68 #include <shellapi.h> |
69 | 69 |
70 #include "base/win/text_services_message_filter.h" | 70 #include "base/win/text_services_message_filter.h" |
71 #include "content/browser/system_message_window_win.h" | 71 #include "content/browser/system_message_window_win.h" |
72 #include "content/common/sandbox_win.h" | 72 #include "content/common/sandbox_win.h" |
73 #include "net/base/winsock_init.h" | 73 #include "net/base/winsock_init.h" |
74 #include "ui/base/l10n/l10n_util_win.h" | 74 #include "ui/base/l10n/l10n_util_win.h" |
75 #endif | 75 #endif |
76 | 76 |
77 #if defined(OS_LINUX) || defined(OS_OPENBSD) | 77 #if defined(OS_LINUX) || defined(OS_BSD) |
78 #include <glib-object.h> | 78 #include <glib-object.h> |
79 #endif | 79 #endif |
80 | 80 |
81 #if defined(OS_LINUX) | 81 #if defined(OS_LINUX) |
82 #include "content/browser/device_monitor_linux.h" | 82 #include "content/browser/device_monitor_linux.h" |
83 #elif defined(OS_MACOSX) && !defined(OS_IOS) | 83 #elif defined(OS_MACOSX) && !defined(OS_IOS) |
84 #include "content/browser/device_monitor_mac.h" | 84 #include "content/browser/device_monitor_mac.h" |
85 #endif | 85 #endif |
86 | 86 |
87 #if defined(TOOLKIT_GTK) | 87 #if defined(TOOLKIT_GTK) |
88 #include "ui/gfx/gtk_util.h" | 88 #include "ui/gfx/gtk_util.h" |
89 #endif | 89 #endif |
90 | 90 |
91 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 91 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) |
92 #include <sys/stat.h> | 92 #include <sys/stat.h> |
93 | 93 |
94 #include "base/process_util.h" | 94 #include "base/process_util.h" |
95 #include "content/browser/renderer_host/render_sandbox_host_linux.h" | 95 #include "content/browser/renderer_host/render_sandbox_host_linux.h" |
96 #include "content/browser/zygote_host/zygote_host_impl_linux.h" | 96 #include "content/browser/zygote_host/zygote_host_impl_linux.h" |
97 #endif | 97 #endif |
98 | 98 |
99 #if defined(USE_X11) | 99 #if defined(USE_X11) |
100 #include <X11/Xlib.h> | 100 #include <X11/Xlib.h> |
101 #endif | 101 #endif |
102 | 102 |
103 // One of the linux specific headers defines this as a macro. | 103 // One of the linux specific headers defines this as a macro. |
104 #ifdef DestroyAll | 104 #ifdef DestroyAll |
105 #undef DestroyAll | 105 #undef DestroyAll |
106 #endif | 106 #endif |
107 | 107 |
108 namespace content { | 108 namespace content { |
109 namespace { | 109 namespace { |
110 | 110 |
111 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) | 111 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && \ |
112 !defined(OS_BSD) | |
Paweł Hajdan Jr.
2013/05/29 21:19:26
Could you explain why? I'd rather get sandbox to w
| |
112 void SetupSandbox(const CommandLine& parsed_command_line) { | 113 void SetupSandbox(const CommandLine& parsed_command_line) { |
113 // TODO(evanm): move this into SandboxWrapper; I'm just trying to move this | 114 // TODO(evanm): move this into SandboxWrapper; I'm just trying to move this |
114 // code en masse out of chrome_main for now. | 115 // code en masse out of chrome_main for now. |
115 const char* sandbox_binary = NULL; | 116 const char* sandbox_binary = NULL; |
116 struct stat st; | 117 struct stat st; |
117 | 118 |
118 // In Chromium branded builds, developers can set an environment variable to | 119 // In Chromium branded builds, developers can set an environment variable to |
119 // use the development sandbox. See | 120 // use the development sandbox. See |
120 // http://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment | 121 // http://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment |
121 if (stat(base::kProcSelfExe, &st) == 0 && st.st_uid == getuid()) | 122 if (stat(base::kProcSelfExe, &st) == 0 && st.st_uid == getuid()) |
122 sandbox_binary = getenv("CHROME_DEVEL_SANDBOX"); | 123 sandbox_binary = getenv("CHROME_DEVEL_SANDBOX"); |
123 | 124 |
124 #if defined(LINUX_SANDBOX_PATH) | 125 #if defined(LINUX_SANDBOX_PATH) |
125 if (!sandbox_binary) | 126 if (!sandbox_binary) |
126 sandbox_binary = LINUX_SANDBOX_PATH; | 127 sandbox_binary = LINUX_SANDBOX_PATH; |
127 #endif | 128 #endif |
128 | 129 |
129 std::string sandbox_cmd; | 130 std::string sandbox_cmd; |
130 if (sandbox_binary && !parsed_command_line.HasSwitch(switches::kNoSandbox)) | 131 if (sandbox_binary && !parsed_command_line.HasSwitch(switches::kNoSandbox)) |
131 sandbox_cmd = sandbox_binary; | 132 sandbox_cmd = sandbox_binary; |
132 | 133 |
133 // Tickle the sandbox host and zygote host so they fork now. | 134 // Tickle the sandbox host and zygote host so they fork now. |
134 RenderSandboxHostLinux::GetInstance()->Init(sandbox_cmd); | 135 RenderSandboxHostLinux::GetInstance()->Init(sandbox_cmd); |
135 ZygoteHostImpl::GetInstance()->Init(sandbox_cmd); | 136 ZygoteHostImpl::GetInstance()->Init(sandbox_cmd); |
136 } | 137 } |
137 #endif | 138 #endif |
138 | 139 |
139 #if defined(OS_LINUX) || defined(OS_OPENBSD) | 140 #if defined(OS_LINUX) || defined(OS_BSD) |
140 static void GLibLogHandler(const gchar* log_domain, | 141 static void GLibLogHandler(const gchar* log_domain, |
141 GLogLevelFlags log_level, | 142 GLogLevelFlags log_level, |
142 const gchar* message, | 143 const gchar* message, |
143 gpointer userdata) { | 144 gpointer userdata) { |
144 if (!log_domain) | 145 if (!log_domain) |
145 log_domain = "<unknown>"; | 146 log_domain = "<unknown>"; |
146 if (!message) | 147 if (!message) |
147 message = "<no message>"; | 148 message = "<no message>"; |
148 | 149 |
149 if (strstr(message, "Loading IM context type") || | 150 if (strstr(message, "Loading IM context type") || |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
319 | 320 |
320 #if defined(OS_WIN) | 321 #if defined(OS_WIN) |
321 net::EnsureWinsockInit(); | 322 net::EnsureWinsockInit(); |
322 #endif | 323 #endif |
323 | 324 |
324 #if !defined(USE_OPENSSL) | 325 #if !defined(USE_OPENSSL) |
325 // We want to be sure to init NSPR on the main thread. | 326 // We want to be sure to init NSPR on the main thread. |
326 crypto::EnsureNSPRInit(); | 327 crypto::EnsureNSPRInit(); |
327 #endif // !defined(USE_OPENSSL) | 328 #endif // !defined(USE_OPENSSL) |
328 | 329 |
329 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) | 330 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && \ |
331 !defined(OS_BSD) | |
330 SetupSandbox(parsed_command_line_); | 332 SetupSandbox(parsed_command_line_); |
331 #endif | 333 #endif |
332 | 334 |
333 if (parsed_command_line_.HasSwitch(switches::kEnableSSLCachedInfo)) | 335 if (parsed_command_line_.HasSwitch(switches::kEnableSSLCachedInfo)) |
334 net::SSLConfigService::EnableCachedInfo(); | 336 net::SSLConfigService::EnableCachedInfo(); |
335 | 337 |
336 #if !defined(OS_IOS) | 338 #if !defined(OS_IOS) |
337 if (parsed_command_line_.HasSwitch(switches::kRendererProcessLimit)) { | 339 if (parsed_command_line_.HasSwitch(switches::kRendererProcessLimit)) { |
338 std::string limit_string = parsed_command_line_.GetSwitchValueASCII( | 340 std::string limit_string = parsed_command_line_.GetSwitchValueASCII( |
339 switches::kRendererProcessLimit); | 341 switches::kRendererProcessLimit); |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
813 #endif // !defined(OS_IOS) | 815 #endif // !defined(OS_IOS) |
814 } | 816 } |
815 | 817 |
816 void BrowserMainLoop::InitializeToolkit() { | 818 void BrowserMainLoop::InitializeToolkit() { |
817 TRACE_EVENT0("startup", "BrowserMainLoop::InitializeToolkit") | 819 TRACE_EVENT0("startup", "BrowserMainLoop::InitializeToolkit") |
818 // TODO(evan): this function is rather subtle, due to the variety | 820 // TODO(evan): this function is rather subtle, due to the variety |
819 // of intersecting ifdefs we have. To keep it easy to follow, there | 821 // of intersecting ifdefs we have. To keep it easy to follow, there |
820 // are no #else branches on any #ifs. | 822 // are no #else branches on any #ifs. |
821 // TODO(stevenjb): Move platform specific code into platform specific Parts | 823 // TODO(stevenjb): Move platform specific code into platform specific Parts |
822 // (Need to add InitializeToolkit stage to BrowserParts). | 824 // (Need to add InitializeToolkit stage to BrowserParts). |
823 #if defined(OS_LINUX) || defined(OS_OPENBSD) | 825 #if defined(OS_LINUX) || defined(OS_BSD) |
824 // g_type_init will be deprecated in 2.36. 2.35 is the development | 826 // g_type_init will be deprecated in 2.36. 2.35 is the development |
825 // version for 2.36, hence do not call g_type_init starting 2.35. | 827 // version for 2.36, hence do not call g_type_init starting 2.35. |
826 // http://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#g -type-init | 828 // http://developer.gnome.org/gobject/unstable/gobject-Type-Information.html#g -type-init |
827 #if !GLIB_CHECK_VERSION(2, 35, 0) | 829 #if !GLIB_CHECK_VERSION(2, 35, 0) |
828 // Glib type system initialization. Needed at least for gconf, | 830 // Glib type system initialization. Needed at least for gconf, |
829 // used in net/proxy/proxy_config_service_linux.cc. Most likely | 831 // used in net/proxy/proxy_config_service_linux.cc. Most likely |
830 // this is superfluous as gtk_init() ought to do this. It's | 832 // this is superfluous as gtk_init() ought to do this. It's |
831 // definitely harmless, so retained as a reminder of this | 833 // definitely harmless, so retained as a reminder of this |
832 // requirement for gconf. | 834 // requirement for gconf. |
833 g_type_init(); | 835 g_type_init(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
868 if (parameters_.ui_task) | 870 if (parameters_.ui_task) |
869 base::MessageLoopForUI::current()->PostTask(FROM_HERE, | 871 base::MessageLoopForUI::current()->PostTask(FROM_HERE, |
870 *parameters_.ui_task); | 872 *parameters_.ui_task); |
871 | 873 |
872 base::RunLoop run_loop; | 874 base::RunLoop run_loop; |
873 run_loop.Run(); | 875 run_loop.Run(); |
874 #endif | 876 #endif |
875 } | 877 } |
876 | 878 |
877 } // namespace content | 879 } // namespace content |
OLD | NEW |