diff options
Diffstat (limited to 'dom/media/webrtc/tests/mochitests/test_peerConnection_videoRenegotiationInactiveAnswer.html')
-rw-r--r-- | dom/media/webrtc/tests/mochitests/test_peerConnection_videoRenegotiationInactiveAnswer.html | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/dom/media/webrtc/tests/mochitests/test_peerConnection_videoRenegotiationInactiveAnswer.html b/dom/media/webrtc/tests/mochitests/test_peerConnection_videoRenegotiationInactiveAnswer.html new file mode 100644 index 0000000000..b77633493d --- /dev/null +++ b/dom/media/webrtc/tests/mochitests/test_peerConnection_videoRenegotiationInactiveAnswer.html @@ -0,0 +1,95 @@ +<!DOCTYPE HTML> +<html> +<head> + <script type="application/javascript" src="pc.js"></script> + <script type="application/javascript" src="sdpUtils.js"></script> + <script type="application/javascript" src="/tests/dom/canvas/test/captureStream_common.js"></script> +</head> +<body> +<pre id="test"> +<script type="application/javascript"> + createHTML({ + bug: "1213773", + title: "Renegotiation: answerer uses a=inactive for video" + }); + + runNetworkTest(async (options) => { + // [TODO] re-enable HW decoder after bug 1526207 is fixed. + if (navigator.userAgent.includes("Android")) { + await pushPrefs(["media.navigator.mediadatadecoder_vpx_enabled", false], + ["media.webrtc.hw.h264.enabled", false]); + } + + const emitter = new VideoFrameEmitter(); + const helper = new VideoStreamHelper(); + + const test = new PeerConnectionTest(options); + + test.chain.replace("PC_LOCAL_GUM", [ + function PC_LOCAL_CANVAS_CAPTURESTREAM(test) { + test.pcLocal.attachLocalStream(emitter.stream()); + emitter.start(); + } + ]); + + var haveFirstUnmuteEvent; + + test.chain.insertBefore("PC_REMOTE_SET_LOCAL_DESCRIPTION", [ + function PC_REMOTE_SETUP_ONUNMUTE_1() { + haveFirstUnmuteEvent = haveEvent(test.pcRemote._pc.getReceivers()[0].track, "unmute"); + } + ]); + + test.chain.append([ + function PC_REMOTE_CHECK_VIDEO_UNMUTED() { + return haveFirstUnmuteEvent; + }, + function PC_REMOTE_WAIT_FOR_FRAMES() { + var vremote = test.pcRemote.remoteMediaElements[0]; + ok(vremote, "Should have remote video element for pcRemote"); + return addFinallyToPromise(helper.checkVideoPlaying(vremote)) + .finally(() => emitter.stop()); + } + ]); + + addRenegotiation(test.chain, []); + + test.chain.insertAfter("PC_LOCAL_GET_ANSWER", [ + function PC_LOCAL_REWRITE_REMOTE_SDP_INACTIVE(test) { + test._remote_answer.sdp = + sdputils.setAllMsectionsInactive(test._remote_answer.sdp); + } + ], false, 1); + + test.chain.append([ + function PC_REMOTE_ENSURE_NO_FRAMES() { + var vremote = test.pcRemote.remoteMediaElements[0]; + ok(vremote, "Should have remote video element for pcRemote"); + emitter.start(); + return addFinallyToPromise(helper.checkVideoPaused(vremote)) + .finally(() => emitter.stop()); + }, + ]); + + test.chain.remove("PC_REMOTE_CHECK_STATS", 1); + test.chain.remove("PC_LOCAL_CHECK_STATS", 1); + + addRenegotiation(test.chain, []); + + test.chain.append([ + function PC_REMOTE_WAIT_FOR_FRAMES_2() { + var vremote = test.pcRemote.remoteMediaElements[0]; + ok(vremote, "Should have remote video element for pcRemote"); + emitter.start(); + return addFinallyToPromise(helper.checkVideoPlaying(vremote)) + .finally(() => emitter.stop()); + } + ]); + + test.setMediaConstraints([{video: true}], []); + await test.run(); + }); +</script> +</pre> +</body> +</html> |