| 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
|
|
|