| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| |
| <script src=../media-file.js></script> |
| <script src=../video-test.js></script> |
| <script> |
| var stage = 0; |
| var errorEventTimer = null; |
| |
| function loadedTrackTest() |
| { |
| var testTrack = document.getElementById('testTrack'); |
| switch (stage) { |
| case 0: |
| consoleWrite("<br>*** Testing Track 'src' changing"); |
| cues = testTrack.track.cues; |
| testExpected("cues.length", 4); |
| consoleWrite("<br>*** Changing 'src' attribute..."); |
| ++stage; |
| testTrack.src = "captions-webvtt/captions-long.vtt"; |
| break; |
| case 1: |
| testExpected("cues.length", 100); |
| testExpected("cues === testTrack.track.cues", true); |
| consoleWrite("<br>*** Changing back 'src' attribute..."); |
| ++stage; |
| testTrack.src = "captions-webvtt/tc013-settings.vtt"; |
| break; |
| case 2: |
| testExpected("cues === testTrack.track.cues", true); |
| testExpected("cues.length", 4); |
| consoleWrite("<br>*** Setting 'src' to the same value..."); |
| ++stage; |
| testTrack.src = "captions-webvtt/tc013-settings.vtt"; |
| // Let's ensure that 'load' event is not fired after that |
| // - it should jump directly to the stage 4 instead of stage 3 |
| setTimeout(function() { ++stage; loadedTrackTest(); }, 100); |
| break; |
| case 3: |
| failTest("'load' event should not be fired after setting the same URL"); |
| break; |
| case 4: |
| testExpected("cues === testTrack.track.cues", true); |
| testExpected("cues.length", 4); |
| consoleWrite("<br>*** Setting 'src' to an empty value..."); |
| ++stage; |
| testTrack.src = ""; // this should fire 'error' event |
| errorEventTimer = setTimeout(function() { |
| failTest("'error' event didn't fire after setting an empty URL"); |
| }, 10000); |
| break; |
| case 5: |
| failTest("'load' event should not be fired after setting an empty URL"); |
| break; |
| } |
| } |
| |
| function trackLoadFailed() |
| { |
| clearTimeout(errorEventTimer); |
| testExpected("stage", 5); |
| testExpected(cues === testTrack.track.cues, true); |
| testExpected("cues.length", 0); |
| endTest(); |
| } |
| |
| |
| setCaptionDisplayMode('Automatic'); |
| </script> |
| </head> |
| <body> |
| <p>Tests Track 'src' changing handling</p> |
| <video> |
| <track id="testTrack" src="captions-webvtt/tc013-settings.vtt" kind="captions" onload="loadedTrackTest()" onerror="trackLoadFailed()" default> |
| </video> |
| </body> |
| </html> |