Chromium Code Reviews| Index: content/browser/tracing/tracing_controller_impl_data_sinks.cc |
| diff --git a/content/browser/tracing/tracing_controller_impl_data_sinks.cc b/content/browser/tracing/tracing_controller_impl_data_sinks.cc |
| index 0f67ac357bd057f29787a08de0355df40d8493f0..2ecb8d26cb5ee5492504edd7075132995bbaa5f8 100644 |
| --- a/content/browser/tracing/tracing_controller_impl_data_sinks.cc |
| +++ b/content/browser/tracing/tracing_controller_impl_data_sinks.cc |
| @@ -131,25 +131,26 @@ class StringTraceDataSink : public TracingController::TraceDataSink { |
| endpoint_->ReceiveTraceChunk(chunk); |
| } |
| - void SetSystemTrace(const std::string& data) override { |
| - system_trace_ = data; |
| - } |
| - |
| - void SetPowerTrace(const std::string& data) override { power_trace_ = data; } |
| - |
| void Close() override { |
| AddTraceChunkAndPassToEndpoint("]"); |
| - if (!system_trace_.empty()) |
| - AddTraceChunkAndPassToEndpoint(",\"systemTraceEvents\": " + |
| - system_trace_); |
| + |
| + for (base::DictionaryValue::Iterator it(GetAdditionalTracingAgentTrace()); |
| + !it.IsAtEnd(); it.Advance()) { |
| + std::string trace; |
| + DCHECK(it.value().GetAsString(&trace)); |
| + if (it.key() == base::trace_event::TracingAgent::kCrOSTracingAgentName || |
|
shatch
2015/11/27 19:29:18
Don't need to do this now but could probably go fu
Zhen Wang
2015/12/01 00:14:32
Done.
|
| + it.key() == base::trace_event::TracingAgent::kETWTracingAgentName) { |
| + AddTraceChunkAndPassToEndpoint(",\"systemTraceEvents\": " + trace); |
| + } else if (it.key() == |
| + base::trace_event::TracingAgent::kPowerTracingAgentName) { |
| + AddTraceChunkAndPassToEndpoint(",\"powerTraceAsString\": " + trace); |
| + } |
| + } |
| + |
| std::string metadataJSON; |
| if (base::JSONWriter::Write(GetMetadata(), &metadataJSON) && |
| !metadataJSON.empty()) |
| AddTraceChunkAndPassToEndpoint(",\"metadata\": " + metadataJSON); |
| - if (!power_trace_.empty()) { |
| - AddTraceChunkAndPassToEndpoint(",\"powerTraceAsString\": " + |
| - power_trace_); |
| - } |
| AddTraceChunkAndPassToEndpoint("}"); |
| @@ -162,8 +163,6 @@ class StringTraceDataSink : public TracingController::TraceDataSink { |
| scoped_refptr<TracingController::TraceDataEndpoint> endpoint_; |
| std::string trace_; |
| - std::string system_trace_; |
| - std::string power_trace_; |
| DISALLOW_COPY_AND_ASSIGN(StringTraceDataSink); |
| }; |
| @@ -184,12 +183,6 @@ class CompressedStringTraceDataSink : public TracingController::TraceDataSink { |
| this, chunk_ptr)); |
| } |
| - void SetSystemTrace(const std::string& data) override { |
| - system_trace_ = data; |
| - } |
| - |
| - void SetPowerTrace(const std::string& data) override { power_trace_ = data; } |
| - |
| void Close() override { |
| BrowserThread::PostTask( |
| BrowserThread::FILE, FROM_HERE, |
| @@ -273,20 +266,28 @@ class CompressedStringTraceDataSink : public TracingController::TraceDataSink { |
| AddTraceChunkAndCompressOnFileThread("{\"traceEvents\":[", false); |
| AddTraceChunkAndCompressOnFileThread("]", false); |
| - if (!system_trace_.empty()) { |
| - AddTraceChunkAndCompressOnFileThread( |
| - ",\"systemTraceEvents\": " + system_trace_, false); |
| + |
| + for (base::DictionaryValue::Iterator it(GetAdditionalTracingAgentTrace()); |
| + !it.IsAtEnd(); it.Advance()) { |
| + std::string trace; |
| + DCHECK(it.value().GetAsString(&trace)); |
| + if (it.key() == base::trace_event::TracingAgent::kCrOSTracingAgentName || |
| + it.key() == base::trace_event::TracingAgent::kETWTracingAgentName) { |
| + AddTraceChunkAndCompressOnFileThread( |
| + ",\"systemTraceEvents\": " + trace, false); |
| + } else if (it.key() == |
| + base::trace_event::TracingAgent::kPowerTracingAgentName) { |
| + AddTraceChunkAndCompressOnFileThread( |
| + ",\"powerTraceAsString\": " + trace, false); |
| + } |
| } |
| + |
| std::string metadataJSON; |
| if (base::JSONWriter::Write(GetMetadata(), &metadataJSON) && |
| !metadataJSON.empty()) { |
| AddTraceChunkAndCompressOnFileThread(",\"metadata\": " + metadataJSON, |
| false); |
| } |
| - if (!power_trace_.empty()) { |
| - AddTraceChunkAndCompressOnFileThread( |
| - ",\"powerTraceAsString\": " + power_trace_, false); |
| - } |
| AddTraceChunkAndCompressOnFileThread("}", true); |
| deflateEnd(stream_.get()); |
| @@ -301,14 +302,23 @@ class CompressedStringTraceDataSink : public TracingController::TraceDataSink { |
| scoped_ptr<z_stream> stream_; |
| bool already_tried_open_; |
| std::string compressed_trace_data_; |
| - std::string system_trace_; |
| - std::string power_trace_; |
| DISALLOW_COPY_AND_ASSIGN(CompressedStringTraceDataSink); |
| }; |
| } // namespace |
| +void TracingController::TraceDataSink::AddAdditionalTracingAgentTrace( |
| + const std::string& agent_name, |
| + const std::string& trace_data) { |
| + additional_tracing_agent_trace_.SetString(agent_name, trace_data); |
| +} |
| + |
| +const base::DictionaryValue& |
| + TracingController::TraceDataSink::GetAdditionalTracingAgentTrace() const { |
| + return additional_tracing_agent_trace_; |
| +} |
| + |
| void TracingController::TraceDataSink::AddMetadata( |
| const base::DictionaryValue& data) { |
| metadata_.MergeDictionary(&data); |