media-autoplay.https.html (1497B)
1 <!DOCTYPE html> 2 <title>Same-origin prerendering can trigger autoplay</title> 3 <meta name="timeout" content="long"> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="/common/utils.js"></script> 7 <script src="/common/dispatcher/dispatcher.js"></script> 8 <script src="../resources/utils.js"></script> 9 <script src="resources/utils.js"></script> 10 11 <body> 12 <script> 13 setup(() => assertSpeculationRulesIsSupported()); 14 15 promise_test(async t => { 16 const {exec, activate} = await create_prerendered_page(t); 17 await exec(() => { 18 const video = document.createElement('video'); 19 video.src = '/media/A4.mp4'; 20 video.autoplay = true; 21 video.muted = true; 22 window.video = video; 23 document.body.appendChild(video); 24 }); 25 26 await new Promise(resolve => t.step_timeout(resolve, 500)); 27 28 const before_activation = await exec(() => ({ 29 readyState: video.readyState, 30 paused: video.paused, 31 currentTime: video.currentTime 32 })); 33 34 await activate(); 35 await new Promise(resolve => t.step_timeout(resolve, 500)); 36 const after_activation = await exec(() => ({ 37 readyState: video.readyState, 38 paused: video.paused, 39 currentTime: video.currentTime 40 })); 41 42 assert_equals(before_activation.paused, false); 43 assert_equals(before_activation.currentTime, 0); 44 assert_equals(after_activation.paused, false); 45 assert_greater_than(before_activation.currentTime, 0); 46 }, "media autoplay should defer playaback"); 47 </script>