Index: content/common/child_process.cc |
diff --git a/content/common/child_process.cc b/content/common/child_process.cc |
deleted file mode 100644 |
index e8293a4fa9fab2a3d4155ceca5a2e1353bc4b232..0000000000000000000000000000000000000000 |
--- a/content/common/child_process.cc |
+++ /dev/null |
@@ -1,142 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "content/common/child_process.h" |
- |
-#if defined(OS_POSIX) && !defined(OS_ANDROID) |
-#include <signal.h> // For SigUSR1Handler below. |
-#endif |
- |
-#include "base/message_loop.h" |
-#include "base/metrics/statistics_recorder.h" |
-#include "base/process_util.h" |
-#include "base/string_number_conversions.h" |
-#include "base/threading/thread.h" |
-#include "base/utf_string_conversions.h" |
-#include "content/common/child_thread.h" |
- |
-#if defined(OS_ANDROID) |
-#include "base/debug/debugger.h" |
-#endif |
- |
-#if defined(OS_POSIX) && !defined(OS_ANDROID) |
-static void SigUSR1Handler(int signal) { } |
-#endif |
- |
-namespace content { |
-// The singleton instance for this process. |
-ChildProcess* child_process = NULL; |
- |
-ChildProcess::ChildProcess() |
- : ref_count_(0), |
- shutdown_event_(true, false), |
- io_thread_("Chrome_ChildIOThread") { |
- DCHECK(!child_process); |
- child_process = this; |
- |
- base::StatisticsRecorder::Initialize(); |
- |
- // We can't recover from failing to start the IO thread. |
- CHECK(io_thread_.StartWithOptions( |
- base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
- |
-#if defined(OS_ANDROID) |
- io_thread_.SetPriority(base::kThreadPriority_Display); |
-#endif |
-} |
- |
-ChildProcess::~ChildProcess() { |
- DCHECK(child_process == this); |
- |
- // Signal this event before destroying the child process. That way all |
- // background threads can cleanup. |
- // For example, in the renderer the RenderThread instances will be able to |
- // notice shutdown before the render process begins waiting for them to exit. |
- shutdown_event_.Signal(); |
- |
- // Kill the main thread object before nulling child_process, since |
- // destruction code might depend on it. |
- if (main_thread_) { // null in unittests. |
- main_thread_->Shutdown(); |
- main_thread_.reset(); |
- } |
- |
- child_process = NULL; |
-} |
- |
-ChildThread* ChildProcess::main_thread() { |
- return main_thread_.get(); |
-} |
- |
-void ChildProcess::set_main_thread(ChildThread* thread) { |
- main_thread_.reset(thread); |
-} |
- |
-void ChildProcess::AddRefProcess() { |
- DCHECK(!main_thread_.get() || // null in unittests. |
- base::MessageLoop::current() == main_thread_->message_loop()); |
- ref_count_++; |
-} |
- |
-void ChildProcess::ReleaseProcess() { |
- DCHECK(!main_thread_.get() || // null in unittests. |
- base::MessageLoop::current() == main_thread_->message_loop()); |
- DCHECK(ref_count_); |
- DCHECK(child_process); |
- if (--ref_count_) |
- return; |
- |
- if (main_thread_) // null in unittests. |
- main_thread_->OnProcessFinalRelease(); |
-} |
- |
-ChildProcess* ChildProcess::current() { |
- return child_process; |
-} |
- |
-base::WaitableEvent* ChildProcess::GetShutDownEvent() { |
- DCHECK(child_process); |
- return &child_process->shutdown_event_; |
-} |
- |
-void ChildProcess::WaitForDebugger(const std::string& label) { |
-#if defined(OS_WIN) |
-#if defined(GOOGLE_CHROME_BUILD) |
- std::string title = "Google Chrome"; |
-#else // CHROMIUM_BUILD |
- std::string title = "Chromium"; |
-#endif // CHROMIUM_BUILD |
- title += " "; |
- title += label; // makes attaching to process easier |
- std::string message = label; |
- message += " starting with pid: "; |
- message += base::IntToString(base::GetCurrentProcId()); |
- ::MessageBox(NULL, UTF8ToWide(message).c_str(), UTF8ToWide(title).c_str(), |
- MB_OK | MB_SETFOREGROUND); |
-#elif defined(OS_POSIX) |
-#if defined(OS_ANDROID) |
- LOG(ERROR) << label << " waiting for GDB."; |
- // Wait 24 hours for a debugger to be attached to the current process. |
- base::debug::WaitForDebugger(24 * 60 * 60, false); |
-#else |
- // TODO(playmobil): In the long term, overriding this flag doesn't seem |
- // right, either use our own flag or open a dialog we can use. |
- // This is just to ease debugging in the interim. |
- LOG(ERROR) << label |
- << " (" |
- << getpid() |
- << ") paused waiting for debugger to attach. " |
- << "Send SIGUSR1 to unpause."; |
- // Install a signal handler so that pause can be woken. |
- struct sigaction sa; |
- memset(&sa, 0, sizeof(sa)); |
- sa.sa_handler = SigUSR1Handler; |
- sigaction(SIGUSR1, &sa, NULL); |
- |
- pause(); |
-#endif // defined(OS_ANDROID) |
-#endif // defined(OS_POSIX) |
-} |
- |
-} // namespace content |