tor-browser

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

track-mode-not-changed-by-new-track.html (3102B)


      1 <!DOCTYPE html>
      2 <title>A track appended after the initial track configuration does not change other tracks</title>
      3 <script src="/common/media.js"></script>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <video>
      7    <track kind="metadata" src="resources/metadata.vtt">
      8 </video>
      9 <script>
     10 async_test(function(t) {
     11    var video = document.querySelector('video');
     12 
     13    var track1 = document.querySelectorAll('track')[0];
     14    assert_equals(track1.readyState, HTMLTrackElement.NONE);
     15    assert_equals(track1.track.mode, 'disabled');
     16 
     17    video.src = getVideoURI('/media/test');
     18    video.oncanplaythrough = t.step_func(canplaythrough);
     19    track1.onload = t.step_func(metadataTrackLoaded);
     20 
     21    function canplaythrough() {
     22        // check initial metadata track state.
     23        assert_equals(track1.readyState, HTMLTrackElement.NONE);
     24        assert_equals(track1.track.mode, 'disabled');
     25        assert_equals(track1.track.cues, null);
     26        track1.track.mode = 'hidden';
     27    }
     28 
     29    function metadataTrackLoaded() {
     30        // check metadata track state.
     31        assert_equals(track1.readyState, HTMLTrackElement.LOADED);
     32        assert_equals(track1.track.mode, 'hidden');
     33        assert_equals(track1.track.cues.length, 12);
     34        assert_equals(track1.track.cues[11].startTime, 22);
     35 
     36        // Add a caption track, and explicitly enable it.
     37        track2 = document.createElement('track');
     38        track2.setAttribute('kind', 'captions');
     39        track2.setAttribute('default', 'default');
     40        track2.setAttribute('src', 'resources/webvtt-file.vtt');
     41        track2.track.mode = 'showing';
     42        track2.onload = t.step_func(captionsTrackLoaded);
     43        video.appendChild(track2);
     44    }
     45 
     46    function captionsTrackLoaded() {
     47        // Check that metadata track state has not changed.
     48        assert_equals(track1.readyState, HTMLTrackElement.LOADED);
     49        assert_equals(track1.track.mode, 'hidden');
     50        // and that the caption track state is correct.
     51        assert_equals(track2.readyState, HTMLTrackElement.LOADED);
     52        assert_equals(track2.track.mode, 'showing');
     53 
     54        video.textTracks.onaddtrack = t.step_func_done(trackAdded);
     55        // add a subtitle track with video.addTextTrack().
     56        track3 = video.addTextTrack('subtitles', 'Subtitle Track', 'en');
     57        track3.mode = 'showing';
     58    }
     59 
     60    function trackAdded(event) {
     61        // Check that metadata track state has not changed.
     62        assert_equals(track1.readyState, HTMLTrackElement.LOADED);
     63        assert_equals(track1.track.mode, 'hidden');
     64        // and that the caption track state has not changed.
     65        assert_equals(track2.readyState, HTMLTrackElement.LOADED);
     66        assert_equals(track2.track.mode, 'showing');
     67        // and that the subtitle track state is correct.
     68        assert_equals(event.target, video.textTracks);
     69        assert_true(event instanceof window.TrackEvent);
     70        assert_equals(event.track, video.textTracks[video.textTracks.length - 1]);
     71        assert_equals(track3.mode, 'showing');
     72    }
     73 });
     74 </script>