diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-15 05:03:01 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-15 05:03:01 +0000 |
commit | 17d4f9705877c3e53acf068b0a3264ae6ac6f607 (patch) | |
tree | a8344a16f4fabc20bf3c34cf8606d2f79237df9d | |
parent | 5841576e6063be2a66556077accbee0663d1bc42 (diff) | |
download | chromium_src-17d4f9705877c3e53acf068b0a3264ae6ac6f607.zip chromium_src-17d4f9705877c3e53acf068b0a3264ae6ac6f607.tar.gz chromium_src-17d4f9705877c3e53acf068b0a3264ae6ac6f607.tar.bz2 |
Do not try to shutdown when XIOError happens during startup.
BUG=245371
Review URL: https://chromiumcodereview.appspot.com/17084014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206561 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chrome_browser_main.cc | 10 | ||||
-rw-r--r-- | chrome/browser/chrome_browser_main_x11.cc | 7 | ||||
-rw-r--r-- | chrome/browser/chrome_browser_main_x11.h | 12 |
3 files changed, 21 insertions, 8 deletions
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc index 6f36b65..856e4f2 100644 --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc @@ -708,6 +708,9 @@ DLLEXPORT void __cdecl RelaunchChromeBrowserWithNewCommandLineIfNeeded() { // content::BrowserMainParts implementation ------------------------------------ void ChromeBrowserMainParts::PreEarlyInitialization() { +#if defined(USE_X11) + SetBrowserX11ErrorHandlersPreEarlyInitialization(); +#endif TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreEarlyInitialization"); for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) chrome_extra_parts_[i]->PreEarlyInitialization(); @@ -735,6 +738,9 @@ void ChromeBrowserMainParts::PostMainMessageLoopStart() { TRACE_EVENT0("startup", "ChromeBrowserMainParts::PostMainMessageLoopStart"); for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) chrome_extra_parts_[i]->PostMainMessageLoopStart(); +#if defined(USE_X11) + SetBrowserX11ErrorHandlersPostMainMessageLoopStart(); +#endif } int ChromeBrowserMainParts::PreCreateThreads() { @@ -1201,10 +1207,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { } #endif // !defined(OS_ANDROID) -#if defined(USE_X11) - SetBrowserX11ErrorHandlers(); -#endif - // Desktop construction occurs here, (required before profile creation). PreProfileInit(); diff --git a/chrome/browser/chrome_browser_main_x11.cc b/chrome/browser/chrome_browser_main_x11.cc index a8b833a..a88981b 100644 --- a/chrome/browser/chrome_browser_main_x11.cc +++ b/chrome/browser/chrome_browser_main_x11.cc @@ -96,7 +96,12 @@ int DoUninstallTasks(bool chrome_still_running) { return content::RESULT_CODE_NORMAL_EXIT; } -void SetBrowserX11ErrorHandlers() { +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); diff --git a/chrome/browser/chrome_browser_main_x11.h b/chrome/browser/chrome_browser_main_x11.h index f3f923a..5255cd1 100644 --- a/chrome/browser/chrome_browser_main_x11.h +++ b/chrome/browser/chrome_browser_main_x11.h @@ -7,9 +7,15 @@ #ifndef CHROME_BROWSER_CHROME_BROWSER_MAIN_X11_H_ #define CHROME_BROWSER_CHROME_BROWSER_MAIN_X11_H_ -// Installs the X11 error handlers for the browser process. This will -// allow us to exit cleanly if X exits before us. -void SetBrowserX11ErrorHandlers(); +// Installs the X11 error handlers for the browser process used during +// startup. They simply print error messages and exit because +// we can't shutdown properly while creating and initializing services. +void SetBrowserX11ErrorHandlersPreEarlyInitialization(); + +// Installs the X11 error handlers for the browser process after the +// main message loop has started. This will allow us to exit cleanly +// if X exits before us. +void SetBrowserX11ErrorHandlersPostMainMessageLoopStart(); // Installs empty X11 error handlers. This avoids calling into the message-loop // in case an X11 erro happens while the message-loop is being destroyed. |