track-mode-not-changed-by-new-track.html (3102B)
1 <!DOCTYPE html> 2 <title>A track appended after the initial track configuration does not change other tracks</title> 3 <script src="/common/media.js"></script> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <video> 7 <track kind="metadata" src="resources/metadata.vtt"> 8 </video> 9 <script> 10 async_test(function(t) { 11 var video = document.querySelector('video'); 12 13 var track1 = document.querySelectorAll('track')[0]; 14 assert_equals(track1.readyState, HTMLTrackElement.NONE); 15 assert_equals(track1.track.mode, 'disabled'); 16 17 video.src = getVideoURI('/media/test'); 18 video.oncanplaythrough = t.step_func(canplaythrough); 19 track1.onload = t.step_func(metadataTrackLoaded); 20 21 function canplaythrough() { 22 // check initial metadata track state. 23 assert_equals(track1.readyState, HTMLTrackElement.NONE); 24 assert_equals(track1.track.mode, 'disabled'); 25 assert_equals(track1.track.cues, null); 26 track1.track.mode = 'hidden'; 27 } 28 29 function metadataTrackLoaded() { 30 // check metadata track state. 31 assert_equals(track1.readyState, HTMLTrackElement.LOADED); 32 assert_equals(track1.track.mode, 'hidden'); 33 assert_equals(track1.track.cues.length, 12); 34 assert_equals(track1.track.cues[11].startTime, 22); 35 36 // Add a caption track, and explicitly enable it. 37 track2 = document.createElement('track'); 38 track2.setAttribute('kind', 'captions'); 39 track2.setAttribute('default', 'default'); 40 track2.setAttribute('src', 'resources/webvtt-file.vtt'); 41 track2.track.mode = 'showing'; 42 track2.onload = t.step_func(captionsTrackLoaded); 43 video.appendChild(track2); 44 } 45 46 function captionsTrackLoaded() { 47 // Check that metadata track state has not changed. 48 assert_equals(track1.readyState, HTMLTrackElement.LOADED); 49 assert_equals(track1.track.mode, 'hidden'); 50 // and that the caption track state is correct. 51 assert_equals(track2.readyState, HTMLTrackElement.LOADED); 52 assert_equals(track2.track.mode, 'showing'); 53 54 video.textTracks.onaddtrack = t.step_func_done(trackAdded); 55 // add a subtitle track with video.addTextTrack(). 56 track3 = video.addTextTrack('subtitles', 'Subtitle Track', 'en'); 57 track3.mode = 'showing'; 58 } 59 60 function trackAdded(event) { 61 // Check that metadata track state has not changed. 62 assert_equals(track1.readyState, HTMLTrackElement.LOADED); 63 assert_equals(track1.track.mode, 'hidden'); 64 // and that the caption track state has not changed. 65 assert_equals(track2.readyState, HTMLTrackElement.LOADED); 66 assert_equals(track2.track.mode, 'showing'); 67 // and that the subtitle track state is correct. 68 assert_equals(event.target, video.textTracks); 69 assert_true(event instanceof window.TrackEvent); 70 assert_equals(event.track, video.textTracks[video.textTracks.length - 1]); 71 assert_equals(track3.mode, 'showing'); 72 } 73 }); 74 </script>