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/public/app/content_main_runner.h" | 5 #include "content/public/app/content_main_runner.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdlib.h> | 8 #include <stdlib.h> |
9 #include <string.h> | 9 #include <string.h> |
10 #include <string> | 10 #include <string> |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 #if !defined(OS_MACOSX) && !defined(OS_ANDROID) | 108 #if !defined(OS_MACOSX) && !defined(OS_ANDROID) |
109 #include "content/zygote/zygote_main.h" | 109 #include "content/zygote/zygote_main.h" |
110 #endif | 110 #endif |
111 | 111 |
112 #endif // OS_POSIX | 112 #endif // OS_POSIX |
113 | 113 |
114 #if defined(USE_NSS_CERTS) | 114 #if defined(USE_NSS_CERTS) |
115 #include "crypto/nss_util.h" | 115 #include "crypto/nss_util.h" |
116 #endif | 116 #endif |
117 | 117 |
118 #if !defined(OS_MACOSX) && defined(USE_TCMALLOC) | |
119 extern "C" { | |
120 int tc_set_new_mode(int mode); | |
121 } | |
122 #endif | |
123 | |
124 namespace content { | 118 namespace content { |
125 extern int GpuMain(const content::MainFunctionParams&); | 119 extern int GpuMain(const content::MainFunctionParams&); |
126 #if defined(ENABLE_PLUGINS) | 120 #if defined(ENABLE_PLUGINS) |
127 #if !defined(OS_LINUX) | 121 #if !defined(OS_LINUX) |
128 extern int PluginMain(const content::MainFunctionParams&); | 122 extern int PluginMain(const content::MainFunctionParams&); |
129 #endif | 123 #endif |
130 extern int PpapiPluginMain(const MainFunctionParams&); | 124 extern int PpapiPluginMain(const MainFunctionParams&); |
131 extern int PpapiBrokerMain(const MainFunctionParams&); | 125 extern int PpapiBrokerMain(const MainFunctionParams&); |
132 #endif | 126 #endif |
133 extern int RendererMain(const content::MainFunctionParams&); | 127 extern int RendererMain(const content::MainFunctionParams&); |
134 extern int UtilityMain(const MainFunctionParams&); | 128 extern int UtilityMain(const MainFunctionParams&); |
135 } // namespace content | 129 } // namespace content |
136 | 130 |
137 namespace content { | 131 namespace content { |
138 | 132 |
139 #if !defined(CHROME_MULTIPLE_DLL_CHILD) | 133 #if !defined(CHROME_MULTIPLE_DLL_CHILD) |
140 base::LazyInstance<ContentBrowserClient> | 134 base::LazyInstance<ContentBrowserClient> |
141 g_empty_content_browser_client = LAZY_INSTANCE_INITIALIZER; | 135 g_empty_content_browser_client = LAZY_INSTANCE_INITIALIZER; |
142 #endif // !CHROME_MULTIPLE_DLL_CHILD | 136 #endif // !CHROME_MULTIPLE_DLL_CHILD |
143 | 137 |
144 #if !defined(OS_IOS) && !defined(CHROME_MULTIPLE_DLL_BROWSER) | 138 #if !defined(OS_IOS) && !defined(CHROME_MULTIPLE_DLL_BROWSER) |
145 base::LazyInstance<ContentPluginClient> | 139 base::LazyInstance<ContentPluginClient> |
146 g_empty_content_plugin_client = LAZY_INSTANCE_INITIALIZER; | 140 g_empty_content_plugin_client = LAZY_INSTANCE_INITIALIZER; |
147 base::LazyInstance<ContentRendererClient> | 141 base::LazyInstance<ContentRendererClient> |
148 g_empty_content_renderer_client = LAZY_INSTANCE_INITIALIZER; | 142 g_empty_content_renderer_client = LAZY_INSTANCE_INITIALIZER; |
149 base::LazyInstance<ContentUtilityClient> | 143 base::LazyInstance<ContentUtilityClient> |
150 g_empty_content_utility_client = LAZY_INSTANCE_INITIALIZER; | 144 g_empty_content_utility_client = LAZY_INSTANCE_INITIALIZER; |
151 #endif // !OS_IOS && !CHROME_MULTIPLE_DLL_BROWSER | 145 #endif // !OS_IOS && !CHROME_MULTIPLE_DLL_BROWSER |
152 | 146 |
153 #if defined(OS_WIN) | |
154 | |
155 #endif // defined(OS_WIN) | |
156 | |
157 #if defined(OS_POSIX) && !defined(OS_IOS) | 147 #if defined(OS_POSIX) && !defined(OS_IOS) |
158 | 148 |
159 // Setup signal-handling state: resanitize most signals, ignore SIGPIPE. | 149 // Setup signal-handling state: resanitize most signals, ignore SIGPIPE. |
160 void SetupSignalHandlers() { | 150 void SetupSignalHandlers() { |
161 // Sanitise our signal handling state. Signals that were ignored by our | 151 // Sanitise our signal handling state. Signals that were ignored by our |
162 // parent will also be ignored by us. We also inherit our parent's sigmask. | 152 // parent will also be ignored by us. We also inherit our parent's sigmask. |
163 sigset_t empty_signal_set; | 153 sigset_t empty_signal_set; |
164 CHECK_EQ(0, sigemptyset(&empty_signal_set)); | 154 CHECK_EQ(0, sigemptyset(&empty_signal_set)); |
165 CHECK_EQ(0, sigprocmask(SIG_SETMASK, &empty_signal_set, NULL)); | 155 CHECK_EQ(0, sigprocmask(SIG_SETMASK, &empty_signal_set, NULL)); |
166 | 156 |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 sandbox_info_ = *params.sandbox_info; | 418 sandbox_info_ = *params.sandbox_info; |
429 #else // !OS_WIN | 419 #else // !OS_WIN |
430 | 420 |
431 #if defined(OS_ANDROID) | 421 #if defined(OS_ANDROID) |
432 // See note at the initialization of ExitManager, below; basically, | 422 // See note at the initialization of ExitManager, below; basically, |
433 // only Android builds have the ctor/dtor handlers set up to use | 423 // only Android builds have the ctor/dtor handlers set up to use |
434 // TRACE_EVENT right away. | 424 // TRACE_EVENT right away. |
435 TRACE_EVENT0("startup,benchmark", "ContentMainRunnerImpl::Initialize"); | 425 TRACE_EVENT0("startup,benchmark", "ContentMainRunnerImpl::Initialize"); |
436 #endif // OS_ANDROID | 426 #endif // OS_ANDROID |
437 | 427 |
438 // NOTE(willchan): One might ask why these TCMalloc-related calls are done | |
439 // here rather than in process_util_linux.cc with the definition of | |
440 // EnableTerminationOnOutOfMemory(). That's because base shouldn't have a | |
441 // dependency on TCMalloc. Really, we ought to have our allocator shim code | |
442 // implement this EnableTerminationOnOutOfMemory() function. Whateverz. | |
443 // This works for now. | |
444 #if !defined(OS_MACOSX) && defined(USE_TCMALLOC) | 428 #if !defined(OS_MACOSX) && defined(USE_TCMALLOC) |
445 // For tcmalloc, we need to tell it to behave like new. | |
446 tc_set_new_mode(1); | |
447 | |
448 // Provide optional hook for monitoring allocation quantities on a | 429 // Provide optional hook for monitoring allocation quantities on a |
449 // per-thread basis. Only set the hook if the environment indicates this | 430 // per-thread basis. Only set the hook if the environment indicates this |
450 // needs to be enabled. | 431 // needs to be enabled. |
451 const char* profiling = getenv(tracked_objects::kAlternateProfilerTime); | 432 const char* profiling = getenv(tracked_objects::kAlternateProfilerTime); |
452 if (profiling && | 433 if (profiling && |
453 (atoi(profiling) == tracked_objects::TIME_SOURCE_TYPE_TCMALLOC)) { | 434 (atoi(profiling) == tracked_objects::TIME_SOURCE_TYPE_TCMALLOC)) { |
454 tracked_objects::SetAlternateTimeSource( | 435 tracked_objects::SetAlternateTimeSource( |
455 MallocExtension::GetBytesAllocatedOnCurrentThread, | 436 MallocExtension::GetBytesAllocatedOnCurrentThread, |
456 tracked_objects::TIME_SOURCE_TYPE_TCMALLOC); | 437 tracked_objects::TIME_SOURCE_TYPE_TCMALLOC); |
457 } | 438 } |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
832 | 813 |
833 DISALLOW_COPY_AND_ASSIGN(ContentMainRunnerImpl); | 814 DISALLOW_COPY_AND_ASSIGN(ContentMainRunnerImpl); |
834 }; | 815 }; |
835 | 816 |
836 // static | 817 // static |
837 ContentMainRunner* ContentMainRunner::Create() { | 818 ContentMainRunner* ContentMainRunner::Create() { |
838 return new ContentMainRunnerImpl(); | 819 return new ContentMainRunnerImpl(); |
839 } | 820 } |
840 | 821 |
841 } // namespace content | 822 } // namespace content |
OLD | NEW |