test_mediarecorder_multipletracks.html (1950B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test that MediaRecorder fires an error event when started with >1 track of a kind</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script src="/tests/dom/media/webrtc/tests/mochitests/head.js"></script> 7 </head> 8 <body> 9 <script class="testbody"> 10 "use strict"; 11 12 (async () => { 13 SimpleTest.waitForExplicitFinish(); 14 SimpleTest.requestFlakyTimeout("Failure timeouts"); 15 16 try { 17 const stream = new MediaStream; 18 const recorder = new MediaRecorder(stream); 19 20 { 21 info("Testing with two audio tracks"); 22 const ac = new AudioContext; 23 const track = ac.createMediaStreamDestination().stream.getTracks()[0]; 24 stream.addTrack(track); 25 stream.addTrack(track.clone()); 26 mustThrowWith("Starting with multiple audio tracks", 27 "NotSupportedError", 28 () => recorder.start()); 29 await Promise.all([ 30 haveNoEvent(recorder, "start"), 31 haveNoEvent(recorder, "error"), 32 haveNoEvent(recorder, "stop"), 33 ]); 34 for (let t of stream.getTracks()) { 35 stream.removeTrack(t); 36 t.stop(); 37 } 38 } 39 40 { 41 info("Testing with two video tracks"); 42 const canvas = document.createElement("canvas"); 43 canvas.getContext("2d"); 44 const track = canvas.captureStream().getTracks()[0]; 45 stream.addTrack(track); 46 stream.addTrack(track.clone()); 47 mustThrowWith("Starting with multiple video tracks", 48 "NotSupportedError", 49 () => recorder.start()); 50 await Promise.all([ 51 haveNoEvent(recorder, "start"), 52 haveNoEvent(recorder, "error"), 53 haveNoEvent(recorder, "stop"), 54 ]); 55 for (let t of stream.getTracks()) { 56 stream.removeTrack(t); 57 t.stop(); 58 } 59 } 60 } catch(e) { 61 ok(false, `${e}\n${e.stack}`); 62 } finally { 63 SimpleTest.finish(); 64 } 65 })(); 66 </script> 67 </body> 68 </html>