reftest_video.html (1397B)
1 <!DOCTYPE HTML> 2 <html class="reftest-wait"> 3 <head> 4 <meta charset='utf-8'> 5 </head> 6 <body> 7 <video id="e_video" style="position:absolute; left:0; top:0; max-width:100%"> 8 <script> 9 10 const TIMEOUT_MS = 2000; 11 12 // - 13 14 function sleepPromise(ms) { 15 return new Promise(go => { 16 setTimeout(go, ms); 17 }); 18 } 19 20 (async () => { 21 await sleepPromise(TIMEOUT_MS); 22 if (!document.documentElement.hasAttribute('class')) return; 23 24 const div = document.body.appendChild(document.createElement('div')); 25 div.textContent = `Timed out after ${TIMEOUT_MS}ms`; 26 console.log(div.textContent); 27 28 document.documentElement.removeAttribute('class'); 29 })(); 30 31 // - 32 // Test 33 34 (async () => { 35 const params = new URLSearchParams(window.location.search); 36 const src = params.get('src'); 37 src.defined; 38 if (src == 'none') { 39 console.log('Show blank.'); 40 document.documentElement.removeAttribute('class'); 41 return; 42 } 43 if (src == 'timeout') { 44 console.log('Deliberate timeout.'); 45 return; 46 } 47 48 e_video.src = src; 49 e_video.muted = true; 50 const p = e_video.play(); 51 p.defined; 52 try { 53 await p; 54 console.log('e_video.play() accepted'); 55 } catch (e) { 56 const div = document.body.appendChild(document.createElement('div')); 57 div.textContent = `Error: ${JSON.stringify(e)}`; 58 console.log(div.textContent); 59 } 60 document.documentElement.removeAttribute('class'); 61 })(); 62 </script> 63 </body> 64 </html>