gecko/content/media/test/test_timeupdate_seek.html

86 lines
2.3 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<title>Media test: timeupdate and seek</title>
<script type="text/javascript" src="/MochiKit/packed.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<script type="text/javascript" src="manifest.js"></script>
</head>
<body>
<pre id="test">
<script class="testbody" type="text/javascript">
// Test if the currentTime when a seek is requested is set to
// the requested seek time as per 4.8.10.9 'seeking' in the
// WHATWG spec.
//
// http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#seeking
var manager = new MediaTestManager;
function do_loadedmetadata(e) {
var v = e.target;
if (v._finished)
return false;
var duration = v.duration;
v._seekTime = Math.round(duration / 2);
ok(!isNaN(duration), v._name + ": duration must be non NaN");
ok(v._seekTime >= 0.0, v._name + ": must have non-negative seek target");
ok(!isNaN(v._seekTime), v._name + ": seek target must be non NaN");
v.currentTime = v._seekTime;
return false;
}
function do_seeking(e) {
var v = e.target;
if (v._finished)
return false;
v._seeking = true;
ok(v.currentTime == v._seekTime,
v._name + ": currentTime of " + v.currentTime +
" should be requested seek time of " + v._seekTime);
return false;
}
function do_timeupdate(e) {
var v = e.target;
if (v._finished)
return false;
ok(v.currentTime == v._seekTime,
v._name + ": currentTime of " + v.currentTime +
" should be requested seek time of " + v._seekTime);
v._finished = true;
v.pause();
v.parentNode.removeChild(v);
v.src = "";
ok(true, v._name + ": finished");
manager.finished(v.token);
return false;
}
function startTest(test, token) {
var type = /^video/.test(test.type) ? "video" : "audio";
var v = document.createElement(type);
v.token = token;
manager.started(token);
v.src = test.name;
ok(true, test.name + ": started");
v._name = test.name;
v._seeking = false;
v._finished = false;
v.addEventListener("loadedmetadata", do_loadedmetadata, false);
v.addEventListener("seeking", do_seeking, false);
v.addEventListener("timeupdate", do_timeupdate, false);
document.body.appendChild(v);
}
manager.runTests(gSeekTests, startTest);
</script>
</pre>
</body>
</html>