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..396847a5edce6fa3328f93d2638670892c379d45 100644 |
--- a/content/browser/tracing/tracing_controller_impl_data_sinks.cc |
+++ b/content/browser/tracing/tracing_controller_impl_data_sinks.cc |
@@ -116,10 +116,13 @@ class StringTraceDataSink : public TracingController::TraceDataSink { |
void AddTraceChunk(const std::string& chunk) override { |
std::string trace_string; |
- if (trace_.empty()) |
- trace_string = "{\"traceEvents\":["; |
- else |
+ if (trace_.empty()) { |
+ trace_string = "{\"" + |
+ std::string(base::trace_event::TracingAgent::kChromeTraceLabel) + |
+ "\":["; |
+ } else { |
trace_string = ","; |
+ } |
trace_string += chunk; |
AddTraceChunkAndPassToEndpoint(trace_string); |
@@ -131,24 +134,18 @@ 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 (auto const &it : GetAdditionalTracingAgentTrace()) |
+ AddTraceChunkAndPassToEndpoint(",\"" + it.first + "\": " + it.second); |
+ |
std::string metadataJSON; |
if (base::JSONWriter::Write(GetMetadata(), &metadataJSON) && |
- !metadataJSON.empty()) |
- AddTraceChunkAndPassToEndpoint(",\"metadata\": " + metadataJSON); |
- if (!power_trace_.empty()) { |
- AddTraceChunkAndPassToEndpoint(",\"powerTraceAsString\": " + |
- power_trace_); |
+ !metadataJSON.empty()) { |
+ AddTraceChunkAndPassToEndpoint(",\"" + |
+ std::string(base::trace_event::TracingAgent::kMetadataTraceLabel) + |
+ "\": " + metadataJSON); |
} |
AddTraceChunkAndPassToEndpoint("}"); |
@@ -162,8 +159,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 +179,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, |
@@ -226,10 +215,13 @@ class CompressedStringTraceDataSink : public TracingController::TraceDataSink { |
const scoped_refptr<base::RefCountedString> chunk_ptr) { |
DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
std::string trace; |
- if (compressed_trace_data_.empty()) |
- trace = "{\"traceEvents\":["; |
- else |
+ if (compressed_trace_data_.empty()) { |
+ trace = "{\"" + |
+ std::string(base::trace_event::TracingAgent::kChromeTraceLabel) + |
+ "\":["; |
+ } else { |
trace = ","; |
+ } |
trace += chunk_ptr->data(); |
AddTraceChunkAndCompressOnFileThread(trace, false); |
} |
@@ -269,23 +261,28 @@ class CompressedStringTraceDataSink : public TracingController::TraceDataSink { |
if (!OpenZStreamOnFileThread()) |
return; |
- if (compressed_trace_data_.empty()) |
- AddTraceChunkAndCompressOnFileThread("{\"traceEvents\":[", false); |
- |
+ if (compressed_trace_data_.empty()) { |
+ AddTraceChunkAndCompressOnFileThread( |
+ "{\"" + |
+ std::string(base::trace_event::TracingAgent::kChromeTraceLabel) + |
+ "\":[", |
+ false); |
+ } |
AddTraceChunkAndCompressOnFileThread("]", false); |
- if (!system_trace_.empty()) { |
+ |
+ for (auto const &it : GetAdditionalTracingAgentTrace()) { |
AddTraceChunkAndCompressOnFileThread( |
- ",\"systemTraceEvents\": " + system_trace_, false); |
+ ",\"" + it.first + "\": " + it.second, 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); |
+ ",\"" + |
+ std::string(base::trace_event::TracingAgent::kMetadataTraceLabel) + |
+ "\": " + metadataJSON, |
+ false); |
} |
AddTraceChunkAndCompressOnFileThread("}", true); |
@@ -301,14 +298,29 @@ 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 |
+TracingController::TraceDataSink::TraceDataSink() {} |
+ |
+TracingController::TraceDataSink::~TraceDataSink() {} |
+ |
+void TracingController::TraceDataSink::AddAgentTrace( |
+ const std::string& trace_label, |
+ const std::string& trace_data) { |
+ DCHECK(additional_tracing_agent_trace_.find(trace_label) == |
+ additional_tracing_agent_trace_.end()); |
+ additional_tracing_agent_trace_[trace_label] = trace_data; |
+} |
+ |
+const std::map<std::string, std::string>& |
+ TracingController::TraceDataSink::GetAdditionalTracingAgentTrace() const { |
+ return additional_tracing_agent_trace_; |
+} |
+ |
void TracingController::TraceDataSink::AddMetadata( |
const base::DictionaryValue& data) { |
metadata_.MergeDictionary(&data); |