diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-01 08:58:33 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-01 08:58:33 +0000 |
commit | 744121a2bf4ccf78a95cd816e696c0fc7f2551a5 (patch) | |
tree | a0df3438a20399a50b753e638c671bc4c7f1347f | |
parent | 1f332d828675b4a711e8a1e8c56c31966fb51ea8 (diff) | |
download | chromium_src-744121a2bf4ccf78a95cd816e696c0fc7f2551a5.zip chromium_src-744121a2bf4ccf78a95cd816e696c0fc7f2551a5.tar.gz chromium_src-744121a2bf4ccf78a95cd816e696c0fc7f2551a5.tar.bz2 |
Make Gtk/Gdk/GLib errors/warnings really fatal.
I had to disable RedirectTest because on Linux it triggered
Gdk assertion. It was a bug in our logging <-> glib logging
glue code that didn't make this test fail earlier.
http://crbug.com/9519
Review URL: http://codereview.chromium.org/56072
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12947 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/app/chrome_dll_main.cc | 39 | ||||
-rw-r--r-- | chrome/chrome.gyp | 1 | ||||
-rw-r--r-- | chrome/test/ui/ui_tests.scons | 1 |
3 files changed, 25 insertions, 16 deletions
diff --git a/chrome/app/chrome_dll_main.cc b/chrome/app/chrome_dll_main.cc index 6ef4c20..46bd0ff 100644 --- a/chrome/app/chrome_dll_main.cc +++ b/chrome/app/chrome_dll_main.cc @@ -159,18 +159,33 @@ bool IncorrectChromeHtmlArguments(const std::wstring& command_line) { #endif // OS_WIN #if defined(OS_LINUX) -static void GtkFatalLogHandler(const gchar* log_domain, - GLogLevelFlags log_level, - const gchar* message, - gpointer userdata) { +static void GLibFatalLogHandler(const gchar* log_domain, + GLogLevelFlags log_level, + const gchar* message, + gpointer userdata) { if (!log_domain) - log_domain = "<all>"; + log_domain = "<unknown>"; if (!message) message = "<no message>"; - NOTREACHED() << "GTK: (" << log_domain << "): " << message; + LOG(FATAL) << log_domain << ": " << message; } -#endif + +static void SetUpGLibLogHandler() { + // Register GLib-handled assertions to go through our logging system. + const char* kLogDomains[] = { NULL, "Gtk", "Gdk", "GLib" }; + for (size_t i = 0; i < arraysize(kLogDomains); i++) { + g_log_set_handler(kLogDomains[i], + static_cast<GLogLevelFlags>(G_LOG_FLAG_RECURSION | + G_LOG_FLAG_FATAL | + G_LOG_LEVEL_ERROR | + G_LOG_LEVEL_CRITICAL | + G_LOG_LEVEL_WARNING), + GLibFatalLogHandler, + NULL); + } +} +#endif // defined(OS_LINUX) // Register the invalid param handler and pure call handler to be able to // notify breakpad when it happens. @@ -404,15 +419,7 @@ int ChromeMain(int argc, const char** argv) { #if defined(OS_LINUX) // gtk_init() can change |argc| and |argv|, but nobody else uses them. gtk_init(&argc, const_cast<char***>(&argv)); - // Register GTK assertions to go through our logging system. - g_log_set_handler(NULL, // All logging domains. - static_cast<GLogLevelFlags>(G_LOG_FLAG_RECURSION | - G_LOG_FLAG_FATAL | - G_LOG_LEVEL_ERROR | - G_LOG_LEVEL_CRITICAL | - G_LOG_LEVEL_WARNING), - GtkFatalLogHandler, - NULL); + SetUpGLibLogHandler(); #endif ScopedOleInitializer ole_initializer; diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index bb12b9c..d0ca8a0 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -1949,6 +1949,7 @@ 'browser/download/download_uitest.cc', 'browser/download/save_page_uitest.cc', 'browser/errorpage_uitest.cc', + 'browser/history/redirect_uitest.cc', 'browser/iframe_uitest.cc', 'browser/interstitial_page_uitest.cc', 'browser/login_prompt_uitest.cc', diff --git a/chrome/test/ui/ui_tests.scons b/chrome/test/ui/ui_tests.scons index bdc2821..28c50ee 100644 --- a/chrome/test/ui/ui_tests.scons +++ b/chrome/test/ui/ui_tests.scons @@ -286,6 +286,7 @@ if not env.Bit('windows'): '$CHROME_DIR/browser/download/save_page_uitest.cc', '$CHROME_DIR/browser/errorpage_uitest.cc', '$CHROME_DIR/browser/iframe_uitest.cc', + '$CHROME_DIR/browser/history/redirect_uitest.cc', '$CHROME_DIR/browser/interstitial_page_uitest.cc', '$CHROME_DIR/browser/login_prompt_uitest.cc', '$CHROME_DIR/browser/metrics/metrics_service_uitest.cc', |