tor-browser

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

track-remove-track-inband.html (3210B)


      1 <!DOCTYPE html>
      2 <html>
      3    <head>
      4        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      5 
      6        <script src="/common/media.js"></script>
      7        <script src="/resources/testharness.js"></script>
      8        <script src="/resources/testharnessreport.js"></script>
      9    </head>
     10    <body>
     11        <script>
     12            async_test(function(test)
     13            {
     14                var video = document.createElement("video");
     15 
     16                // Create an out-of-band text track by adding a track element.
     17                var trackElement = document.createElement('track');
     18 
     19                trackElement.addEventListener("error", test.step_func(function()
     20                {
     21                    assert_unreached("'error' event on track element should not fire.")
     22                }));
     23 
     24                video.appendChild(trackElement);
     25                trackElement.src = 'resources/webvtt-file.vtt';
     26                trackElement.track.mode = 'hidden';
     27 
     28                assert_equals(video.textTracks.length, 1);
     29                var outOfBandTrack = video.textTracks[0];
     30 
     31                // Load a media file with an inband text track.
     32                var inbandTrack = null;
     33                var url = "resources/vp8-vorbis-webvtt.webm"
     34 
     35                var firstAddTrackHandler = test.step_func(function()
     36                {
     37                    assert_equals(event.target, video.textTracks);
     38                    assert_equals(event instanceof window.TrackEvent, true);
     39                    if (event.track == outOfBandTrack) {
     40                        return;
     41                    }
     42 
     43                    assert_equals(inbandTrack, null);
     44                    assert_equals(video.textTracks.length, 2);
     45                    assert_equals(event.track, video.textTracks[1]);
     46                    inbandTrack = event.track;
     47 
     48                    video.textTracks.removeEventListener("addtrack", firstAddTrackHandler);
     49 
     50                    // Clear .src to force the inband track to get destroyed.
     51                    video.src = "";
     52 
     53                    // Verify that the inband track was removed.
     54                    assert_not_equals(inbandTrack, null);
     55                    assert_equals(video.textTracks.length, 1);
     56                    assert_equals(video.textTracks[0], outOfBandTrack);
     57 
     58                    // Load the URL again to trigger another 'addtrack' event to make sure
     59                    // no 'removetrack' event was queued.
     60                    video.src = url;
     61                    video.textTracks.addEventListener("addtrack", test.step_func(function()
     62                    {
     63                        assert_equals(video.textTracks.length, 2);
     64                        test.done();
     65                    }));
     66                });
     67                video.textTracks.addEventListener("addtrack", firstAddTrackHandler);
     68 
     69                video.textTracks.addEventListener("removetrack", test.step_func(function()
     70                {
     71                    assert_unreached("'removetrack' event should not fire.")
     72                }));
     73 
     74                video.src = url;
     75            }, "Tests that the 'removetrack' event is NOT fired for inband TextTrack on a failed load.");
     76 
     77        </script>
     78    </body>
     79 </html>