test_temporaryfile_stream.html (2684B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Send an nsTemporaryFileInputStream cross-process</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script src="/tests/dom/canvas/test/captureStream_common.js"></script> 7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 8 </head> 9 <body> 10 <pre id="test"> 11 <div id="content"> 12 </div> 13 <script class="testbody" type="text/javascript"> 14 function startTest() { 15 var canvas = document.createElement("canvas"); 16 canvas.width = canvas.height = 100; 17 document.getElementById("content").appendChild(canvas); 18 19 20 // eslint-disable-next-line no-undef 21 var helper = new CaptureStreamTestHelper2D(100, 100); 22 helper.drawColor(canvas, helper.red); 23 // Draw repeatedly to speed up delivery of the first "dataavailable" event. 24 let drawing = 25 helper.startDrawing(helper.drawColor.bind(helper, canvas, helper.red)); 26 27 var stream = canvas.captureStream(); 28 29 let mediaRecorder = new MediaRecorder(stream); 30 is(mediaRecorder.stream, stream, 31 "Media recorder stream = canvas stream at the start of recording"); 32 33 mediaRecorder.onwarning = () => ok(false, "warning unexpectedly fired"); 34 35 mediaRecorder.onerror = () => ok(false, "Recording failed"); 36 37 mediaRecorder.onstart = () => { 38 info("Got 'start' event"); 39 }; 40 41 mediaRecorder.onstop = () => { 42 info("Got 'stop' event"); 43 } 44 45 mediaRecorder.ondataavailable = ev => { 46 info("Got 'dataavailable' event"); 47 // We just want one frame encoded, to see that the recorder produces something readable. 48 mediaRecorder.stop(); 49 mediaRecorder.ondataavailable = null; 50 drawing.stop(); 51 52 var xhr = new XMLHttpRequest(); 53 xhr.open("POST", "blob_verify.sjs", true); 54 xhr.onload = () => { 55 var video = document.createElement("video"); 56 video.id = "recorded-video"; 57 video.src = URL.createObjectURL(xhr.response); 58 video.play(); 59 video.onerror = () => { 60 ok(false, "Should be able to play the recording. Got error. code=" + video.error.code); 61 SimpleTest.finish(); 62 }; 63 document.getElementById("content").appendChild(video); 64 helper.pixelMustBecome(video, helper.red, { 65 threshold: 128, 66 infoString: "Should become red", 67 }).then(SimpleTest.finish); 68 }; 69 xhr.onerror = () => { 70 ok(false, "XHR error"); 71 SimpleTest.finish(); 72 }; 73 xhr.responseType = "blob"; 74 xhr.send(ev.data); 75 }; 76 77 mediaRecorder.start(1); 78 is(mediaRecorder.state, "recording", "Media recorder should be recording"); 79 } 80 81 SimpleTest.waitForExplicitFinish(); 82 SpecialPowers.pushPrefEnv({set: [["media.recorder.max_memory", 1]]}, startTest); 83 </script> 84 </pre> 85 </body> 86 </html>