Index: webrtc/api/rtcstatscollector.cc |
diff --git a/webrtc/api/rtcstatscollector.cc b/webrtc/api/rtcstatscollector.cc |
index 1c87dacbb16beb037e13f9eecbcf86503b576de9..dc2b1896cc0ad1ad44630c1cbc8ccc1225e69338 100644 |
--- a/webrtc/api/rtcstatscollector.cc |
+++ b/webrtc/api/rtcstatscollector.cc |
@@ -71,6 +71,50 @@ const char* DataStateToRTCDataChannelState( |
} |
} |
+void ProduceCertificateStatsFromSSLCertificateStats( |
+ int64_t timestamp_us, const rtc::SSLCertificateStats& certificate_stats, |
+ RTCStatsReport* report) { |
+ RTCCertificateStats* prev_certificate_stats = nullptr; |
+ for (const rtc::SSLCertificateStats* s = &certificate_stats; s; |
+ s = s->issuer.get()) { |
+ RTCCertificateStats* certificate_stats = new RTCCertificateStats( |
+ RTCCertificateIDFromFingerprint(s->fingerprint), timestamp_us); |
+ certificate_stats->fingerprint = s->fingerprint; |
+ certificate_stats->fingerprint_algorithm = s->fingerprint_algorithm; |
+ certificate_stats->base64_certificate = s->base64_certificate; |
+ if (prev_certificate_stats) |
+ prev_certificate_stats->issuer_certificate_id = certificate_stats->id(); |
+ report->AddStats(std::unique_ptr<RTCCertificateStats>(certificate_stats)); |
+ prev_certificate_stats = certificate_stats; |
+ } |
+} |
+ |
+const std::string& ProduceIceCandidateStats( |
+ int64_t timestamp_us, const cricket::Candidate& candidate, bool is_local, |
+ RTCStatsReport* report) { |
+ const std::string& id = "RTCIceCandidate_" + candidate.id(); |
+ const RTCStats* stats = report->Get(id); |
+ if (!stats) { |
+ std::unique_ptr<RTCIceCandidateStats> candidate_stats; |
+ if (is_local) |
+ candidate_stats.reset(new RTCLocalIceCandidateStats(id, timestamp_us)); |
+ else |
+ candidate_stats.reset(new RTCRemoteIceCandidateStats(id, timestamp_us)); |
+ candidate_stats->ip = candidate.address().ipaddr().ToString(); |
+ candidate_stats->port = static_cast<int32_t>(candidate.address().port()); |
+ candidate_stats->protocol = candidate.protocol(); |
+ candidate_stats->candidate_type = CandidateTypeToRTCIceCandidateType( |
+ candidate.type()); |
+ candidate_stats->priority = static_cast<int32_t>(candidate.priority()); |
+ |
+ stats = candidate_stats.get(); |
+ report->AddStats(std::move(candidate_stats)); |
+ } |
+ RTC_DCHECK_EQ(stats->type(), is_local ? RTCLocalIceCandidateStats::kType |
+ : RTCRemoteIceCandidateStats::kType); |
+ return stats->id(); |
+} |
+ |
} // namespace |
rtc::scoped_refptr<RTCStatsCollector> RTCStatsCollector::Create( |
@@ -225,37 +269,18 @@ void RTCStatsCollector::ProduceCertificateStats_s( |
const std::map<std::string, CertificateStatsPair>& transport_cert_stats, |
RTCStatsReport* report) const { |
RTC_DCHECK(signaling_thread_->IsCurrent()); |
- for (const auto& kvp : transport_cert_stats) { |
- if (kvp.second.local) { |
- ProduceCertificateStatsFromSSLCertificateStats_s( |
- timestamp_us, *kvp.second.local.get(), report); |
+ for (const auto& transport_cert_stats_pair : transport_cert_stats) { |
+ if (transport_cert_stats_pair.second.local) { |
+ ProduceCertificateStatsFromSSLCertificateStats( |
+ timestamp_us, *transport_cert_stats_pair.second.local.get(), report); |
} |
- if (kvp.second.remote) { |
- ProduceCertificateStatsFromSSLCertificateStats_s( |
- timestamp_us, *kvp.second.remote.get(), report); |
+ if (transport_cert_stats_pair.second.remote) { |
+ ProduceCertificateStatsFromSSLCertificateStats( |
+ timestamp_us, *transport_cert_stats_pair.second.remote.get(), report); |
} |
} |
} |
-void RTCStatsCollector::ProduceCertificateStatsFromSSLCertificateStats_s( |
- int64_t timestamp_us, const rtc::SSLCertificateStats& certificate_stats, |
- RTCStatsReport* report) const { |
- RTC_DCHECK(signaling_thread_->IsCurrent()); |
- RTCCertificateStats* prev_certificate_stats = nullptr; |
- for (const rtc::SSLCertificateStats* s = &certificate_stats; s; |
- s = s->issuer.get()) { |
- RTCCertificateStats* certificate_stats = new RTCCertificateStats( |
- RTCCertificateIDFromFingerprint(s->fingerprint), timestamp_us); |
- certificate_stats->fingerprint = s->fingerprint; |
- certificate_stats->fingerprint_algorithm = s->fingerprint_algorithm; |
- certificate_stats->base64_certificate = s->base64_certificate; |
- if (prev_certificate_stats) |
- prev_certificate_stats->issuer_certificate_id = certificate_stats->id(); |
- report->AddStats(std::unique_ptr<RTCCertificateStats>(certificate_stats)); |
- prev_certificate_stats = certificate_stats; |
- } |
-} |
- |
void RTCStatsCollector::ProduceDataChannelStats_s( |
int64_t timestamp_us, RTCStatsReport* report) const { |
RTC_DCHECK(signaling_thread_->IsCurrent()); |
@@ -295,9 +320,9 @@ void RTCStatsCollector::ProduceIceCandidateAndPairStats_s( |
// anything. We don't have a complete list. Local candidates come from |
// Port objects, and prflx candidates (both local and remote) are only |
// stored in candidate pairs. crbug.com/632723 |
- candidate_pair_stats->local_candidate_id = ProduceIceCandidateStats_s( |
+ candidate_pair_stats->local_candidate_id = ProduceIceCandidateStats( |
timestamp_us, info.local_candidate, true, report); |
- candidate_pair_stats->remote_candidate_id = ProduceIceCandidateStats_s( |
+ candidate_pair_stats->remote_candidate_id = ProduceIceCandidateStats( |
timestamp_us, info.remote_candidate, false, report); |
// TODO(hbos): This writable is different than the spec. It goes to |
@@ -326,33 +351,6 @@ void RTCStatsCollector::ProduceIceCandidateAndPairStats_s( |
} |
} |
-const std::string& RTCStatsCollector::ProduceIceCandidateStats_s( |
- int64_t timestamp_us, const cricket::Candidate& candidate, bool is_local, |
- RTCStatsReport* report) const { |
- RTC_DCHECK(signaling_thread_->IsCurrent()); |
- const std::string& id = "RTCIceCandidate_" + candidate.id(); |
- const RTCStats* stats = report->Get(id); |
- if (!stats) { |
- std::unique_ptr<RTCIceCandidateStats> candidate_stats; |
- if (is_local) |
- candidate_stats.reset(new RTCLocalIceCandidateStats(id, timestamp_us)); |
- else |
- candidate_stats.reset(new RTCRemoteIceCandidateStats(id, timestamp_us)); |
- candidate_stats->ip = candidate.address().ipaddr().ToString(); |
- candidate_stats->port = static_cast<int32_t>(candidate.address().port()); |
- candidate_stats->protocol = candidate.protocol(); |
- candidate_stats->candidate_type = CandidateTypeToRTCIceCandidateType( |
- candidate.type()); |
- candidate_stats->priority = static_cast<int32_t>(candidate.priority()); |
- |
- stats = candidate_stats.get(); |
- report->AddStats(std::move(candidate_stats)); |
- } |
- RTC_DCHECK_EQ(stats->type(), is_local ? RTCLocalIceCandidateStats::kType |
- : RTCRemoteIceCandidateStats::kType); |
- return stats->id(); |
-} |
- |
void RTCStatsCollector::ProducePeerConnectionStats_s( |
int64_t timestamp_us, RTCStatsReport* report) const { |
RTC_DCHECK(signaling_thread_->IsCurrent()); |