tor-browser

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

cues.html (5023B)


      1 <!doctype html>
      2 <title>TextTrack.cues</title>
      3 <script src=/resources/testharness.js></script>
      4 <script src=/resources/testharnessreport.js></script>
      5 <div id=log></div>
      6 <script>
      7 test(function(){
      8    var video = document.createElement('video');
      9    var t1 = video.addTextTrack('subtitles');
     10    assert_equals(t1.cues, t1.cues, 't1.cues should return same object');
     11    assert_not_equals(t1.cues, null, 't1.cues should not be null');
     12    assert_true(t1.cues instanceof TextTrackCueList, 't1.cues instanceof TextTrackCueList');
     13    assert_equals(t1.cues.length, 0, 't1.cues.length');
     14 }, document.title+', empty list');
     15 
     16 function addCue(texttrack, start, end, text, id) {
     17  var c = new VTTCue(start, end, text);
     18  c.id = id;
     19  texttrack.addCue(c);
     20  return c;
     21 }
     22 
     23 test(function(){
     24    var video = document.createElement('video');
     25    var t1 = video.addTextTrack('subtitles');
     26    var t1_cues = t1.cues;
     27    var c = addCue(t1, 0, 1, 'text', 'id');
     28    assert_equals(t1.cues, t1_cues, "t1.cues should return same object");
     29    assert_equals(t1.cues.length, 1, "t1.cues.length");
     30    var c2 = addCue(t1, 1, 2, 'text2', 'id2');
     31    assert_equals(t1.cues, t1_cues, "t1.cues should return the same object after adding a second cue");
     32    assert_equals(t1.cues.length, 2, "t1.cues.length after adding a second cue");
     33    assert_equals(t1.cues[0].id, "id");
     34    assert_equals(t1.cues[1].id, "id2");
     35 }, document.title+', after addCue()');
     36 
     37 test(function(){
     38    var video = document.createElement('video');
     39    var t1 = video.addTextTrack('subtitles');
     40    var t1_cues = t1.cues;
     41    var c = addCue(t1, 0, 1, 'text', 'id');
     42    var c2 = addCue(t1, 1, 2, 'text2', 'id2');
     43    t1.mode = 'showing';
     44    assert_equals(t1.cues, t1_cues, "t1.cues should return the same object after setting mode to 'showing'");
     45    t1.mode = 'hidden';
     46    assert_equals(t1.cues, t1_cues, "t1.cues should return the same object after setting mode to 'hidden'");
     47    t1.mode = 'disabled';
     48    assert_equals(t1.cues, null, "t1.cues should be null when mode is 'disabled'");
     49    assert_equals(t1_cues.length, 2, "t1_cues should still be intact after setting mode to 'disabled'");
     50    assert_equals(t1_cues[0].id, "id", "t1_cues first cue should still be intact after setting mode to 'disabled'");
     51    assert_equals(t1_cues[1].id, "id2", "t1_cues second cue should still be intact after setting mode to 'disabled'");
     52    t1.mode = 'hidden';
     53    assert_equals(t1.cues, t1_cues, "t1.cues should return the same object after setting mode to 'disabled' and then 'hidden'");
     54    t1.mode = 'disabled';
     55    assert_equals(t1.cues, null, "t1.cues should be null when mode is set to 'disabled' again");
     56    assert_equals(t1_cues.length, 2, "t1_cues should still be intact after setting mode to 'disabled' again");
     57    assert_equals(t1_cues[0].id, "id", "t1_cues first cue should still be intact after setting mode to 'disabled' again");
     58    assert_equals(t1_cues[1].id, "id2", "t1_cues second cue should still be intact after setting mode to 'disabled' again");
     59    t1.mode = 'showing';
     60    assert_equals(t1.cues, t1_cues, "t1.cues should return the same object after setting mode to 'disabled' and then 'showing'");
     61 }, document.title+', different modes');
     62 
     63 test(function(){
     64    var video = document.createElement('video');
     65    var t1 = video.addTextTrack('subtitles');
     66    var t1_cues = t1.cues;
     67    var c = addCue(t1, 0, 1, 'text', 'id');
     68    var c2 = addCue(t1, 1, 2, 'text2', 'id2');
     69    t1.mode = 'showing';
     70    t1.cues[1].startTime = 0; // this should change the text track cue order
     71    assert_equals(t1.cues[0].id, 'id2');
     72    assert_equals(t1.cues[1].id, 'id');
     73    t1.cues[0].startTime = 0.5; // this should change it back
     74    assert_equals(t1.cues[0].id, 'id');
     75    assert_equals(t1.cues[1].id, 'id2');
     76 }, document.title+', changing order');
     77 
     78 async_test(function(){
     79    var video = document.createElement('video');
     80    var t1 = video.addTextTrack('subtitles');
     81    var t1_cues = t1.cues;
     82    t1.mode = 'hidden';
     83    var track = document.createElement('track');
     84    track['default'] = true;
     85    video.appendChild(track); // queues a task to "honor user preferences...", media element event task source
     86    var t2 = track.track;
     87    assert_equals(t2.cues, null, 't2.cues should be null');
     88    // We need to wait until the "honor user preferences..." steps have run so we invoke play()
     89    // which queues an event with the same task source.
     90    video.onplay = this.step_func(function(){
     91        assert_equals(t2.cues, t2.cues, 't2.cues should return same object');
     92        assert_not_equals(t1.cues, t2.cues, 't1.cues and t2.cues should be different objects');
     93        assert_not_equals(t2.cues, null, 't2.cues should not be null');
     94        assert_true(t2.cues instanceof TextTrackCueList, 't2.cues instanceof TextTrackCueList');
     95        assert_equals(t2.cues.length, 0, 't2.cues should have length 0');
     96        this.done();
     97    });
     98    video.play(); // queues a task to fire 'play', media element event task source
     99 }, document.title+', default attribute');
    100 </script>