tor-browser

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

track-mode.html (2749B)


      1 <!DOCTYPE html>
      2 <title>TextTrack mode attribute</title>
      3 <meta name="timeout" content="long">
      4 <script src="/common/media.js"></script>
      5 <script src="/resources/testharness.js"></script>
      6 <script src="/resources/testharnessreport.js"></script>
      7 <video>
      8    <track src="resources/captions-fast.vtt" default>
      9    <script>
     10    async_test(function(t) {
     11        var video = document.querySelector("video");
     12        var track = document.querySelector("track");
     13        if (track.readyState != HTMLTrackElement.LOADED) {
     14            assert_not_equals(track.readyState, HTMLTrackElement.ERROR,
     15                              "track failed to load resource.");
     16            track.onload = t.step_func(trackLoaded);
     17        } else {
     18            trackLoaded();
     19        }
     20 
     21        var cueCount = 0;
     22        var textTrack;
     23        function trackLoaded() {
     24            textTrack = track.track;
     25            // Test default attribute value.
     26            assert_equals(textTrack.mode, "showing");
     27            assert_equals(video.textTracks[0].mode, "showing");
     28            // Set to bogus value, should return default.
     29            var value = "bogus";
     30            textTrack.mode = value;
     31            assert_equals(textTrack.mode, "showing");
     32            assert_equals(video.textTracks[0].mode, "showing");
     33 
     34            // Set to numeric value (no longer supported), should return default.
     35            textTrack.mode = 2;
     36            assert_equals(textTrack.mode, "showing");
     37            assert_equals(video.textTracks[0].mode, "showing");
     38 
     39            // Set to known values.
     40            setModeAndCheck("disabled");
     41 
     42            video.src = getVideoURI("/media/test");
     43            video.play();
     44 
     45            // Wait for end of first cue (no events should fire while track is disabled).
     46            video.ontimeupdate = () => {
     47                if (video.currentTime > 0.4) {
     48                    testHiddenAndShowing();
     49                    video.ontimeupdate = null;
     50                }
     51            }
     52        }
     53 
     54        track.oncuechange = t.step_func(function(event) {
     55            cueCount++;
     56            // As the 'enter' and the 'exit' event would be fired for the second
     57            // and the third cue, so there would be 4 times 'oncuechange' event.
     58            if (cueCount == 4)
     59                t.done();
     60        });
     61 
     62        function setModeAndCheck(value) {
     63            textTrack.mode =  value;
     64            assert_equals(textTrack.mode, value);
     65            assert_equals(video.textTracks[0].mode, value);
     66            if (value == "disabled")
     67                assert_equals(textTrack.cues, null);
     68        }
     69 
     70        function testHiddenAndShowing() {
     71            setModeAndCheck("hidden");
     72            setModeAndCheck("showing");
     73        }
     74    });
     75    </script>
     76 </video>