Index: base/logging.h |
diff --git a/base/logging.h b/base/logging.h |
index 7854e3934e974b4670930d6855f3ab8699a8376f..9201913e3a5da175fb3b78585e85a492c9b703bb 100644 |
--- a/base/logging.h |
+++ b/base/logging.h |
@@ -280,14 +280,44 @@ BASE_EXPORT void SetShowErrorDialogs(bool enable_dialogs); |
typedef void (*LogAssertHandlerFunction)(const std::string& str); |
BASE_EXPORT void SetLogAssertHandler(LogAssertHandlerFunction handler); |
-// Sets the Log Message Handler that gets passed every log message before |
-// it's sent to other log destinations (if any). |
-// Returns true to signal that it handled the message and the message |
-// should not be sent to other log destinations. |
-typedef bool (*LogMessageHandlerFunction)(int severity, |
- const char* file, int line, size_t message_start, const std::string& str); |
-BASE_EXPORT void SetLogMessageHandler(LogMessageHandlerFunction handler); |
-BASE_EXPORT LogMessageHandlerFunction GetLogMessageHandler(); |
+// LogMessageHandler is the callback interface for log message handling. |
+// OnMessage() is called for every log message before it's sent to other log |
grt (UTC plus 2)
2017/01/04 09:12:19
nit: i think it's more clear to say messages are s
|
+// destinations (if any), but after LogMessageListener. |
+// Return true in OnMessage() to signal that it handled the message and the |
+// message should not be sent to other log destinations, including other |
+// handlers added before the current one. |
+class BASE_EXPORT LogMessageHandler { |
+ public: |
+ virtual ~LogMessageHandler(); |
+ virtual bool OnMessage(int severity, |
+ const char* file, |
+ int line, |
+ size_t message_start, |
+ const std::string& str) = 0; |
+ |
+ protected: |
+ LogMessageHandler(); |
+}; |
+ |
+BASE_EXPORT size_t LogMessageHandlerCountForTesting(); |
+ |
+// LogMessageListener is similar to LogMessageHandler except that this |
+// interface doesn't support message hijacking, and is preferred over |
+// LogMessageHandler if hijacking is not needed. |
+class BASE_EXPORT LogMessageListener { |
+ public: |
+ virtual ~LogMessageListener(); |
+ virtual void OnMessage(int severity, |
+ const char* file, |
+ int line, |
+ size_t message_start, |
+ const std::string& str) = 0; |
+ |
+ protected: |
+ LogMessageListener(); |
+}; |
+ |
+BASE_EXPORT size_t LogMessageListenerCountForTesting(); |
typedef int LogSeverity; |
const LogSeverity LOG_VERBOSE = -1; // This is level 1 verbosity |