Index: components/tracing/child/child_trace_message_filter.cc |
diff --git a/components/tracing/child/child_trace_message_filter.cc b/components/tracing/child/child_trace_message_filter.cc |
index ed2be875c7da066e73b97ee3e044e14f61b5c68d..2f17f929a423cb26c16e2948e1a97b8b3831b8f6 100644 |
--- a/components/tracing/child/child_trace_message_filter.cc |
+++ b/components/tracing/child/child_trace_message_filter.cc |
@@ -25,10 +25,10 @@ const int kMinTimeBetweenHistogramChangesInSeconds = 10; |
ChildTraceMessageFilter::ChildTraceMessageFilter( |
base::SingleThreadTaskRunner* ipc_task_runner) |
- : sender_(NULL), |
+ : enabled_tracing_modes_(0), |
+ sender_(NULL), |
ipc_task_runner_(ipc_task_runner), |
- pending_memory_dump_guid_(0) { |
-} |
+ pending_memory_dump_guid_(0) {} |
void ChildTraceMessageFilter::OnFilterAdded(IPC::Channel* channel) { |
sender_ = channel; |
@@ -80,13 +80,17 @@ void ChildTraceMessageFilter::OnBeginTracing( |
#endif |
ChildMemoryDumpManagerDelegateImpl::GetInstance()->set_tracing_process_id( |
tracing_process_id); |
- TraceLog::GetInstance()->SetEnabled( |
- base::trace_event::TraceConfig(trace_config_str), |
- base::trace_event::TraceLog::RECORDING_MODE); |
+ const base::trace_event::TraceConfig trace_config(trace_config_str); |
+ enabled_tracing_modes_ = base::trace_event::TraceLog::RECORDING_MODE; |
+ if (!trace_config.event_filters().empty()) |
+ enabled_tracing_modes_ |= base::trace_event::TraceLog::FILTERING_MODE; |
+ TraceLog::GetInstance()->SetEnabled(trace_config, enabled_tracing_modes_); |
} |
void ChildTraceMessageFilter::OnEndTracing() { |
- TraceLog::GetInstance()->SetDisabled(); |
+ DCHECK(enabled_tracing_modes_); |
+ TraceLog::GetInstance()->SetDisabled(enabled_tracing_modes_); |
+ enabled_tracing_modes_ = 0; |
// Flush will generate one or more callbacks to OnTraceDataCollected |
// synchronously or asynchronously. EndTracingAck will be sent in the last |