blob: 82e5b7fe63a7aed112a3683327dcff4c5c3eef6d [file] [log] [blame]
<!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 cues;
function trackLoaded()
{
var testTrack = document.getElementById('testTrack');
cues = testTrack.track.cues;
consoleWrite("<br>*** Test cues loaded from the file.");
testExpected("cues.length", 4);
testExpected("cues.getCueById('1').startTime", 0);
testExpected("cues[1].startTime", 31);
testExpected("cues[2].startTime", 61);
testExpected("cues.getCueById('4').startTime", 121);
testExpected("cues.getCueById('junk')", undefined);
consoleWrite("<br>*** Create a new cue, check values");
run("textCue = new VTTCue(33, 3.4, 'Sausage?')");
testExpected("textCue.track", null);
testExpected("textCue.id", '');
testExpected("textCue.startTime", 33);
testExpected("textCue.endTime", 3.4);
testExpected("textCue.pauseOnExit", false);
testExpected("textCue.vertical", "");
testExpected("textCue.snapToLines", true);
testExpected("textCue.line", "auto");
testExpected("textCue.position", 50);
testExpected("textCue.size", 100);
testExpected("textCue.align", "middle");
consoleWrite("<br>*** Remove the unadded track, make sure it throws correctly.");
testException("testTrack.track.removeCue(textCue)", '"NotFoundError: Failed to execute \'removeCue\' on \'TextTrack\': The specified cue is not listed in the TextTrack\'s list of cues."');
consoleWrite("<br>*** Add the new cue to a track, make sure it is inserted correctly.");
run("testTrack.track.addCue(textCue)");
testExpected("textCue.track", testTrack.track);
testExpected("cues[1].startTime", 31);
testExpected("cues[2].startTime", 33);
testExpected("cues[3].startTime", 61);
consoleWrite("<br>*** create a new cue and add it to a track created with video.addTextTrack, make sure it is inserted correctly.");
findMediaElement();
run('newTrack = video.addTextTrack("subtitles", "French subtitles", "fr")');
newTrack.mode = 2;
run('newTrack.addCue(new VTTCue(0.0, 1.0, "Test!"))');
run('newCue = newTrack.cues[0]');
testExpected("newCue.track", newTrack);
testExpected("newCue.id", "");
testExpected("newCue.startTime", 0.0);
testExpected("newCue.endTime", 1.0);
testExpected("newCue.pauseOnExit", false);
testExpected("newCue.vertical", "");
testExpected("newCue.snapToLines", true);
testExpected("newCue.line", "auto");
testExpected("newCue.position", 50);
testExpected("newCue.size", 100);
testExpected("newCue.align", "middle");
consoleWrite("<br>*** Remove a cue created with addCue().");
run("testTrack.track.removeCue(textCue)");
testExpected("textCue.track", null);
testExpected("cues[1].startTime", 31);
testExpected("cues[2].startTime", 61);
consoleWrite("<br>*** Remove a cue added from the WebVTT file.");
run("textCue = cues[2]");
run("testTrack.track.removeCue(textCue)");
testExpected("textCue.track", null);
testExpected("cues[1].startTime", 31);
testExpected("cues[2].startTime", 121);
consoleWrite("<br>*** Try to remove the cue again.");
testDOMException("testTrack.track.removeCue(textCue)", "DOMException.NOT_FOUND_ERR");
consoleWrite("<br>*** Add a cue before all the existing cues.");
run("testTrack.track.addCue(new VTTCue(0, 31, 'I am first'))");
testExpected("cues[0].startTime", 0);
testExpected("cues[0].endTime", 31);
testExpected("cues[1].startTime", 0);
testExpected("cues[1].endTime", 30.5);
testExpected("cues[2].startTime", 31);
endTest();
}
</script>
</head>
<body>
<p>Tests TextTrack's addCue and removeCue</p>
<video>
<track id="testTrack" src="captions-webvtt/tc013-settings.vtt" kind="captions" onload="trackLoaded()" default>
</video>
</body>
</html>