track-add-remove-cue.html (3826B)
1 <!DOCTYPE html> 2 <title>TextTrack's addCue and removeCue</title> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script> 6 async_test(function(t) { 7 var video = document.createElement("video"); 8 var trackElement = document.createElement("track"); 9 10 trackElement.onload = t.step_func_done(function() { 11 var cues = trackElement.track.cues; 12 // Test cues loaded from the file. 13 assert_equals(cues.length, 4); 14 assert_equals(cues.getCueById("1").startTime, 0); 15 assert_equals(cues[1].startTime, 31); 16 assert_equals(cues[2].startTime, 61); 17 assert_equals(cues.getCueById("4").startTime, 121); 18 assert_equals(cues.getCueById("junk"), null); 19 20 // Create a new cue, check values. 21 var textCue = new VTTCue(33, 3.4, "Sausage?"); 22 assert_equals(textCue.track, null); 23 assert_equals(textCue.id, ""); 24 assert_equals(textCue.startTime, 33); 25 assert_equals(textCue.endTime, 3.4); 26 assert_equals(textCue.pauseOnExit, false); 27 assert_equals(textCue.vertical, ""); 28 assert_equals(textCue.snapToLines, true); 29 assert_equals(textCue.line, "auto"); 30 assert_equals(textCue.position, "auto"); 31 assert_equals(textCue.size, 100); 32 assert_equals(textCue.align, "center"); 33 34 // Remove the unadded track, make sure it throws correctly. 35 assert_throws_dom("NotFoundError", function() { trackElement.track.removeCue(textCue); }); 36 37 // Add the new cue to a track, make sure it is inserted correctly. 38 trackElement.track.addCue(textCue); 39 assert_equals(textCue.track, trackElement.track); 40 assert_equals(cues[1].startTime, 31); 41 assert_equals(cues[2].startTime, 33); 42 assert_equals(cues[3].startTime, 61); 43 44 // create a new cue and add it to a track created with 45 // video.addTextTrack, make sure it is inserted correctly. 46 var newTrack = video.addTextTrack("subtitles", "French subtitles", "fr"); 47 newTrack.mode = "showing"; 48 var newCue = new VTTCue(0, 1, "Test!"); 49 newTrack.addCue(newCue); 50 assert_equals(newCue, newTrack.cues[0]) 51 assert_equals(newCue.track, newTrack); 52 assert_equals(newCue.id, ""); 53 assert_equals(newCue.startTime, 0); 54 assert_equals(newCue.endTime, 1); 55 assert_equals(newCue.pauseOnExit, false); 56 assert_equals(newCue.vertical, ""); 57 assert_equals(newCue.snapToLines, true); 58 assert_equals(newCue.line, "auto"); 59 assert_equals(newCue.position, "auto"); 60 assert_equals(newCue.size, 100); 61 assert_equals(newCue.align, "center"); 62 63 trackElement.track.removeCue(textCue); 64 assert_equals(textCue.track, null); 65 assert_equals(cues[1].startTime, 31); 66 assert_equals(cues[2].startTime, 61); 67 68 // Remove a cue added from the WebVTT file. 69 textCue = cues[2]; 70 trackElement.track.removeCue(textCue); 71 assert_equals(textCue.track, null); 72 assert_equals(cues[1].startTime, 31); 73 assert_equals(cues[2].startTime, 121); 74 75 // Try to remove the cue again. 76 assert_throws_dom("NotFoundError", function() { trackElement.track.removeCue(textCue); }); 77 78 // Add a cue before all the existing cues. 79 trackElement.track.addCue(new VTTCue(0, 31, "I am first")); 80 assert_equals(cues[0].startTime, 0); 81 assert_equals(cues[0].endTime, 31); 82 assert_equals(cues[1].startTime, 0); 83 assert_equals(cues[1].endTime, 30.5); 84 assert_equals(cues[2].startTime, 31); 85 }); 86 87 trackElement.src = "resources/settings.vtt"; 88 trackElement.kind = "captions"; 89 trackElement.default = true; 90 video.appendChild(trackElement); 91 }); 92 </script>