зеркало из https://github.com/mozilla/gecko-dev.git
86 строки
2.7 KiB
HTML
86 строки
2.7 KiB
HTML
|
<!DOCTYPE HTML>
|
||
|
<html>
|
||
|
|
||
|
<head>
|
||
|
<title>Autoplay policy window</title>
|
||
|
<style>
|
||
|
video {
|
||
|
width: 50%;
|
||
|
height: 50%;
|
||
|
}
|
||
|
</style>
|
||
|
<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="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(async function (resolve, reject) {
|
||
|
window.addEventListener(eventName, async function (event) {
|
||
|
let played = await element.play().then(() => true, () => false);
|
||
|
ok(played, "Expect to be activated already in " + eventName);
|
||
|
resolve();
|
||
|
}, false);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
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>
|