1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
<!DOCTYPE HTML>
<html>
<head>
<title>Video controls test - KeyHandler</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<script type="text/javascript" src="head.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<p id="display"></p>
<div id="content">
<video id="video" controls preload="auto"></video>
</div>
<pre id="test">
<script class="testbody" type="application/javascript">
SimpleTest.waitForExplicitFinish();
const video = document.getElementById("video");
const playButton = getAnonElementWithinVideoByAttribute(video, "anonid", "playButton");
const scrubber = getAnonElementWithinVideoByAttribute(video, "anonid", "scrubber");
const volumeStack = getAnonElementWithinVideoByAttribute(video, "anonid", "volumeStack");
// Setup video
tests.push(done => {
SpecialPowers.pushPrefEnv({"set": [["media.cache_size", 40000]]}, done);
}, done => {
video.src = "seek_with_sound.ogg";
video.addEventListener("loadedmetadata", done);
});
// Bug 1350191, video should not seek while changing volume by
// pressing up/down arrow key.
tests.push(done => {
video.addEventListener("play", done, { once: true });
synthesizeMouseAtCenter(playButton, {});
}, done => {
video.addEventListener("seeked", done, { once: true });
synthesizeMouseAtCenter(scrubber, {});
}, done => {
let counter = 0;
let keys = ["KEY_ArrowDown", "KEY_ArrowDown", "KEY_ArrowUp", "KEY_ArrowDown", "KEY_ArrowUp", "KEY_ArrowUp"];
video.addEventListener("seeked", () => ok(false, "should not trigger seeked event"));
video.addEventListener("volumechange", () => {
if (++counter === keys.length) {
ok(true, "change volume by up/down arrow key without trigger 'seeked' event");
done();
}
if (counter > keys.length) {
ok(false, "trigger too much volumechange events");
}
});
for (let key of keys) {
synthesizeKey(key);
}
});
tests.push(SimpleTest.finish);
window.addEventListener("load", executeTests);
</script>
</pre>
</body>
</html>
|