tor-browser

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

track-cues-add-new-track.html (2140B)


      1 <!DOCTYPE html>
      2 <title>Adding a new track with a cue during playback should fire events</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 </video>
      8 <script>
      9 async_test(t => {
     10    const video = document.querySelector("video");
     11    let trackAdded = false;
     12    let cue1Entered = false;
     13    let cue1Exited = false;
     14    let cue2Entered = false;
     15    let cue2Exited = false;
     16 
     17    // Test Case 1: Track added before video.play()
     18    const track1 = video.addTextTrack("subtitles");
     19    let cue1 = new VTTCue(0.1, 0.3, "Cue1");
     20    cue1.onenter = t.step_func(() => {
     21        cue1Entered = true;
     22    });
     23    cue1.onexit = t.step_func(() => {
     24        cue1Exited = true;
     25        maybeDone();
     26    });
     27    track1.addCue(cue1);
     28 
     29    video.ontimeupdate = t.step_func(() => {
     30        // Test Case 2: Add a new track after video starts playing.
     31        if (!trackAdded && video.currentTime > 0.1) {
     32            trackAdded = true;
     33            const track2 = video.addTextTrack("subtitles");
     34            let cue2 = new VTTCue(video.currentTime + 0.1, video.currentTime + 0.3, "Cue2");
     35            cue2.onenter = t.step_func(() => {
     36                cue2Entered = true;
     37            });
     38            cue2.onexit = t.step_func(() => {
     39                cue2Exited = true;
     40                maybeDone();
     41            });
     42            track2.addCue(cue2);
     43        }
     44 
     45        if (video.currentTime > 1.0) {
     46            video.ontimeupdate = null;
     47            // Fail the test if not all events have fired by now
     48            assert_true(cue1Entered, "Cue1 should have entered");
     49            assert_true(cue1Exited, "Cue1 should have exited");
     50            assert_true(cue2Entered, "Cue2 should have entered");
     51            assert_true(cue2Exited, "Cue2 should have exited");
     52            t.done();
     53        }
     54    });
     55 
     56    function maybeDone() {
     57        if (cue1Entered && cue1Exited && cue2Entered && cue2Exited) {
     58            video.ontimeupdate = null;
     59            t.done();
     60        }
     61    }
     62 
     63    video.src = getVideoURI("/media/test");
     64    video.play();
     65 });
     66 </script>