diff options
Diffstat (limited to 'dom/media/webrtc/tests/mochitests/test_peerConnection_removeAudioTrack.html')
-rw-r--r-- | dom/media/webrtc/tests/mochitests/test_peerConnection_removeAudioTrack.html | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/dom/media/webrtc/tests/mochitests/test_peerConnection_removeAudioTrack.html b/dom/media/webrtc/tests/mochitests/test_peerConnection_removeAudioTrack.html new file mode 100644 index 0000000000..e1e99b38c9 --- /dev/null +++ b/dom/media/webrtc/tests/mochitests/test_peerConnection_removeAudioTrack.html @@ -0,0 +1,57 @@ +<!DOCTYPE HTML> +<html> +<head> + <script type="application/javascript" src="pc.js"></script> +</head> +<body> +<pre id="test"> +<script type="application/javascript"> + createHTML({ + bug: "1017888", + title: "Renegotiation: remove audio track" + }); + + runNetworkTest(function (options) { + const test = new PeerConnectionTest(options); + let receivedTrack, analyser, freq; + addRenegotiation(test.chain, + [ + function PC_REMOTE_SETUP_ANALYSER(test) { + is(test.pcRemote._pc.getReceivers().length, 1, + "pcRemote should have one receiver before renegotiation"); + + receivedTrack = test.pcRemote._pc.getReceivers()[0].track; + is(receivedTrack.readyState, "live", + "The received track should be live"); + + analyser = new AudioStreamAnalyser( + new AudioContext(), new MediaStream([receivedTrack])); + freq = analyser.binIndexForFrequency(TEST_AUDIO_FREQ); + + return analyser.waitForAnalysisSuccess(arr => arr[freq] > 200); + }, + function PC_LOCAL_REMOVE_AUDIO_TRACK(test) { + test.setOfferOptions({ offerToReceiveAudio: true }); + return test.pcLocal.removeSender(0); + }, + ], + [ + function PC_REMOTE_CHECK_FLOW_STOPPED(test) { + // Simply removing a track is not enough to cause it to be + // signaled as ended. Spec may change though. + // TODO: One last check of the spec is in order + is(receivedTrack.readyState, "live", + "The received track should not have ended"); + + return analyser.waitForAnalysisSuccess(arr => arr[freq] < 50); + }, + ] + ); + + test.setMediaConstraints([{audio: true}], [{audio: true}]); + return test.run(); + }); +</script> +</pre> +</body> +</html> |