RTCIceCandidatePairStats.available[Outgoing/Incoming]Bitrate collected.
Collected for current pairs, undefined for other pairs. This is the
same as the old stats' VideoBwe.googAvailable[Send/Receive]Bandwidth.
NOTE: The value this is based on for incoming bitrate is not set. This
CL wires it up but has a TODO that the incoming bitrate needs to be
collected properly. (Same problem for both old and new stats.)
Spec: https://w3c.github.io/webrtc-stats/#dom-rtcicecandidatepairstats-availableoutgoingbitrate
Discussion: https://github.com/w3c/webrtc-stats/issues/112#issuecomment-277167781
BUG=webrtc:7062
Review-Url: https://codereview.webrtc.org/2675923002
Cr-Commit-Position: refs/heads/master@{#16472}
diff --git a/webrtc/pc/rtcstats_integrationtest.cc b/webrtc/pc/rtcstats_integrationtest.cc
index 5775047..a20a909 100644
--- a/webrtc/pc/rtcstats_integrationtest.cc
+++ b/webrtc/pc/rtcstats_integrationtest.cc
@@ -259,6 +259,11 @@
void VerifyReport() {
std::set<const char*> missing_stats = StatsTypes();
bool verify_successful = true;
+ std::vector<const RTCTransportStats*> transport_stats =
+ report_->GetStatsOfType<RTCTransportStats>();
+ EXPECT_EQ(transport_stats.size(), 1);
+ std::string selected_candidate_pair_id =
+ *transport_stats[0]->selected_candidate_pair_id;
for (const RTCStats& stats : *report_) {
missing_stats.erase(stats.type());
if (stats.type() == RTCCertificateStats::kType) {
@@ -272,7 +277,8 @@
stats.cast_to<RTCDataChannelStats>());
} else if (stats.type() == RTCIceCandidatePairStats::kType) {
verify_successful &= VerifyRTCIceCandidatePairStats(
- stats.cast_to<RTCIceCandidatePairStats>());
+ stats.cast_to<RTCIceCandidatePairStats>(),
+ stats.id() == selected_candidate_pair_id);
} else if (stats.type() == RTCLocalIceCandidateStats::kType) {
verify_successful &= VerifyRTCLocalIceCandidateStats(
stats.cast_to<RTCLocalIceCandidateStats>());
@@ -351,7 +357,7 @@
}
bool VerifyRTCIceCandidatePairStats(
- const RTCIceCandidatePairStats& candidate_pair) {
+ const RTCIceCandidatePairStats& candidate_pair, bool is_selected_pair) {
RTCStatsVerifier verifier(report_, &candidate_pair);
verifier.TestMemberIsIDReference(
candidate_pair.transport_id, RTCTransportStats::kType);
@@ -369,7 +375,12 @@
verifier.TestMemberIsUndefined(candidate_pair.total_round_trip_time);
verifier.TestMemberIsNonNegative<double>(
candidate_pair.current_round_trip_time);
- verifier.TestMemberIsUndefined(candidate_pair.available_outgoing_bitrate);
+ if (is_selected_pair) {
+ verifier.TestMemberIsNonNegative<double>(
+ candidate_pair.available_outgoing_bitrate);
+ } else {
+ verifier.TestMemberIsUndefined(candidate_pair.available_outgoing_bitrate);
+ }
verifier.TestMemberIsUndefined(candidate_pair.available_incoming_bitrate);
verifier.TestMemberIsNonNegative<uint64_t>(
candidate_pair.requests_received);