| OLD | NEW |
| (Empty) | |
| 1 <!doctype html> |
| 2 <title>WebVTT parser tests</title> |
| 3 <script src="/resources/testharness.js"></script> |
| 4 <script src="/resources/testharnessreport.js"></script> |
| 5 <div id=log></div> |
| 6 <script> |
| 7 setup({explicit_done: true}); |
| 8 var files = []; |
| 9 var path = 'support/'; |
| 10 var cueDefaults = { |
| 11 "id":"", |
| 12 "startTime":0, |
| 13 "endTime":1, |
| 14 "pauseOnExit":false, |
| 15 //"vertical":"", (not supported) |
| 16 "snapToLines":true, |
| 17 "line":"auto", |
| 18 "position":"auto", |
| 19 "size":100, |
| 20 "align":"center" |
| 21 } |
| 22 var cueCounts; |
| 23 (function(){ |
| 24 var xhr = new XMLHttpRequest(); |
| 25 xhr.open('GET', path+'cue-counts.json', true); |
| 26 xhr.onreadystatechange = function() { |
| 27 if (xhr.readyState == 4) { |
| 28 cueCounts = JSON.parse(xhr.responseText); |
| 29 for (var file in cueCounts) { |
| 30 files.push(file); |
| 31 } |
| 32 startTests(); |
| 33 } |
| 34 } |
| 35 xhr.send(); |
| 36 })(); |
| 37 |
| 38 function checkProps(cue, exp, i) { |
| 39 for (var prop in cueDefaults) { |
| 40 if (!(prop in exp)) |
| 41 exp[prop] = cueDefaults[prop]; |
| 42 assert_equals(cue[prop], exp[prop], prop + ' (cue '+(i+1)+')'); |
| 43 } |
| 44 } |
| 45 |
| 46 function startTests() { |
| 47 files.forEach(function(file) { |
| 48 var t = async_test(document.title+', '+file); |
| 49 t.step(function(){ |
| 50 var video = document.createElement('video'); |
| 51 var track = document.createElement('track'); |
| 52 assert_true('src' in track, 'track element not supported'); |
| 53 track.src = path + file; |
| 54 track['default'] = true; |
| 55 track.kind = 'subtitles'; |
| 56 track.onload = this.step_func(trackLoaded); |
| 57 track.onerror = this.step_func(trackError); |
| 58 video.appendChild(track); |
| 59 document.body.appendChild(video); |
| 60 }); |
| 61 }); |
| 62 done(); |
| 63 } |
| 64 |
| 65 function trackLoaded(e) { |
| 66 var track = e.target; |
| 67 var video = track.parentNode; |
| 68 setTimeout(removeElm, 0, video); |
| 69 var cues = video.textTracks[0].cues; |
| 70 var file = track.src.substr(track.src.lastIndexOf('/') + 1); |
| 71 assert_equals(cues.length, cueCounts[file], 'number of cues'); |
| 72 var expected; |
| 73 var cue; |
| 74 for (var i = 0; i < cues.length; ++i) { |
| 75 cue = cues[i]; |
| 76 expected = JSON.parse(cue.text); |
| 77 assert_not_equals(expected, 'FAIL', 'cue '+(i+1)+' should have been drop
ped'); |
| 78 checkProps(cue, expected, i); |
| 79 } |
| 80 this.done(); |
| 81 } |
| 82 |
| 83 function trackError(e) { |
| 84 var track = e.target; |
| 85 var video = track.parentNode; |
| 86 setTimeout(removeElm, 0, video); |
| 87 var file = track.src.substr(track.src.lastIndexOf('/') + 1); |
| 88 assert_equals('error', cueCounts[file], 'got unexpected error event'); |
| 89 this.done(); |
| 90 } |
| 91 |
| 92 function removeElm(elm) { |
| 93 document.body.removeChild(elm); |
| 94 } |
| 95 |
| 96 </script> |
| OLD | NEW |