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