Index: base/trace_event/auto_open_close_event.h |
diff --git a/base/trace_event/auto_open_close_event.h b/base/trace_event/auto_open_close_event.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c59ef01be06acd19d89bf28ab271b751fba10bb2 |
--- /dev/null |
+++ b/base/trace_event/auto_open_close_event.h |
@@ -0,0 +1,56 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef BASE_AUTO_OPEN_CLOSE_EVENT_H_ |
+#define BASE_AUTO_OPEN_CLOSE_EVENT_H_ |
+ |
+#include "base/macros.h" |
+#include "base/memory/weak_ptr.h" |
+#include "base/threading/thread_checker.h" |
+#include "base/time/time.h" |
+#include "base/trace_event/trace_event.h" |
+ |
+namespace base { |
+namespace trace_event { |
+ |
+// Class for tracing events that support "auto-opening" and "auto-closing". |
+// "auto-opening" = if the trace event is started (call Begin() before |
+// tracing is started,the trace event will be opened, with the start time |
+// being the time that the trace event was actually started. |
+// "auto-closing" = if the trace event is started but not ended by the time |
+// tracing ends, then the trace event will be automatically closed at the |
+// end of tracing. |
+class BASE_EXPORT AutoOpenCloseEvent |
+ : public TraceLog::AsyncEnabledStateObserver { |
+ public: |
+ enum Type { |
+ ASYNC |
+ }; |
+ |
+ // As in the rest of the tracing macros, the const char* arguments here |
+ // must be pointers to indefinitely lived strings (e.g. hard-coded string |
+ // literals are okay, but not strings created by c_str()) |
+ AutoOpenCloseEvent(Type type, const char* category, const char* event_name); |
+ ~AutoOpenCloseEvent() override; |
+ |
+ void Begin(); |
+ void End(); |
+ |
+ // AsyncEnabledStateObserver implementation |
+ void OnTraceLogEnabled() override; |
+ void OnTraceLogDisabled() override; |
+ |
+ private: |
+ const char* const category_; |
+ const char* const event_name_; |
+ base::TimeTicks start_time_; |
+ base::ThreadChecker thread_checker_; |
+ WeakPtrFactory<AutoOpenCloseEvent> weak_factory_; |
+ DISALLOW_COPY_AND_ASSIGN(AutoOpenCloseEvent); |
Primiano Tucci (use gerrit)
2016/10/12 16:36:50
nit: add a \n beween line 49 and 50
alexandermont
2016/10/13 19:15:53
Done
|
+}; |
+ |
+} // namespace trace_event |
+} // namespace base |
+ |
+#endif // BASE_AUTO_OPEN_CLOSE_EVENT_H_ |