track-remove-track-inband.html (3210B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 6 <script src="/common/media.js"></script> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 </head> 10 <body> 11 <script> 12 async_test(function(test) 13 { 14 var video = document.createElement("video"); 15 16 // Create an out-of-band text track by adding a track element. 17 var trackElement = document.createElement('track'); 18 19 trackElement.addEventListener("error", test.step_func(function() 20 { 21 assert_unreached("'error' event on track element should not fire.") 22 })); 23 24 video.appendChild(trackElement); 25 trackElement.src = 'resources/webvtt-file.vtt'; 26 trackElement.track.mode = 'hidden'; 27 28 assert_equals(video.textTracks.length, 1); 29 var outOfBandTrack = video.textTracks[0]; 30 31 // Load a media file with an inband text track. 32 var inbandTrack = null; 33 var url = "resources/vp8-vorbis-webvtt.webm" 34 35 var firstAddTrackHandler = test.step_func(function() 36 { 37 assert_equals(event.target, video.textTracks); 38 assert_equals(event instanceof window.TrackEvent, true); 39 if (event.track == outOfBandTrack) { 40 return; 41 } 42 43 assert_equals(inbandTrack, null); 44 assert_equals(video.textTracks.length, 2); 45 assert_equals(event.track, video.textTracks[1]); 46 inbandTrack = event.track; 47 48 video.textTracks.removeEventListener("addtrack", firstAddTrackHandler); 49 50 // Clear .src to force the inband track to get destroyed. 51 video.src = ""; 52 53 // Verify that the inband track was removed. 54 assert_not_equals(inbandTrack, null); 55 assert_equals(video.textTracks.length, 1); 56 assert_equals(video.textTracks[0], outOfBandTrack); 57 58 // Load the URL again to trigger another 'addtrack' event to make sure 59 // no 'removetrack' event was queued. 60 video.src = url; 61 video.textTracks.addEventListener("addtrack", test.step_func(function() 62 { 63 assert_equals(video.textTracks.length, 2); 64 test.done(); 65 })); 66 }); 67 video.textTracks.addEventListener("addtrack", firstAddTrackHandler); 68 69 video.textTracks.addEventListener("removetrack", test.step_func(function() 70 { 71 assert_unreached("'removetrack' event should not fire.") 72 })); 73 74 video.src = url; 75 }, "Tests that the 'removetrack' event is NOT fired for inband TextTrack on a failed load."); 76 77 </script> 78 </body> 79 </html>