tor-browser

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

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>