Index: content/app/content_main_runner.cc |
diff --git a/content/app/content_main_runner.cc b/content/app/content_main_runner.cc |
index f983c2bf4cb47b15d2b9f2131e5af2c2fcd1a22b..36ca4abffd91587e1dd406faad9a937b951989f7 100644 |
--- a/content/app/content_main_runner.cc |
+++ b/content/app/content_main_runner.cc |
@@ -43,7 +43,6 @@ |
#include "build/build_config.h" |
#include "components/tracing/common/trace_startup.h" |
#include "content/app/mojo/mojo_init.h" |
-#include "content/common/set_process_title.h" |
#include "content/common/url_schemes.h" |
#include "content/public/app/content_main.h" |
#include "content/public/app/content_main_delegate.h" |
@@ -57,7 +56,6 @@ |
#include "ipc/ipc_descriptors.h" |
#include "media/base/media.h" |
#include "ppapi/features/features.h" |
-#include "services/service_manager/public/cpp/shared_file_util.h" |
#include "ui/base/ui_base_paths.h" |
#include "ui/base/ui_base_switches.h" |
@@ -71,15 +69,11 @@ |
#include <cstring> |
#include "base/trace_event/trace_event_etw_export_win.h" |
-#include "base/win/process_startup_helper.h" |
#include "sandbox/win/src/sandbox_types.h" |
-#include "ui/base/win/atl_module.h" |
#include "ui/display/win/dpi.h" |
#elif defined(OS_MACOSX) |
-#include "base/allocator/allocator_shim.h" |
#include "base/mac/scoped_nsautorelease_pool.h" |
#include "base/power_monitor/power_monitor_device_source.h" |
-#include "content/app/mac/mac_init.h" |
#include "content/browser/mach_broker_mac.h" |
#include "content/common/sandbox_init_mac.h" |
#endif // OS_WIN |
@@ -238,53 +232,6 @@ base::LazyInstance<ContentUtilityClient>::DestructorAtExit |
g_empty_content_utility_client = LAZY_INSTANCE_INITIALIZER; |
#endif // !CHROME_MULTIPLE_DLL_BROWSER |
-#if defined(OS_POSIX) |
- |
-// Setup signal-handling state: resanitize most signals, ignore SIGPIPE. |
-void SetupSignalHandlers() { |
- // Sanitise our signal handling state. Signals that were ignored by our |
- // parent will also be ignored by us. We also inherit our parent's sigmask. |
- sigset_t empty_signal_set; |
- CHECK_EQ(0, sigemptyset(&empty_signal_set)); |
- CHECK_EQ(0, sigprocmask(SIG_SETMASK, &empty_signal_set, NULL)); |
- |
- struct sigaction sigact; |
- memset(&sigact, 0, sizeof(sigact)); |
- sigact.sa_handler = SIG_DFL; |
- static const int signals_to_reset[] = |
- {SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGABRT, SIGFPE, SIGSEGV, |
- SIGALRM, SIGTERM, SIGCHLD, SIGBUS, SIGTRAP}; // SIGPIPE is set below. |
- for (unsigned i = 0; i < arraysize(signals_to_reset); i++) { |
- CHECK_EQ(0, sigaction(signals_to_reset[i], &sigact, NULL)); |
- } |
- |
- // Always ignore SIGPIPE. We check the return value of write(). |
- CHECK_NE(SIG_ERR, signal(SIGPIPE, SIG_IGN)); |
-} |
- |
-void PopulateFDsFromCommandLine() { |
- const std::string& shared_file_param = |
- base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
- switches::kSharedFiles); |
- if (shared_file_param.empty()) |
- return; |
- |
- base::Optional<std::map<int, std::string>> shared_file_descriptors = |
- service_manager::ParseSharedFileSwitchValue(shared_file_param); |
- if (!shared_file_descriptors) |
- return; |
- |
- for (const auto& descriptor : *shared_file_descriptors) { |
- base::MemoryMappedFile::Region region; |
- const std::string& key = descriptor.second; |
- base::ScopedFD fd = base::GlobalDescriptors::GetInstance()->TakeFD( |
- descriptor.first, ®ion); |
- base::FileDescriptorStore::GetInstance().Set(key, std::move(fd), region); |
- } |
-} |
- |
-#endif // OS_POSIX |
- |
void CommonSubprocessInit() { |
#if defined(OS_WIN) |
// HACK: Let Windows know that we have started. This is needed to suppress |
@@ -531,17 +478,14 @@ class ContentMainRunnerImpl : public ContentMainRunner { |
env_mode_ = params.env_mode; |
#endif |
-#if defined(OS_MACOSX) && BUILDFLAG(USE_EXPERIMENTAL_ALLOCATOR_SHIM) |
- base::allocator::InitializeAllocatorShim(); |
-#endif |
- base::EnableTerminationOnOutOfMemory(); |
#if defined(OS_WIN) |
- base::win::RegisterInvalidParamHandler(); |
- ui::win::CreateATLModuleIfNeeded(); |
- |
sandbox_info_ = *params.sandbox_info; |
#else // !OS_WIN |
+#if defined(OS_MACOSX) |
+ autorelease_pool_ = params.autorelease_pool; |
+#endif // defined(OS_MACOSX) |
+ |
#if defined(OS_ANDROID) |
// See note at the initialization of ExitManager, below; basically, |
// only Android builds have the ctor/dtor handlers set up to use |
@@ -552,18 +496,8 @@ class ContentMainRunnerImpl : public ContentMainRunner { |
base::GlobalDescriptors* g_fds = base::GlobalDescriptors::GetInstance(); |
ALLOW_UNUSED_LOCAL(g_fds); |
- // On Android, |
- // - setlocale() is not supported. |
- // - We do not override the signal handlers so that we can get |
- // stack trace when crashing. |
- // - The ipc_fd is passed through the Java service. |
- // Thus, these are all disabled. |
+// On Android, the ipc_fd is passed through the Java service. |
#if !defined(OS_ANDROID) |
- // Set C library locale to make sure CommandLine can parse argument values |
- // in correct encoding. |
- setlocale(LC_ALL, ""); |
- |
- SetupSignalHandlers(); |
g_fds->Set(kMojoIPCChannel, |
kMojoIPCChannel + base::GlobalDescriptors::kBaseDescriptor); |
@@ -577,7 +511,6 @@ class ContentMainRunnerImpl : public ContentMainRunner { |
kCrashDumpSignal + base::GlobalDescriptors::kBaseDescriptor); |
#endif // OS_LINUX || OS_OPENBSD |
- |
#endif // !OS_WIN |
is_initialized_ = true; |
@@ -596,43 +529,9 @@ class ContentMainRunnerImpl : public ContentMainRunner { |
} |
#endif // !OS_ANDROID |
-#if defined(OS_MACOSX) |
- // We need this pool for all the objects created before we get to the |
- // event loop, but we don't want to leave them hanging around until the |
- // app quits. Each "main" needs to flush this pool right before it goes into |
- // its main event loop to get rid of the cruft. |
- autorelease_pool_.reset(new base::mac::ScopedNSAutoreleasePool()); |
- InitializeMac(); |
-#endif |
- |
-// On Android, the command line is initialized and the FDs set when the |
-// library is loaded and we have already started our TRACE_EVENT0. |
#if !defined(OS_ANDROID) |
- // argc/argv are ignored on Windows and Android; see command_line.h for |
- // details. |
- int argc = 0; |
- const char** argv = NULL; |
- |
-#if !defined(OS_WIN) |
- argc = params.argc; |
- argv = params.argv; |
-#endif |
- |
- base::CommandLine::Init(argc, argv); |
- |
-#if defined(OS_POSIX) |
- PopulateFDsFromCommandLine(); |
-#endif |
- |
- base::EnableTerminationOnHeapCorruption(); |
- |
- // TODO(yiyaoliu, vadimt): Remove this once crbug.com/453640 is fixed. |
- // Enable profiler recording right after command line is initialized so that |
- // browser startup can be instrumented. |
if (delegate_ && delegate_->ShouldEnableProfilerRecording()) |
tracked_objects::ScopedTracker::Enable(); |
- |
- SetProcessTitleFromCommandLine(argv); |
#endif // !OS_ANDROID |
int exit_code = 0; |
@@ -646,9 +545,6 @@ class ContentMainRunnerImpl : public ContentMainRunner { |
std::string process_type = |
command_line.GetSwitchValueASCII(switches::kProcessType); |
- // Initialize mojo here so that services can be registered. |
- InitializeMojo(); |
- |
#if defined(OS_WIN) |
if (command_line.HasSwitch(switches::kDeviceScaleFactor)) { |
std::string scale_factor_string = command_line.GetSwitchValueASCII( |
@@ -709,8 +605,6 @@ class ContentMainRunnerImpl : public ContentMainRunner { |
(!delegate_ || delegate_->ShouldSendMachPort(process_type))) { |
MachBroker::ChildSendTaskPortToParent(); |
} |
-#elif defined(OS_WIN) |
- base::win::SetupCRT(command_line); |
#endif |
// If we are on a platform where the default allocator is overridden (shim |
@@ -826,7 +720,7 @@ class ContentMainRunnerImpl : public ContentMainRunner { |
#if defined(OS_WIN) |
main_params.sandbox_info = &sandbox_info_; |
#elif defined(OS_MACOSX) |
- main_params.autorelease_pool = autorelease_pool_.get(); |
+ main_params.autorelease_pool = autorelease_pool_; |
#endif |
#if defined(USE_AURA) |
main_params.env_mode = env_mode_; |
@@ -854,10 +748,6 @@ class ContentMainRunnerImpl : public ContentMainRunner { |
#endif // _CRTDBG_MAP_ALLOC |
#endif // OS_WIN |
-#if defined(OS_MACOSX) |
- autorelease_pool_.reset(NULL); |
-#endif |
- |
exit_manager_.reset(NULL); |
delegate_ = NULL; |
@@ -884,7 +774,7 @@ class ContentMainRunnerImpl : public ContentMainRunner { |
#if defined(OS_WIN) |
sandbox::SandboxInterfaceInfo sandbox_info_; |
#elif defined(OS_MACOSX) |
- std::unique_ptr<base::mac::ScopedNSAutoreleasePool> autorelease_pool_; |
+ base::mac::ScopedNSAutoreleasePool* autorelease_pool_ = nullptr; |
#endif |
base::Closure* ui_task_; |