Source code

Revision control

Copy as Markdown

Other Tools

<!DOCTYPE HTML>
<html>
<head>
<title>Autoplay policy window</title>
<style>
video {
width: 50%;
height: 50%;
}
</style>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<script type="text/javascript" src="manifest.js"></script>
<script type="text/javascript" src="AutoplayTestUtils.js"></script>
</head>
<body>
<pre id="test">
<script>
window.ok = window.opener.ok;
window.is = window.opener.is;
window.info = window.opener.info;
async function testEventDownActivates(eventNames, activator) {
let element = document.createElement("video");
element.preload = "auto";
element.src = "short.mp4";
document.body.appendChild(element);
await once(element, "loadedmetadata");
let played = await element.play().then(() => true, () => false);
ok(!played, "Document should start out not activated, with playback blocked.");
let x = eventNames.map(
(eventName) => {
return new Promise(function (resolve) {
window.addEventListener(eventName, async function () {
let p = await element.play().then(() => true, () => false);
ok(p, "Expect to be activated already in " + eventName);
resolve();
});
});
});
activator();
await Promise.all(x);
removeNodeAndSource(element);
}
nextWindowMessage().then(
async (event) => {
try {
if (event.data == "run keydown test") {
await testEventDownActivates(["keydown", "keypress", "keyup"], () => {
document.body.focus();
synthesizeKey(" ");
});
} else if (event.data == "run mousedown test") {
let events = ["mousedown", "mouseup", "click"];
if (getAndroidVersion() < 0) {
// Non-Android, also listen on pointer events.
events.push("pointerdown", "pointerup");
}
await testEventDownActivates(events, () => {
synthesizeMouseAtCenter(document.body, {});
});
} else {
ok(false, "unexpected message");
}
} catch (e) {
ok(false, "Caught exception " + e + " " + e.message + " " + e.stackTrace);
}
event.source.postMessage("done", "*");
});
</script>
</pre>
</body>
</html>