mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 04:05:32 +00:00
7d849fa87c
The use of play() and pause() in the test is hugely problematic for short video files and slow/laggy platforms. In particular, if playback has ended by the time that we fire the 'seeked' event listener, then the ensuing play() will put us back into seeking mode (seeking to 0), making the test fail.
85 lines
2.2 KiB
HTML
85 lines
2.2 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Media test: seek tests</title>
|
|
<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>
|
|
<script type="text/javascript" src="seek_support.js"></script>
|
|
</head>
|
|
<body>
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
// The data being used in these tests is specified in manifest.js.
|
|
// The functions to build the test array and to run a specific test are in
|
|
// seek_support.js.
|
|
|
|
const SEEK_TEST_NUMBER = 1;
|
|
|
|
function test_seek1(v, seekTime, is, ok, finish) {
|
|
|
|
var startPassed = false;
|
|
var endPassed = false;
|
|
var seekFlagStart = false;
|
|
var seekFlagEnd = false;
|
|
var readonly = true;
|
|
var completed = false;
|
|
|
|
function startTest() {
|
|
ok(!completed, "Should not be completed yet");
|
|
ok(!v.seeking, "seeking should default to false");
|
|
try {
|
|
v.seeking = true;
|
|
readonly = v.seeking === false;
|
|
}
|
|
catch(e) {
|
|
readonly = "threw exception: " + e;
|
|
}
|
|
is(readonly, true, "seeking should be readonly");
|
|
|
|
v.currentTime = seekTime;
|
|
seekFlagStart = v.seeking;
|
|
}
|
|
|
|
function seekStarted() {
|
|
ok(!completed, "should not be completed yet");
|
|
ok(Math.abs(v.currentTime - seekTime) < 0.1,
|
|
"Video currentTime should be around " + seekTime + ": " + v.currentTime + " (seeking)");
|
|
startPassed = true;
|
|
}
|
|
|
|
function seekEnded() {
|
|
ok(!completed, "shuld not be completed yet");
|
|
ok(Math.abs(v.currentTime - seekTime) < 0.1,
|
|
"Video currentTime should be around " + seekTime + ": " + v.currentTime + " (seeked)");
|
|
endPassed = true;
|
|
seekFlagEnd = v.seeking;
|
|
v.play();
|
|
}
|
|
|
|
function playbackEnded() {
|
|
ok(!completed, "should not be completed yet");
|
|
|
|
completed = true;
|
|
ok(startPassed, "seeking event");
|
|
ok(endPassed, "seeked event");
|
|
ok(seekFlagStart, "seeking flag on start should be true");
|
|
ok(!seekFlagEnd, "seeking flag on end should be false");
|
|
finish();
|
|
}
|
|
|
|
once(v, "ended", playbackEnded);
|
|
once(v, "loadedmetadata", startTest);
|
|
once(v, "seeking", seekStarted);
|
|
once(v, "seeked", seekEnded);
|
|
|
|
}
|
|
|
|
manager.runTests(createTestArray(), startTest);
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|