tor-browser

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

test_getUserMedia_bug1223696.html (1584B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <script type="application/javascript" src="mediaStreamPlayback.js"></script>
      5  <script type="application/javascript" src="/tests/dom/canvas/test/captureStream_common.js"></script>
      6 </head>
      7 <body>
      8 <pre id="test">
      9 <script type="application/javascript">
     10  "use strict";
     11 
     12  createHTML({
     13    title: "Testing that removeTrack+addTrack of video tracks still render the correct track in a media element",
     14    bug: "1223696",
     15    visible: true
     16  });
     17 
     18  runTest(async function() {
     19    const stream = await getUserMedia({audio:true, video: true});
     20    info("Test addTrack()ing a video track to an audio-only gUM stream");
     21 
     22    const video = createMediaElement("video", "test_video_track");
     23    video.srcObject = stream;
     24    video.play();
     25 
     26    await haveEvent(video, "loadeddata", wait(5000, new Error("Timeout")));
     27    info("loadeddata");
     28 
     29    const removedTrack = stream.getVideoTracks()[0];
     30    stream.removeTrack(removedTrack);
     31 
     32    const h = new CaptureStreamTestHelper2D();
     33    const emitter = new VideoFrameEmitter(h.grey, h.grey);
     34    emitter.start();
     35 
     36    stream.addTrack(emitter.stream().getVideoTracks()[0]);
     37 
     38    checkMediaStreamContains(stream, [stream.getAudioTracks()[0],
     39                                      emitter.stream().getVideoTracks()[0]]);
     40 
     41    await h.pixelMustBecome(video, h.grey, {
     42      threshold: 5,
     43      infoString: "The canvas track should be rendered by the media element",
     44    });
     45 
     46    emitter.stop();
     47    for (const t of [removedTrack, ...stream.getAudioTracks()]) {
     48      t.stop();
     49    }
     50  });
     51 </script>
     52 </pre>
     53 </body>
     54 </html>