88 lines
2.7 KiB
HTML
88 lines
2.7 KiB
HTML
<head>
|
|
<style>
|
|
iframe {
|
|
width: 320px;
|
|
height: 240px;
|
|
}
|
|
</style>
|
|
<script src="media-file.js"></script>
|
|
<script src="video-test.js"></script>
|
|
<script>
|
|
if (window.testRunner) {
|
|
testRunner.waitUntilDone();
|
|
testRunner.dumpAsText();
|
|
}
|
|
|
|
async function checkAutoPlay(allowed)
|
|
{
|
|
let message = allowed ? "Video auto-played" : "Video did not auto-play";
|
|
let video = iframe.contentDocument.querySelector("video");
|
|
|
|
let played;
|
|
let counter = 0;
|
|
while (++counter < 20) {
|
|
played = video.ended || video.currentTime != 0;
|
|
if (allowed === played)
|
|
break;
|
|
await new Promise(resolve => setTimeout(resolve, 50));
|
|
}
|
|
|
|
if (allowed == played)
|
|
consoleWrite(`PASS: ${allowed ? "Video auto-played" : "Video did not auto-play"}`);
|
|
else
|
|
consoleWrite(`FAIL: ${allowed ? "Video did not auto-play" : "Video auto-played"}`);
|
|
}
|
|
|
|
async function loadVideo(policy, allow)
|
|
{
|
|
consoleWrite(`<br>*** Test with auto-play policy set to '${policy}'`);
|
|
|
|
if (window.internals)
|
|
internals.setDocumentAutoplayPolicy(document, policy)
|
|
|
|
iframe.src = 'about:blank';
|
|
await waitForEventWithTimeout(iframe, 'load', 4000, '"about:blank" iframe failed to load!');
|
|
|
|
let script = iframe.contentDocument.head.appendChild(iframe.contentDocument.createElement('script'));
|
|
let code = `
|
|
let video=document.createElement('video');
|
|
document.body.appendChild(video);
|
|
video.controls = 1;
|
|
video.playsinline = 1;
|
|
video.autoplay = 1;
|
|
video.src = 'content/test.wav';
|
|
let postedMessage = false;
|
|
let postMessage = () => {
|
|
if (!postedMessage)
|
|
window.parent.postMessage('loaded', '*');
|
|
postedMessage = true;
|
|
};
|
|
setTimeout(postMessage, 1000);
|
|
video.oncanplaythrough = postMessage;
|
|
`;
|
|
script.appendChild(iframe.contentDocument.createTextNode(code));
|
|
|
|
await waitForEventWithTimeout(window, 'message', 4000, 'iframe failed to send message!');
|
|
await new Promise(resolve => setTimeout(resolve, 250));
|
|
await checkAutoPlay(allow);
|
|
}
|
|
|
|
window.addEventListener('load', async () => {
|
|
iframe = document.querySelector('iframe');
|
|
|
|
await loadVideo('Allow', true);
|
|
|
|
await loadVideo('AllowWithoutSound', false);
|
|
|
|
await loadVideo('Deny', false);
|
|
|
|
consoleWrite('');
|
|
endTest();
|
|
}, false);
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<iframe ></iframe>
|
|
</body>
|