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

Unified Diff: base/trace_event/trace_log.h

Issue 1956323002: Introduce TraceLog::AsyncEnabledStateObserver (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix more compile error Created 4 years, 7 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
Index: base/trace_event/trace_log.h
diff --git a/base/trace_event/trace_log.h b/base/trace_event/trace_log.h
index 3f09674829381f30825e9ceea2734b0cf7111fc9..945aa45ef268acb72a514d1d366715e82e5dc8b9 100644
--- a/base/trace_event/trace_log.h
+++ b/base/trace_event/trace_log.h
@@ -119,6 +119,26 @@ class BASE_EXPORT TraceLog : public MemoryDumpProvider {
void RemoveEnabledStateObserver(EnabledStateObserver* listener);
bool HasEnabledStateObserver(EnabledStateObserver* listener) const;
+ // Asynchronous enabled state listeners. When tracing is enabled or disabled,
+ // for each observer, a task for invoking its appropriate callback is posted
+ // to the thread from which AddAsyncEnabledStateObserver() was called.
+ class BASE_EXPORT AsyncEnabledStateObserver {
Primiano Tucci (use gerrit) 2016/05/10 14:20:26 Add: this allows the observer to be safely destroy
Xiaocheng 2016/05/11 05:19:20 Done.
+ public:
+ virtual ~AsyncEnabledStateObserver() = default;
+
+ // Posted just after the tracing system becomes enabled.
+ // TraceLog::IsEnabled() is true at this point.
+ virtual void OnTraceLogEnabled() = 0;
+
+ // Posted just after the tracing system becomes disabled.
+ // TraceLog::IsEnabled() is false at this point.
+ virtual void OnTraceLogDisabled() = 0;
+ };
+ void AddAsyncEnabledStateObserver(
+ WeakPtr<AsyncEnabledStateObserver> listener);
+ void RemoveAsyncEnabledStateObserver(AsyncEnabledStateObserver* listener);
+ bool HasAsyncEnabledStateObserver(AsyncEnabledStateObserver* listener) const;
+
TraceLogStatus GetStatus() const;
bool BufferIsFull() const;
@@ -365,6 +385,7 @@ class BASE_EXPORT TraceLog : public MemoryDumpProvider {
class ThreadLocalEventBuffer;
class OptionalAutoLock;
+ struct RegisteredAsyncObserver;
TraceLog();
~TraceLog() override;
@@ -443,6 +464,9 @@ class BASE_EXPORT TraceLog : public MemoryDumpProvider {
bool dispatching_to_observer_list_;
std::vector<EnabledStateObserver*> enabled_state_observer_list_;
Primiano Tucci (use gerrit) 2016/05/10 14:20:26 nit: remove the blank line 466 as this logically s
Xiaocheng 2016/05/11 05:19:20 Done. It's just my personal bad habit of inserting
+ std::map<AsyncEnabledStateObserver*, RegisteredAsyncObserver>
+ async_observers_;
+
std::string process_name_;
base::hash_map<int, std::string> process_labels_;
int process_sort_index_;

Powered by Google App Engine
This is Rietveld 408576698