| 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 6012a96a8f4291afecf2278757e9c16cde8d9ec2..2cd76dc7b2a29242940e57591919b20ed36d828a 100644
|
| --- a/components/tracing/child/child_trace_message_filter.cc
|
| +++ b/components/tracing/child/child_trace_message_filter.cc
|
| @@ -27,7 +27,9 @@ const int kMinTimeBetweenHistogramChangesInSeconds = 10;
|
|
|
| ChildTraceMessageFilter::ChildTraceMessageFilter(
|
| base::SingleThreadTaskRunner* ipc_task_runner)
|
| - : sender_(NULL), ipc_task_runner_(ipc_task_runner) {}
|
| + : enabled_tracing_modes_(0),
|
| + sender_(NULL),
|
| + ipc_task_runner_(ipc_task_runner) {}
|
|
|
| void ChildTraceMessageFilter::OnFilterAdded(IPC::Channel* channel) {
|
| sender_ = channel;
|
| @@ -77,13 +79,17 @@ void ChildTraceMessageFilter::OnBeginTracing(
|
| TraceLog::GetInstance()->SetTimeOffset(time_offset);
|
| #endif
|
| MemoryDumpManager::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
|
|
|