diff options
Diffstat (limited to 'base/trace_event/auto_open_close_event.h')
-rw-r--r-- | base/trace_event/auto_open_close_event.h | 57 |
1 files changed, 57 insertions, 0 deletions
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 0000000000..795a4948ac --- /dev/null +++ b/base/trace_event/auto_open_close_event.h @@ -0,0 +1,57 @@ +// 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); +}; + +} // namespace trace_event +} // namespace base + +#endif // BASE_AUTO_OPEN_CLOSE_EVENT_H_
\ No newline at end of file |