Index: base/trace_event/persistent_async_event.cc |
diff --git a/base/trace_event/persistent_async_event.cc b/base/trace_event/persistent_async_event.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fc78987aeb46708685ef1899377923bb7ff21140 |
--- /dev/null |
+++ b/base/trace_event/persistent_async_event.cc |
@@ -0,0 +1,61 @@ |
+// 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. |
+ |
+#include "base/trace_event/persistent_async_event.h" |
+ |
+#include "base/macros.h" |
+#include "base/time/time.h" |
+#include "base/trace_event/trace_event.h" |
+ |
+// test |
charliea (OOO until 10-5)
2016/08/29 17:27:27
Huh?
alexandermont
2016/08/29 18:59:06
Deleted. I don't remember why i put this comment t
|
+ |
+namespace base { |
charliea (OOO until 10-5)
2016/08/29 17:27:27
As strange as it seems, I think there's normall a
alexandermont
2016/08/29 18:59:06
Done
|
+namespace trace_event { |
+ |
+PersistentAsyncEvent::PersistentAsyncEvent(size_t id) |
+ : id_(id), active_(false) {} |
+ |
+PersistentAsyncEvent::~PersistentAsyncEvent() {} |
+ |
+void PersistentAsyncEvent::Start() { |
+ RecordStartEvent(); |
+ active_ = true; |
+ start_time_ = base::TimeTicks::Now().ToInternalValue(); |
charliea (OOO until 10-5)
2016/08/29 17:27:27
Generally, if you ever find yourself using "ToInte
alexandermont
2016/08/29 18:59:06
The TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP0 macro
|
+} |
+ |
+void PersistentAsyncEvent::Stop() { |
+ RecordStopEvent(); |
+ active_ = false; |
+} |
+ |
+void PersistentAsyncEvent::RecordStartEvent() { |
+ TRACE_EVENT_ASYNC_BEGIN0("benchmark", "PersistentAsyncStart", id_); |
+} |
+ |
+void PersistentAsyncEvent::RecordStartEventWithTimestamp(int64_t timestamp) { |
+ TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP0( |
+ "benchmark", "PersistentAsyncStart", id_, timestamp); |
+} |
+ |
+void PersistentAsyncEvent::RecordStopEvent() { |
+ TRACE_EVENT_ASYNC_END0("benchmark", "PersistentAsyncStop", id_); |
+} |
+ |
+void PersistentAsyncEvent::OnTraceLogEnabled() { |
+ if (active_) |
+ { |
+ RecordStartEventWithTimestamp(start_time_); |
+ } |
+} |
+ |
+void PersistentAsyncEvent::OnTraceLogDisabled() { |
+ // TODO(alexandermont): How do we call RecordStopEvent before log disabled? |
+ if (active_) |
+ { |
+ RecordStopEvent(); |
+ } |
+} |
+ |
+} |
+} |