Index: chrome/browser/chrome_browser_main_x11.cc |
=================================================================== |
--- chrome/browser/chrome_browser_main_x11.cc (revision 210624) |
+++ chrome/browser/chrome_browser_main_x11.cc (working copy) |
@@ -1,112 +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 "chrome/browser/chrome_browser_main.h" |
- |
-#include "base/bind.h" |
-#include "base/debug/debugger.h" |
-#include "base/message_loop.h" |
-#include "chrome/browser/browser_shutdown.h" |
-#include "chrome/browser/lifetime/application_lifetime.h" |
-#include "chrome/browser/metrics/metrics_service.h" |
-#include "chrome/common/chrome_result_codes.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "ui/base/x/x11_util.h" |
-#include "ui/base/x/x11_util_internal.h" |
- |
-#if defined(USE_LINUX_BREAKPAD) |
-#include "chrome/app/breakpad_linux.h" |
-#endif |
- |
-using content::BrowserThread; |
- |
-namespace { |
- |
-// Indicates that we're currently responding to an IO error (by shutting down). |
-bool g_in_x11_io_error_handler = false; |
- |
-// Number of seconds to wait for UI thread to get an IO error if we get it on |
-// the background thread. |
-const int kWaitForUIThreadSeconds = 10; |
- |
-int BrowserX11ErrorHandler(Display* d, XErrorEvent* error) { |
- if (!g_in_x11_io_error_handler) |
- base::MessageLoop::current()->PostTask( |
- FROM_HERE, |
- base::Bind(&ui::LogErrorEventDescription, d, *error)); |
- return 0; |
-} |
- |
- |
-// This function is used to help us diagnose crash dumps that happen |
-// during the shutdown process. |
-NOINLINE void WaitingForUIThreadToHandleIOError() { |
- // Ensure function isn't optimized away. |
- asm(""); |
- sleep(kWaitForUIThreadSeconds); |
-} |
- |
-int BrowserX11IOErrorHandler(Display* d) { |
- if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
- // Wait for the UI thread (which has a different connection to the X server) |
- // to get the error. We can't call shutdown from this thread without |
- // tripping an error. Doing it through a function so that we'll be able |
- // to see it in any crash dumps. |
- WaitingForUIThreadToHandleIOError(); |
- return 0; |
- } |
- // If there's an IO error it likely means the X server has gone away |
- if (!g_in_x11_io_error_handler) { |
- g_in_x11_io_error_handler = true; |
- LOG(ERROR) << "X IO error received (X server probably went away)"; |
- browser_shutdown::SetShuttingDownWithoutClosingBrowsers(true); |
- chrome::SessionEnding(); |
- } |
- |
- return 0; |
-} |
- |
-int X11EmptyErrorHandler(Display* d, XErrorEvent* error) { |
- return 0; |
-} |
- |
-int X11EmptyIOErrorHandler(Display* d) { |
- return 0; |
-} |
- |
-} // namespace |
- |
-void RecordBreakpadStatusUMA(MetricsService* metrics) { |
-#if defined(USE_LINUX_BREAKPAD) |
- metrics->RecordBreakpadRegistration(IsCrashReporterEnabled()); |
-#else |
- metrics->RecordBreakpadRegistration(false); |
-#endif |
- metrics->RecordBreakpadHasDebugger(base::debug::BeingDebugged()); |
-} |
- |
-void WarnAboutMinimumSystemRequirements() { |
- // Nothing to warn about on X11 right now. |
-} |
- |
-// From browser_main_win.h, stubs until we figure out the right thing... |
- |
-int DoUninstallTasks(bool chrome_still_running) { |
- return content::RESULT_CODE_NORMAL_EXIT; |
-} |
- |
-void SetBrowserX11ErrorHandlersPreEarlyInitialization() { |
- // Use default error handlers during startup. |
- ui::SetX11ErrorHandlers(NULL, NULL); |
-} |
- |
-void SetBrowserX11ErrorHandlersPostMainMessageLoopStart() { |
- // Set up error handlers to make sure profile gets written if X server |
- // goes away. |
- ui::SetX11ErrorHandlers(BrowserX11ErrorHandler, BrowserX11IOErrorHandler); |
-} |
- |
-void UnsetBrowserX11ErrorHandlers() { |
- ui::SetX11ErrorHandlers(X11EmptyErrorHandler, X11EmptyIOErrorHandler); |
-} |