tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_temporary_file_blob_video_plays.html (2309B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test MediaRecorder Recording canvas stream</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 
     15 function startTest() {
     16  var canvas = document.createElement("canvas");
     17  canvas.width = canvas.height = 100;
     18  document.getElementById("content").appendChild(canvas);
     19 
     20  var helper = new CaptureStreamTestHelper2D(100, 100);
     21  // Draw repeatedly to speed up delivery of the first "dataavailable" event.
     22  let drawing =
     23      helper.startDrawing(helper.drawColor.bind(helper, canvas, helper.red));
     24 
     25  var stream = canvas.captureStream();
     26 
     27  let mediaRecorder = new MediaRecorder(stream);
     28  is(mediaRecorder.stream, stream,
     29     "Media recorder stream = canvas stream at the start of recording");
     30 
     31  mediaRecorder.onwarning = () => ok(false, "warning unexpectedly fired");
     32 
     33  mediaRecorder.onerror = () => ok(false, "Recording failed");
     34 
     35  mediaRecorder.onstart = () => {
     36    info("Got 'start' event");
     37  };
     38 
     39  mediaRecorder.onstop = () => {
     40    info("Got 'stop' event");
     41  }
     42 
     43  mediaRecorder.ondataavailable = ev => {
     44    info("Got 'dataavailable' event");
     45    // We just want one frame encoded, to see that the recorder produces something readable.
     46    mediaRecorder.stop();
     47    mediaRecorder.ondataavailable = null;
     48    drawing.stop();
     49 
     50    var video = document.createElement("video");
     51    video.id = "recorded-video";
     52    video.src = URL.createObjectURL(ev.data);
     53    video.play();
     54    video.onerror = () => {
     55      ok(false, "Should be able to play the recording. Got error. code=" + video.error.code);
     56      SimpleTest.finish();
     57    };
     58    document.getElementById("content").appendChild(video);
     59    helper.pixelMustBecome(video, helper.red, {
     60      threshold: 128,
     61      infoString: "Should become red",
     62    }).then(SimpleTest.finish);
     63  };
     64 
     65  mediaRecorder.start(1);
     66  is(mediaRecorder.state, "recording", "Media recorder should be recording");
     67 }
     68 
     69 SimpleTest.waitForExplicitFinish();
     70 SpecialPowers.pushPrefEnv({set:[["media.recorder.max_memory", 1]]}, startTest);
     71 
     72 </script>
     73 </pre>
     74 </body>
     75 </html>