Files
tubestation/testing/web-platform/tests/webrtc/RTCRtpReceiver-getStats.https.html
Henrik Boström 1898982373 Bug 1449699 [wpt PR 10219] - RTCRtpReceiver.getStats() in blink added behind flag., a=testonly
Automatic update from web-platform-testsRTCRtpReceiver.getStats() in blink added behind flag.

This exposes RTCRtpReceiver.getStats() in JavaScript (behind flag) which
implements the stats selection algorithm[1] for receivers.

(This is similar to RTCRtpSender.getStats():
https://chromium-review.googlesource.com/c/chromium/src/+/975306)

[1] https://w3c.github.io/webrtc-pc/#dfn-stats-selection-algorithm

Bug: 680172
Change-Id: I8049a52fcaa3c2bd51e5541c7149d9b3aee57e3d
Reviewed-on: https://chromium-review.googlesource.com/976121
Commit-Queue: Henrik Boström <hbos@chromium.org>
Reviewed-by: Taylor Brandstetter <deadbeef@chromium.org>
Cr-Commit-Position: refs/heads/master@{#546801}

wpt-commits: f30b60b6c146a653f31ae5c92297a9639d16d450
wpt-pr: 10219
wpt-commits: f30b60b6c146a653f31ae5c92297a9639d16d450
wpt-pr: 10219
2018-04-15 08:37:13 +01:00

73 lines
2.7 KiB
HTML

<!doctype html>
<meta charset=utf-8>
<title>RTCRtpReceiver.prototype.getStats</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="RTCPeerConnection-helper.js"></script>
<script src="dictionary-helper.js"></script>
<script src="RTCStats-helper.js"></script>
<script>
'use strict';
// Test is based on the following editor draft:
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
// https://w3c.github.io/webrtc-stats/archives/20170614/webrtc-stats.html
// The following helper functions are called from RTCPeerConnection-helper.js:
// doSignalingHandshake
// The following helper function is called from RTCStats-helper.js
// validateStatsReport
// assert_stats_report_has_stats
/*
5.3. RTCRtpReceiver Interface
interface RTCRtpReceiver {
Promise<RTCStatsReport> getStats();
...
};
getStats
1. Let selector be the RTCRtpReceiver object on which the method was invoked.
2. Let p be a new promise, and run the following steps in parallel:
1. Gather the stats indicated by selector according to the stats selection
algorithm.
2. Resolve p with the resulting RTCStatsReport object, containing the
gathered stats.
3. Return p.
8.5. The stats selection algorithm
4. If selector is an RTCRtpReceiver, gather stats for and add the following objects
to result:
- All RTCInboundRTPStreamStats objects corresponding to selector.
- All stats objects referenced directly or indirectly by the RTCInboundRTPStreamStats
added.
*/
promise_test(async () => {
const caller = new RTCPeerConnection();
const callee = new RTCPeerConnection();
const { receiver } = caller.addTransceiver('audio');
await doSignalingHandshake(caller, callee);
const statsReport = await receiver.getStats();
validateStatsReport(statsReport);
assert_stats_report_has_stats(statsReport, ['inbound-rtp']);
}, 'receiver.getStats() via addTransceiver should return stats report containing inbound-rtp stats');
promise_test(async () => {
const caller = new RTCPeerConnection();
const callee = new RTCPeerConnection();
const stream = await navigator.mediaDevices.getUserMedia({audio:true});
const [track] = stream.getTracks();
caller.addTrack(track, stream);
await doSignalingHandshake(caller, callee);
const receiver = callee.getReceivers()[0];
const statsReport = await receiver.getStats();
validateStatsReport(statsReport);
assert_stats_report_has_stats(statsReport, ['inbound-rtp']);
}, 'receiver.getStats() via addTrack should return stats report containing inbound-rtp stats');
</script>