test_texttrackevents_video.html (2721B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Tests for TextTrack DOM Events</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 8 </head> 9 <body> 10 <p id="display"></p> 11 <div id="content"> 12 </div> 13 <pre id="test"> 14 <script class="testbody" type="text/javascript"> 15 SimpleTest.waitForExplicitFinish(); 16 17 var video = document.createElement("video"); 18 video.src = "vp9cake.webm"; 19 video.preload = "auto"; 20 video.controls = true; 21 var trackElement = document.createElement("track"); 22 trackElement.src = "sequential.vtt"; 23 trackElement.kind = "subtitles"; 24 trackElement.default = true; 25 document.getElementById("content").appendChild(video); 26 video.appendChild(trackElement); 27 28 var trackElementCueChangeCount = 0; 29 var trackCueChangeCount = 0; 30 var cueEnterCount = 0; 31 var cueExitCount = 0; 32 33 video.addEventListener("loadedmetadata", function run_tests() { 34 // Re-queue run_tests() at the end of the event loop until the track 35 // element has loaded its data. 36 if (trackElement.readyState == 1) { 37 setTimeout(run_tests, 0); 38 return; 39 } 40 is(trackElement.readyState, 2, "Track::ReadyState should be set to LOADED."); 41 ok('oncuechange' in trackElement.track, "Track::OnCueChange should exist."); 42 43 var textTrack = trackElement.track; 44 is(textTrack.cues.length, 3, "textTrack.cues.length should 3."); 45 textTrack.cues[0].onenter = function() { 46 ++cueEnterCount; 47 }; 48 textTrack.cues[0].onexit = function() { 49 ++cueExitCount; 50 }; 51 textTrack.cues[1].onenter = function() { 52 ++cueEnterCount; 53 }; 54 textTrack.cues[1].onexit = function() { 55 ++cueExitCount; 56 }; 57 textTrack.cues[2].onenter = function() { 58 ++cueEnterCount; 59 }; 60 textTrack.cues[2].onexit = function() { 61 ++cueExitCount; 62 }; 63 64 trackElement.track.oncuechange = function() { 65 ++trackElementCueChangeCount; 66 }; 67 68 trackElement.addEventListener("cuechange", function() { 69 ++trackCueChangeCount; 70 }); 71 72 video.play(); 73 }); 74 75 video.addEventListener('ended', function() { 76 // Should be fired 1 to 6 times, as there are 3 cues, 77 // with a change event for when it is activated/deactivated 78 // (6 events at most). 79 isnot(trackElementCueChangeCount, 0, "TrackElement should fire cue change at least one time."); 80 ok(trackElementCueChangeCount <= 6, 'trackElementCueChangeCount should <= 6'); 81 isnot(trackCueChangeCount, 0, "TrackElement.track should fire cue change at least one time."); 82 ok(trackCueChangeCount <= 6, 'trackCueChangeCount should <= 6'); 83 is(cueEnterCount, 3, "cueEnterCount should fire three times."); 84 is(cueExitCount, 3, "cueExitCount should fire three times."); 85 SimpleTest.finish() 86 }); 87 </script> 88 </pre> 89 </body> 90 </html>