media-play.html (1483B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="/speculation-rules/prerender/resources/utils.js"></script> 5 <script src="/speculation-rules/prerender/resources/deferred-promise-utils.js"></script> 6 <audio id="audio" loop></audio> 7 <video id="video" type="video/mp4"></video> 8 <script> 9 const params = new URLSearchParams(location.search); 10 // The main test page (restriction-media-play.html) loads the initiator page, 11 // then the initiator page will prerender itself with the `prerendering` 12 // parameter. 13 const isPrerendering = params.has('prerendering'); 14 15 if (!isPrerendering) { 16 const rule_extras = {'target_hint': getTargetHint()}; 17 loadInitiatorPage(rule_extras); 18 } else { 19 const mediaType = params.get('type'); 20 const media = document.getElementById(mediaType); 21 media.src = "./bear-av1-opus.mp4"; 22 23 const prerenderEventCollector = new PrerenderEventCollector(); 24 const promise = new Promise((resolve, reject) => { 25 media.play(); 26 27 media.onloadedmetadata = () => { 28 prerenderEventCollector.addEvent( 29 'fired loadedmetadata event after prerendering is activated'); 30 resolve(); 31 }; 32 media.onloadstart = () => { 33 // Wait some time to give the test a chance to load the data and fail the 34 // test. 35 setTimeout(() => { 36 prerenderEventCollector.start(promise, 'Media.Play'); 37 }, 100); 38 }; 39 media.onerror = reject; 40 }); 41 } 42 </script>