Index: base/logging.h |
diff --git a/base/logging.h b/base/logging.h |
index 7854e3934e974b4670930d6855f3ab8699a8376f..09ea63de77d65c24e9be3af33e26c6a678c00f29 100644 |
--- a/base/logging.h |
+++ b/base/logging.h |
@@ -15,6 +15,7 @@ |
#include <utility> |
#include "base/base_export.h" |
+#include "base/callback_forward.h" |
#include "base/compiler_specific.h" |
#include "base/debug/debugger.h" |
#include "base/macros.h" |
@@ -141,6 +142,13 @@ |
// There is the special severity of DFATAL, which logs FATAL in debug mode, |
// ERROR in normal mode. |
+// Forward declaration of base::StringPiece for LogAssertHandlerFunction. |
+namespace base { |
+template <typename STRING_TYPE> |
Paweł Hajdan Jr.
2017/03/13 15:49:50
For non-trivial types like StringPiece, I'd prefer
alex-ac
2017/03/14 10:23:14
base/strings/string_piece.h includes base/logging.
|
+class BasicStringPiece; |
+typedef BasicStringPiece<std::string> StringPiece; |
+} |
+ |
namespace logging { |
// TODO(avi): do we want to do a unification of character types here? |
@@ -274,11 +282,24 @@ BASE_EXPORT void SetLogItems(bool enable_process_id, bool enable_thread_id, |
BASE_EXPORT void SetShowErrorDialogs(bool enable_dialogs); |
// Sets the Log Assert Handler that will be used to notify of check failures. |
+// Resets Log Assert Handler on object destruction. |
// The default handler shows a dialog box and then terminate the process, |
// however clients can use this function to override with their own handling |
// (e.g. a silent one for Unit Tests) |
-typedef void (*LogAssertHandlerFunction)(const std::string& str); |
-BASE_EXPORT void SetLogAssertHandler(LogAssertHandlerFunction handler); |
+typedef base::Callback<void(const char* file, |
+ int line, |
+ const base::StringPiece& message, |
+ const base::StringPiece& stack_trace)> |
+ LogAssertHandlerFunction; |
+ |
+class BASE_EXPORT ScopedLogAssertHandler { |
+ public: |
+ explicit ScopedLogAssertHandler(LogAssertHandlerFunction handler); |
+ ~ScopedLogAssertHandler(); |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(ScopedLogAssertHandler); |
+}; |
// Sets the Log Message Handler that gets passed every log message before |
// it's sent to other log destinations (if any). |