file_autoplay_policy_eventdown_activation.html (2667B)
1 <!DOCTYPE HTML> 2 <html> 3 4 <head> 5 <title>Autoplay policy window</title> 6 <style> 7 video { 8 width: 50%; 9 height: 50%; 10 } 11 </style> 12 <script src="/tests/SimpleTest/SimpleTest.js"></script> 13 <script src="/tests/SimpleTest/EventUtils.js"></script> 14 <script type="text/javascript" src="manifest.js"></script> 15 <script type="text/javascript" src="AutoplayTestUtils.js"></script> 16 </head> 17 18 <body> 19 <pre id="test"> 20 <script> 21 22 window.ok = window.opener.ok; 23 window.is = window.opener.is; 24 window.info = window.opener.info; 25 26 async function testEventDownActivates(eventNames, activator) { 27 let element = document.createElement("video"); 28 element.preload = "auto"; 29 element.src = "short.mp4"; 30 document.body.appendChild(element); 31 32 await once(element, "loadedmetadata"); 33 34 let played = await element.play().then(() => true, () => false); 35 ok(!played, "Document should start out not activated, with playback blocked."); 36 37 let x = eventNames.map( 38 (eventName) => { 39 return new Promise(function (resolve) { 40 window.addEventListener(eventName, async function () { 41 let p = await element.play().then(() => true, () => false); 42 ok(p, "Expect to be activated already in " + eventName); 43 resolve(); 44 }); 45 }); 46 }); 47 48 activator(); 49 50 await Promise.all(x); 51 52 removeNodeAndSource(element); 53 } 54 55 nextWindowMessage().then( 56 async (event) => { 57 try { 58 if (event.data == "run keydown test") { 59 await testEventDownActivates(["keydown", "keypress", "keyup"], () => { 60 document.body.focus(); 61 synthesizeKey(" "); 62 }); 63 } else if (event.data == "run mousedown test") { 64 let events = ["mousedown", "mouseup", "click"]; 65 if (getAndroidVersion() < 0) { 66 // Non-Android, also listen on pointer events. 67 events.push("pointerdown", "pointerup"); 68 } 69 await testEventDownActivates(events, () => { 70 synthesizeMouseAtCenter(document.body, {}); 71 }); 72 } else { 73 ok(false, "unexpected message"); 74 } 75 } catch (e) { 76 ok(false, "Caught exception " + e + " " + e.message + " " + e.stackTrace); 77 } 78 event.source.postMessage("done", "*"); 79 }); 80 81 </script> 82 </pre> 83 </body> 84 85 </html>