4 <title>Test playback of media files that should play OK
</title>
5 <script type=
"text/javascript" src=
"/tests/SimpleTest/SimpleTest.js"></script>
6 <link rel=
"stylesheet" type=
"text/css" href=
"/tests/SimpleTest/test.css" />
7 <script type=
"text/javascript" src=
"manifest.js"></script>
11 <script class=
"testbody" type=
"text/javascript">
13 var manager = new MediaTestManager;
15 function startTest(test, token) {
16 var v = document.createElement('video');
18 manager.started(token);
22 var check = function(test, v) { return function() {
23 is(test.name, v.name,
"Name should match test.name #1");
24 checkMetadata(test.name, v, test);
26 var noLoad = function(test, v) { return function() {
27 ok(false, test.name +
" should not fire 'load' event");
29 var checkEnded = function(test, v) { return function() {
31 ok(Math.abs(v.currentTime - test.duration) <
0.1,
32 test.name +
" current time at end: " + v.currentTime +
" should be: " + test.duration);
34 is(test.name, v.name,
"Name should match test.name #2");
35 is(v.readyState, v.HAVE_CURRENT_DATA, test.name +
" checking readyState");
36 ok(v.readyState != v.NETWORK_LOADED, test.name +
" shouldn't report NETWORK_LOADED");
37 ok(v.ended, test.name +
" checking playback has ended");
38 if (v.ended && v.seenSuspend && !v.finished) {
40 v.removeEventListener(
"timeupdate", timeUpdate, false);
41 v.parentNode.removeChild(v);
42 manager.finished(v.token);
45 var checkSuspended = function(test, v) { return function() {
46 is(test.name, v.name,
"Name should match test.name #3");
51 ok(true, test.name +
" got suspend");
52 if (v.ended && !v.finished) {
54 v.removeEventListener(
"timeupdate", timeUpdate, false);
55 v.parentNode.removeChild(v);
56 manager.finished(v.token);
60 var timeUpdate = function(test, v) { return function() {
61 is(test.name, v.name,
"Name should match test.name #4");
62 checkMetadata(test.name, v, test);
63 ok(v.prevTime <= v.currentTime,
64 test.name +
" time should run forwards: p=" +
65 v.prevTime +
" c=" + v.currentTime);
66 v.prevTime = v.currentTime;
68 v.addEventListener(
"load", noLoad, false);
69 v.addEventListener(
"loadedmetadata", check, false);
70 v.addEventListener(
"timeupdate", timeUpdate, false);
72 // We should get
"ended" and
"suspend" events for every resource
73 v.addEventListener(
"ended", checkEnded, false);
74 v.addEventListener(
"suspend", checkSuspended, false);
76 document.body.appendChild(v);
80 manager.runTests(gPlayTests, startTest);