diff options
Diffstat (limited to 'dom/media/webrtc/tests/mochitests/test_peerConnection_basicScreenshare.html')
-rw-r--r-- | dom/media/webrtc/tests/mochitests/test_peerConnection_basicScreenshare.html | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/dom/media/webrtc/tests/mochitests/test_peerConnection_basicScreenshare.html b/dom/media/webrtc/tests/mochitests/test_peerConnection_basicScreenshare.html new file mode 100644 index 0000000000..a90e63ced7 --- /dev/null +++ b/dom/media/webrtc/tests/mochitests/test_peerConnection_basicScreenshare.html @@ -0,0 +1,64 @@ +<!DOCTYPE HTML> +<html> +<head> + <script type="application/javascript" src="pc.js"></script> +</head> +<body> +<pre id="test"> +<script type="application/javascript"> + createHTML({ + bug: "1039666", + title: "Basic screenshare-only peer connection" + }); + + async function supportedVideoPayloadTypes() { + const pc = new RTCPeerConnection(); + const offer = await pc.createOffer({offerToReceiveVideo: true}); + return sdputils.getPayloadTypes(offer.sdp); + } + + async function testScreenshare(payloadType) { + const options = {}; + options.h264 = payloadType == 97 || payloadType == 126; + const test = new PeerConnectionTest(options); + const constraints = { + video: { mediaSource: "screen" }, + }; + test.setMediaConstraints([constraints], []); + test.chain.insertAfterEach("PC_LOCAL_CREATE_OFFER", [ + function PC_LOCAL_ISOLATE_CODEC() { + info(`Forcing payload type ${payloadType}. Note that other associated ` + + `payload types, like RTX, are removed too.`); + test.originalOffer.sdp = + sdputils.removeAllButPayloadType(test.originalOffer.sdp, payloadType); + }, + ]); + await test.run(); + } + + runNetworkTest(async () => { + await SpecialPowers.pushPrefEnv({ set: [["media.navigator.video.red_ulpfec_enabled", true]] }); + await matchPlatformH264CodecPrefs(); + const pts = await supportedVideoPayloadTypes(); + ok(pts.includes("120"), "VP8 is supported"); + ok(pts.includes("121"), "VP9 is supported"); + if (pts.length > 2) { + is(pts.length, 6, "Expected VP8, VP9, two variants of H264, ULPFEC, and RED"); + ok(pts.includes("97"), "H264 with no packetization-mode is supported"); + ok(pts.includes("126"), "H264 with packetization-mode=1 is supported"); + ok(pts.includes("122"), "RED is supported"); + ok(pts.includes("123"), "ULPFEC is supported"); + } + for (const pt of pts) { + if (pt == "122" || pt == "123") { + // ULPFEC and RED are meant to work combined with other codecs. + // Forcing sdp with only one of them is not supported and will result in failures. + continue; + } + await testScreenshare(pt); + } + }); +</script> +</pre> +</body> +</html> |