diff options
Diffstat (limited to 'testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/001.html')
-rw-r--r-- | testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/001.html | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/001.html b/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/001.html new file mode 100644 index 000000000..2cba0a1ad --- /dev/null +++ b/testing/web-platform/tests/webvtt/webvtt-file-format-parsing/webvtt-file-parsing/001.html @@ -0,0 +1,96 @@ +<!doctype html> +<title>WebVTT parser tests</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id=log></div> +<script> +setup({explicit_done: true}); +var files = []; +var path = 'support/'; +var cueDefaults = { +"id":"", +"startTime":0, +"endTime":1, +"pauseOnExit":false, +//"vertical":"", (not supported) +"snapToLines":true, +"line":"auto", +"position":"auto", +"size":100, +"align":"center" +} +var cueCounts; +(function(){ + var xhr = new XMLHttpRequest(); + xhr.open('GET', path+'cue-counts.json', true); + xhr.onreadystatechange = function() { + if (xhr.readyState == 4) { + cueCounts = JSON.parse(xhr.responseText); + for (var file in cueCounts) { + files.push(file); + } + startTests(); + } + } + xhr.send(); +})(); + +function checkProps(cue, exp, i) { + for (var prop in cueDefaults) { + if (!(prop in exp)) + exp[prop] = cueDefaults[prop]; + assert_equals(cue[prop], exp[prop], prop + ' (cue '+(i+1)+')'); + } +} + +function startTests() { + files.forEach(function(file) { + var t = async_test(document.title+', '+file); + t.step(function(){ + var video = document.createElement('video'); + var track = document.createElement('track'); + assert_true('src' in track, 'track element not supported'); + track.src = path + file; + track['default'] = true; + track.kind = 'subtitles'; + track.onload = this.step_func(trackLoaded); + track.onerror = this.step_func(trackError); + video.appendChild(track); + document.body.appendChild(video); + }); + }); + done(); +} + +function trackLoaded(e) { + var track = e.target; + var video = track.parentNode; + setTimeout(removeElm, 0, video); + var cues = video.textTracks[0].cues; + var file = track.src.substr(track.src.lastIndexOf('/') + 1); + assert_equals(cues.length, cueCounts[file], 'number of cues'); + var expected; + var cue; + for (var i = 0; i < cues.length; ++i) { + cue = cues[i]; + expected = JSON.parse(cue.text); + assert_not_equals(expected, 'FAIL', 'cue '+(i+1)+' should have been dropped'); + checkProps(cue, expected, i); + } + this.done(); +} + +function trackError(e) { + var track = e.target; + var video = track.parentNode; + setTimeout(removeElm, 0, video); + var file = track.src.substr(track.src.lastIndexOf('/') + 1); + assert_equals('error', cueCounts[file], 'got unexpected error event'); + this.done(); +} + +function removeElm(elm) { + document.body.removeChild(elm); +} + +</script> |