diff options
author | Feng Qian <> | 2009-04-10 18:11:29 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-04-10 18:11:29 -0700 |
commit | 8f72e70a9fd78eec56623b3a62e68f16b7b27e28 (patch) | |
tree | 181bf9a400c30a1bf34ea6d72560e8d00111d549 /WebCore/platform/gtk/LoggingGtk.cpp | |
parent | 7ed56f225e0ade046e1c2178977f72b2d896f196 (diff) | |
download | external_webkit-8f72e70a9fd78eec56623b3a62e68f16b7b27e28.zip external_webkit-8f72e70a9fd78eec56623b3a62e68f16b7b27e28.tar.gz external_webkit-8f72e70a9fd78eec56623b3a62e68f16b7b27e28.tar.bz2 |
AI 145796: Land the WebKit merge @r42026.
Automated import of CL 145796
Diffstat (limited to 'WebCore/platform/gtk/LoggingGtk.cpp')
-rw-r--r-- | WebCore/platform/gtk/LoggingGtk.cpp | 86 |
1 files changed, 84 insertions, 2 deletions
diff --git a/WebCore/platform/gtk/LoggingGtk.cpp b/WebCore/platform/gtk/LoggingGtk.cpp index 5bc1559..c46364c 100644 --- a/WebCore/platform/gtk/LoggingGtk.cpp +++ b/WebCore/platform/gtk/LoggingGtk.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2007 Alp Toker <alp@atoker.com> + * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -20,12 +21,93 @@ #include "config.h" #include "Logging.h" +#include <glib.h> +#include <string.h> + namespace WebCore { +// Inspired by the code used by the Qt port + +static WTFLogChannel* getChannelFromName(const char* channelName) +{ + if (strlen(channelName) < 3) + return 0; + + if (!g_ascii_strcasecmp(channelName, "BackForward")) + return &LogBackForward; + if (!g_ascii_strcasecmp(channelName, "Editing")) + return &LogEditing; + if (!g_ascii_strcasecmp(channelName, "Events")) + return &LogEvents; + if (!g_ascii_strcasecmp(channelName, "Frames")) + return &LogFrames; + if (!g_ascii_strcasecmp(channelName, "FTP")) + return &LogFTP; + if (!g_ascii_strcasecmp(channelName, "History")) + return &LogHistory; + if (!g_ascii_strcasecmp(channelName, "IconDatabase")) + return &LogIconDatabase; + if (!g_ascii_strcasecmp(channelName, "Loading")) + return &LogLoading; + if (!g_ascii_strcasecmp(channelName, "Media")) + return &LogMedia; + if (!g_ascii_strcasecmp(channelName, "Network")) + return &LogNetwork; + if (!g_ascii_strcasecmp(channelName, "NotYetImplemented")) + return &LogNotYetImplemented; + if (!g_ascii_strcasecmp(channelName, "PageCache")) + return &LogPageCache; + if (!g_ascii_strcasecmp(channelName, "PlatformLeaks")) + return &LogPlatformLeaks; + if (!g_ascii_strcasecmp(channelName, "Plugin")) + return &LogPlugin; + if (!g_ascii_strcasecmp(channelName, "PopupBlocking")) + return &LogPopupBlocking; + if (!g_ascii_strcasecmp(channelName, "SpellingAndGrammar")) + return &LogSpellingAndGrammar; + if (!g_ascii_strcasecmp(channelName, "SQLDatabase")) + return &LogSQLDatabase; + if (!g_ascii_strcasecmp(channelName, "StorageAPI")) + return &LogStorageAPI; + if (!g_ascii_strcasecmp(channelName, "TextConversion")) + return &LogTextConversion; + if (!g_ascii_strcasecmp(channelName, "Threading")) + return &LogThreading; + + return 0; +} + void InitializeLoggingChannelsIfNecessary() { - // FIXME: Add a way for the user to specify which - // logs he/she would like turned on. + static bool didInitializeLoggingChannels = false; + if (didInitializeLoggingChannels) + return; + + didInitializeLoggingChannels = true; + + char* logEnv = getenv("WEBKIT_DEBUG"); + if (!logEnv) + return; + + // we set up the logs anyway because some of our logging, such as + // soup's is available in release builds +#if defined(NDEBUG) + g_warning("WEBKIT_DEBUG is not empty, but this is a release build. Notice that many log messages will only appear in a debug build."); +#endif + + char** logv = g_strsplit(logEnv, " ", -1); + + for (int i = 0; logv[i]; i++) { + WTFLogChannel* channel = getChannelFromName(logv[i]); + if (!channel) + continue; + channel->state = WTFLogChannelOn; + } + + g_strfreev(logv); + + // to disable logging notImplemented set the DISABLE_NI_WARNING + // environment variable to 1 LogNotYetImplemented.state = WTFLogChannelOn; } |