Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Unified Diff: third_party/WebKit/Source/wtf/Assertions.h

Issue 1840693002: Restore ScopedLogger and add documentation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address review comments Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/wtf/Assertions.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/wtf/Assertions.h
diff --git a/third_party/WebKit/Source/wtf/Assertions.h b/third_party/WebKit/Source/wtf/Assertions.h
index 2c363f941fccb79e425c665803b6c4522c84e737..13dbd30e156c9b367c4738d7e02b90c56dff8df4 100644
--- a/third_party/WebKit/Source/wtf/Assertions.h
+++ b/third_party/WebKit/Source/wtf/Assertions.h
@@ -40,6 +40,7 @@
*/
+#include "base/gtest_prod_util.h"
#include "base/logging.h"
#include "wtf/Compiler.h"
#include "wtf/Noncopyable.h"
@@ -89,6 +90,58 @@ WTF_EXPORT void WTFGetBacktrace(void** stack, int* size);
WTF_EXPORT void WTFReportBacktrace(int framesToShow = 31);
WTF_EXPORT void WTFPrintBacktrace(void** stack, int size);
+namespace WTF {
+
+#if LOG_DISABLED
+
+#define WTF_CREATE_SCOPED_LOGGER(...) ((void) 0)
+#define WTF_CREATE_SCOPED_LOGGER_IF(...) ((void) 0)
+#define WTF_APPEND_SCOPED_LOGGER(...) ((void) 0)
+
+#else
+
+// ScopedLogger wraps log messages in parentheses, with indentation proportional
+// to the number of instances. This makes it easy to see the flow of control in
+// the output, particularly when instrumenting recursive functions.
+//
+// NOTE: This class is a debugging tool, not intended for use by checked-in
+// code. Please do not remove it.
+//
+class WTF_EXPORT ScopedLogger {
+ WTF_MAKE_NONCOPYABLE(ScopedLogger);
+public:
+ // The first message is passed to the constructor. Additional messages for
+ // the same scope can be added with log(). If condition is false, produce no
+ // output and do not create a scope.
+ ScopedLogger(bool condition, const char* format, ...) WTF_ATTRIBUTE_PRINTF(3, 4);
+ ~ScopedLogger();
+ void log(const char* format, ...) WTF_ATTRIBUTE_PRINTF(2, 3);
+
+private:
+ FRIEND_TEST_ALL_PREFIXES(AssertionsTest, ScopedLogger);
+ using PrintFunctionPtr = void (*)(const char* format, va_list args);
+ static void setPrintFuncForTests(PrintFunctionPtr p) { m_printFunc = p; } // Note: not thread safe.
+
+ void init(const char* format, va_list args);
+ void writeNewlineIfNeeded();
+ void indent();
+ void print(const char* format, ...);
+ void printIndent();
+ static ScopedLogger*& current();
+
+ ScopedLogger* const m_parent;
+ bool m_multiline; // The ')' will go on the same line if there is only one entry.
+ static PrintFunctionPtr m_printFunc;
+};
+
+#define WTF_CREATE_SCOPED_LOGGER(name, ...) WTF::ScopedLogger name(true, __VA_ARGS__)
+#define WTF_CREATE_SCOPED_LOGGER_IF(name, condition, ...) WTF::ScopedLogger name(condition, __VA_ARGS__)
+#define WTF_APPEND_SCOPED_LOGGER(name, ...) (name.log(__VA_ARGS__))
+
+#endif // LOG_DISABLED
+
+} // namespace WTF
+
/* IMMEDIATE_CRASH() - Like CRASH() below but crashes in the fastest, simplest possible way with no attempt at logging. */
#ifndef IMMEDIATE_CRASH
#if COMPILER(GCC) || COMPILER(CLANG)
« no previous file with comments | « no previous file | third_party/WebKit/Source/wtf/Assertions.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698