Index: webrtc/pc/rtcstatscollector.cc |
diff --git a/webrtc/pc/rtcstatscollector.cc b/webrtc/pc/rtcstatscollector.cc |
index 56ea3c5eaf417b1e4c8fce6c493e09a372f90472..4952012648c5f22a1dc37d50c3adf129756efa6b 100644 |
--- a/webrtc/pc/rtcstatscollector.cc |
+++ b/webrtc/pc/rtcstatscollector.cc |
@@ -31,6 +31,18 @@ |
namespace webrtc { |
namespace { |
+ |
+const int kStatTypeMemberNameAndIdMaxLen = 1024; |
+ |
+std::string GetStatTypeMemberNameAndId(const RTCStats& stats, |
+ const RTCStatsMemberInterface* member) { |
+ RTC_DCHECK(strlen(stats.type()) + strlen(member->name()) |
+ + stats.id().size() + 3 < kStatTypeMemberNameAndIdMaxLen); |
+ char buffer[kStatTypeMemberNameAndIdMaxLen]; |
+ rtc::sprintfn(&buffer[0], sizeof(buffer), "%s.%s.%s", stats.type(), |
+ member->name(), stats.id().c_str()); |
+ return buffer; |
+} |
std::string RTCCertificateIDFromFingerprint(const std::string& fingerprint) { |
return "RTCCertificate_" + fingerprint; |
@@ -763,8 +775,16 @@ |
// Trace WebRTC Stats when getStats is called on Javascript. |
// This allows access to WebRTC stats from trace logs. To enable them, |
// select the "webrtc_stats" category when recording traces. |
- TRACE_EVENT_INSTANT1("webrtc_stats", "webrtc_stats", "report", |
- cached_report_->ToJson()); |
+ for (const RTCStats& stats : *cached_report_) { |
+ for (const RTCStatsMemberInterface* member : stats.Members()) { |
+ if (member->is_defined()) { |
+ TRACE_EVENT_INSTANT2("webrtc_stats", "webrtc_stats", |
+ "value", member->ValueToString(), |
+ "type.name.id", GetStatTypeMemberNameAndId( |
+ stats, member)); |
+ } |
+ } |
+ } |
DeliverCachedReport(); |
} |
} |