Chromium Code Reviews| 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_; |