track-mode.html (2749B)
1 <!DOCTYPE html> 2 <title>TextTrack mode attribute</title> 3 <meta name="timeout" content="long"> 4 <script src="/common/media.js"></script> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <video> 8 <track src="resources/captions-fast.vtt" default> 9 <script> 10 async_test(function(t) { 11 var video = document.querySelector("video"); 12 var track = document.querySelector("track"); 13 if (track.readyState != HTMLTrackElement.LOADED) { 14 assert_not_equals(track.readyState, HTMLTrackElement.ERROR, 15 "track failed to load resource."); 16 track.onload = t.step_func(trackLoaded); 17 } else { 18 trackLoaded(); 19 } 20 21 var cueCount = 0; 22 var textTrack; 23 function trackLoaded() { 24 textTrack = track.track; 25 // Test default attribute value. 26 assert_equals(textTrack.mode, "showing"); 27 assert_equals(video.textTracks[0].mode, "showing"); 28 // Set to bogus value, should return default. 29 var value = "bogus"; 30 textTrack.mode = value; 31 assert_equals(textTrack.mode, "showing"); 32 assert_equals(video.textTracks[0].mode, "showing"); 33 34 // Set to numeric value (no longer supported), should return default. 35 textTrack.mode = 2; 36 assert_equals(textTrack.mode, "showing"); 37 assert_equals(video.textTracks[0].mode, "showing"); 38 39 // Set to known values. 40 setModeAndCheck("disabled"); 41 42 video.src = getVideoURI("/media/test"); 43 video.play(); 44 45 // Wait for end of first cue (no events should fire while track is disabled). 46 video.ontimeupdate = () => { 47 if (video.currentTime > 0.4) { 48 testHiddenAndShowing(); 49 video.ontimeupdate = null; 50 } 51 } 52 } 53 54 track.oncuechange = t.step_func(function(event) { 55 cueCount++; 56 // As the 'enter' and the 'exit' event would be fired for the second 57 // and the third cue, so there would be 4 times 'oncuechange' event. 58 if (cueCount == 4) 59 t.done(); 60 }); 61 62 function setModeAndCheck(value) { 63 textTrack.mode = value; 64 assert_equals(textTrack.mode, value); 65 assert_equals(video.textTracks[0].mode, value); 66 if (value == "disabled") 67 assert_equals(textTrack.cues, null); 68 } 69 70 function testHiddenAndShowing() { 71 setModeAndCheck("hidden"); 72 setModeAndCheck("showing"); 73 } 74 }); 75 </script> 76 </video>