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>