diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-10 19:30:16 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-10 19:30:16 +0000 |
commit | 3ab155c9b0b17d7edd376091ed6f2ac6a4695457 (patch) | |
tree | 864a23dbec10048c4a9fb9e0e468490c6483926a /base | |
parent | 75998f628427d0e1da2c2ef00850a7c80dc3c8af (diff) | |
download | chromium_src-3ab155c9b0b17d7edd376091ed6f2ac6a4695457.zip chromium_src-3ab155c9b0b17d7edd376091ed6f2ac6a4695457.tar.gz chromium_src-3ab155c9b0b17d7edd376091ed6f2ac6a4695457.tar.bz2 |
Made logging not look up --enable-dcheck from command line
Made --enable-dcheck a parameter to InitLogging() and fixed up all
callsites.
BUG=62736
TEST=Manual
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=70782
Review URL: http://codereview.chromium.org/6070006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70920 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/logging.cc | 8 | ||||
-rw-r--r-- | base/logging.h | 23 | ||||
-rw-r--r-- | base/logging_unittest.cc | 8 | ||||
-rw-r--r-- | base/test/test_suite.cc | 10 |
4 files changed, 30 insertions, 19 deletions
diff --git a/base/logging.cc b/base/logging.cc index cfb1065..bdce7b3 100644 --- a/base/logging.cc +++ b/base/logging.cc @@ -64,7 +64,7 @@ typedef pthread_mutex_t* MutexHandle; namespace logging { -bool g_enable_dcheck = false; +DcheckState g_dcheck_state = DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; VlogInfo* g_vlog_info = NULL; const char* const log_severity_names[LOG_NUM_SEVERITIES] = { @@ -353,10 +353,10 @@ bool InitializeLogFileHandle() { bool BaseInitLoggingImpl(const PathChar* new_log_file, LoggingDestination logging_dest, LogLockingState lock_log, - OldFileDeletionState delete_old) { + OldFileDeletionState delete_old, + DcheckState dcheck_state) { CommandLine* command_line = CommandLine::ForCurrentProcess(); - g_enable_dcheck = - command_line->HasSwitch(switches::kEnableDCHECK); + g_dcheck_state = dcheck_state; delete g_vlog_info; g_vlog_info = NULL; // Don't bother initializing g_vlog_info unless we use one of the diff --git a/base/logging.h b/base/logging.h index a097568..662deae 100644 --- a/base/logging.h +++ b/base/logging.h @@ -165,6 +165,11 @@ enum LogLockingState { LOCK_LOG_FILE, DONT_LOCK_LOG_FILE }; // Defaults to APPEND_TO_OLD_LOG_FILE. enum OldFileDeletionState { DELETE_OLD_LOG_FILE, APPEND_TO_OLD_LOG_FILE }; +enum DcheckState { + DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS, + ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS +}; + // TODO(avi): do we want to do a unification of character types here? #if defined(OS_WIN) typedef wchar_t PathChar; @@ -188,7 +193,8 @@ typedef char PathChar; bool BaseInitLoggingImpl(const PathChar* log_file, LoggingDestination logging_dest, LogLockingState lock_log, - OldFileDeletionState delete_old); + OldFileDeletionState delete_old, + DcheckState dcheck_state); // Sets the log file name and other global logging state. Calling this function // is recommended, and is normally done at the beginning of application init. @@ -203,8 +209,10 @@ bool BaseInitLoggingImpl(const PathChar* log_file, inline bool InitLogging(const PathChar* log_file, LoggingDestination logging_dest, LogLockingState lock_log, - OldFileDeletionState delete_old) { - return BaseInitLoggingImpl(log_file, logging_dest, lock_log, delete_old); + OldFileDeletionState delete_old, + DcheckState dcheck_state) { + return BaseInitLoggingImpl(log_file, logging_dest, lock_log, + delete_old, dcheck_state); } // Sets the log level. Anything at or above this level will be written to the @@ -600,10 +608,11 @@ enum { DEBUG_MODE = ENABLE_DLOG }; COMPACT_GOOGLE_LOG_EX_ERROR_REPORT(ClassName , ##__VA_ARGS__) #define COMPACT_GOOGLE_LOG_DCHECK COMPACT_GOOGLE_LOG_ERROR_REPORT const LogSeverity LOG_DCHECK = LOG_ERROR_REPORT; -// This is set to true in InitLogging when we want to enable the -// DCHECKs in release. -extern bool g_enable_dcheck; -#define DCHECK_IS_ON() (::logging::g_enable_dcheck && LOG_IS_ON(DCHECK)) +extern DcheckState g_dcheck_state; +#define DCHECK_IS_ON() \ + ((::logging::g_dcheck_state == \ + ::logging::ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS) && \ + LOG_IS_ON(DCHECK)) #else // defined(NDEBUG) diff --git a/base/logging_unittest.cc b/base/logging_unittest.cc index 4b7fdbc..bb6e3d1 100644 --- a/base/logging_unittest.cc +++ b/base/logging_unittest.cc @@ -197,7 +197,7 @@ TEST_F(LoggingTest, DcheckStreamsAreLazy) { #if !defined(LOGGING_IS_OFFICIAL_BUILD) && defined(NDEBUG) // Unofficial release build. - logging::g_enable_dcheck = false; + g_dcheck_state = DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; DCHECK(mock_log_source.Log()) << mock_log_source.Log(); DPCHECK(mock_log_source.Log()) << mock_log_source.Log(); DCHECK_EQ(0, 0) << mock_log_source.Log(); @@ -213,13 +213,13 @@ TEST_F(LoggingTest, Dcheck) { EXPECT_FALSE(DLOG_IS_ON(DCHECK)); #elif defined(NDEBUG) // Unofficial release build. - logging::g_enable_dcheck = true; - logging::SetLogReportHandler(&LogSink); + g_dcheck_state = ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; + SetLogReportHandler(&LogSink); EXPECT_TRUE(DCHECK_IS_ON()); EXPECT_FALSE(DLOG_IS_ON(DCHECK)); #else // Unofficial debug build. - logging::SetLogAssertHandler(&LogSink); + SetLogAssertHandler(&LogSink); EXPECT_TRUE(DCHECK_IS_ON()); EXPECT_TRUE(DLOG_IS_ON(DCHECK)); #endif // defined(LOGGING_IS_OFFICIAL_BUILD) diff --git a/base/test/test_suite.cc b/base/test/test_suite.cc index aa23f04..5f8a616 100644 --- a/base/test/test_suite.cc +++ b/base/test/test_suite.cc @@ -175,10 +175,12 @@ void TestSuite::Initialize() { FilePath exe; PathService::Get(base::FILE_EXE, &exe); FilePath log_filename = exe.ReplaceExtension(FILE_PATH_LITERAL("log")); - logging::InitLogging(log_filename.value().c_str(), - logging::LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG, - logging::LOCK_LOG_FILE, - logging::DELETE_OLD_LOG_FILE); + logging::InitLogging( + log_filename.value().c_str(), + logging::LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG, + logging::LOCK_LOG_FILE, + logging::DELETE_OLD_LOG_FILE, + logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS); // We want process and thread IDs because we may have multiple processes. // Note: temporarily enabled timestamps in an effort to catch bug 6361. logging::SetLogItems(true, true, true, true); |