47 lines
1.5 KiB
HTML
47 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<title>Same-origin prerendering can trigger autoplay</title>
|
|
<meta name="timeout" content="long">
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/common/utils.js"></script>
|
|
<script src="/common/dispatcher/dispatcher.js"></script>
|
|
<script src="../resources/utils.js"></script>
|
|
<script src="resources/utils.js"></script>
|
|
|
|
<body>
|
|
<script>
|
|
setup(() => assertSpeculationRulesIsSupported());
|
|
|
|
promise_test(async t => {
|
|
const {exec, activate} = await create_prerendered_page(t);
|
|
await exec(() => {
|
|
const video = document.createElement('video');
|
|
video.src = '/media/A4.mp4';
|
|
video.autoplay = true;
|
|
video.muted = true;
|
|
window.video = video;
|
|
document.body.appendChild(video);
|
|
});
|
|
|
|
await new Promise(resolve => t.step_timeout(resolve, 500));
|
|
|
|
const before_activation = await exec(() => ({
|
|
readyState: video.readyState,
|
|
paused: video.paused,
|
|
currentTime: video.currentTime
|
|
}));
|
|
|
|
await activate();
|
|
await new Promise(resolve => t.step_timeout(resolve, 500));
|
|
const after_activation = await exec(() => ({
|
|
readyState: video.readyState,
|
|
paused: video.paused,
|
|
currentTime: video.currentTime
|
|
}));
|
|
|
|
assert_equals(before_activation.paused, false);
|
|
assert_equals(before_activation.currentTime, 0);
|
|
assert_equals(after_activation.paused, false);
|
|
assert_greater_than(before_activation.currentTime, 0);
|
|
}, "media autoplay should defer playaback");
|
|
</script>
|