diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/webrtc/RTCRtpReceiver-getStats.https.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/webrtc/RTCRtpReceiver-getStats.https.html')
-rw-r--r-- | testing/web-platform/tests/webrtc/RTCRtpReceiver-getStats.https.html | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webrtc/RTCRtpReceiver-getStats.https.html b/testing/web-platform/tests/webrtc/RTCRtpReceiver-getStats.https.html new file mode 100644 index 0000000000..bfa82b979c --- /dev/null +++ b/testing/web-platform/tests/webrtc/RTCRtpReceiver-getStats.https.html @@ -0,0 +1,118 @@ +<!doctype html> +<meta charset=utf-8> +<meta name="timeout" content="long"> +<title>RTCRtpReceiver.prototype.getStats</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="RTCPeerConnection-helper.js"></script> +<script> + 'use strict'; + + promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + + const stream = await getNoiseStream({audio:true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + const [track] = stream.getTracks(); + callee.addTrack(track, stream); + + const { receiver } = caller.addTransceiver('audio'); + + exchangeIceCandidates(caller, callee); + await exchangeOfferAnswer(caller, callee); + // Wait for RTP + await new Promise(r => receiver.track.onunmute = r); + const statsReport = await receiver.getStats(); + assert_true(!![...statsReport.values()].find(({type}) => type === 'inbound-rtp')); + }, 'receiver.getStats() via addTransceiver should return stats report containing inbound-rtp stats'); + + promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + const stream = await getNoiseStream({audio:true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + const [track] = stream.getTracks(); + caller.addTrack(track, stream); + + exchangeIceCandidates(caller, callee); + await exchangeOfferAnswer(caller, callee); + const receiver = callee.getReceivers()[0]; + // Wait for RTP + await new Promise(r => receiver.track.onunmute = r); + const statsReport = await receiver.getStats(); + assert_true(!![...statsReport.values()].find(({type}) => type === 'inbound-rtp')); + }, 'receiver.getStats() via addTrack should return stats report containing inbound-rtp stats'); + + promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + const stream = await getNoiseStream({audio:true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + const [track] = stream.getTracks(); + caller.addTrack(track, stream); + + exchangeIceCandidates(caller, callee); + await exchangeOfferAnswer(caller, callee); + const [receiver] = callee.getReceivers(); + // Wait for RTP + await new Promise(r => receiver.track.onunmute = r); + const [transceiver] = callee.getTransceivers(); + const statsPromiseFirst = receiver.getStats(); + transceiver.stop(); + const statsReportFirst = await statsPromiseFirst; + const statsReportSecond = await receiver.getStats(); + assert_true(!![...statsReportFirst.values()].find(({type}) => type === 'inbound-rtp')); + assert_false(!![...statsReportSecond.values()].find(({type}) => type === 'inbound-rtp')); + }, 'receiver.getStats() should work on a stopped transceiver but not have inbound-rtp objects'); + + promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + const stream = await getNoiseStream({audio:true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + const [track] = stream.getTracks(); + caller.addTrack(track, stream); + + exchangeIceCandidates(caller, callee); + await exchangeOfferAnswer(caller, callee); + const [receiver] = callee.getReceivers(); + // Wait for RTP + await new Promise(r => receiver.track.onunmute = r); + const statsReportFirst = await receiver.getStats(); + callee.close(); + const statsReportSecond = await receiver.getStats(); + assert_true(!![...statsReportFirst.values()].find(({type}) => type === 'inbound-rtp')); + assert_false(!![...statsReportSecond.values()].find(({type}) => type === 'inbound-rtp')); + }, 'receiver.getStats() should work with a closed PeerConnection but not have inbound-rtp objects'); + + promise_test(async t => { + const caller = new RTCPeerConnection(); + t.add_cleanup(() => caller.close()); + const callee = new RTCPeerConnection(); + t.add_cleanup(() => callee.close()); + const stream = await getNoiseStream({audio:true}); + t.add_cleanup(() => stream.getTracks().forEach(track => track.stop())); + const [track] = stream.getTracks(); + caller.addTrack(track, stream); + + exchangeIceCandidates(caller, callee); + await exchangeOfferAnswer(caller, callee); + const receiver = callee.getReceivers()[0]; + // Wait for RTP + await new Promise(r => receiver.track.onunmute = r); + const statsReport = await receiver.getStats(); + assert_true(!![...statsReport.values()].find(({type}) => type === 'candidate-pair')); + assert_true(!![...statsReport.values()].find(({type}) => type === 'local-candidate')); + assert_true(!![...statsReport.values()].find(({type}) => type === 'remote-candidate')); + }, 'receiver.getStats() should return stats report containing ICE candidate stats'); + +</script> |