tor-browser

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

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>