focus-without-user-activation-disabled-by-permissions-policy.https.sub.html (1934B)
1 <!DOCTYPE html> 2 <title>Focus without user activation container policy test</title> 3 4 <body> 5 <script src="./resources/common.js"></script> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/resources/testdriver.js"></script> 9 <script src="/resources/testdriver-vendor.js"></script> 10 <script src="/permissions-policy/resources/permissions-policy.js"></script> 11 <div id="log"></div> 12 <input id="before" /> 13 14 <script> 15 var same_origin_src = '/permissions-policy/experimental-features/resources/permissions-policy-focus-without-user-activation-tab-focus.html'; 16 var cross_origin_src = 'https://{{domains[www]}}:{{ports[https][0]}}' + 17 same_origin_src; 18 const header = 'permissions policy "focus-without-user-activation" set to "none"'; 19 20 const tab_key = "\uE004"; 21 const before = document.getElementById("before"); 22 23 function subframe_focused() { 24 return new Promise((resolve, reject) => { 25 function tick() { 26 if (document.getElementById("log").innerHTML === "iframe focused") { 27 resolve(); 28 } else { 29 requestAnimationFrame(tick.bind(this)); 30 } 31 } 32 tick(); 33 }); 34 } 35 36 window.onmessage = m => { 37 document.getElementById("log").innerHTML = m.data; 38 }; 39 40 promise_test(async function (t) { 41 const iframe = createIframe(document.body, { 42 src: same_origin_src, 43 allow: "focus-without-user-activation none" 44 }); 45 await wait_for_load(iframe); 46 47 before.focus(); 48 assert_equals(document.activeElement, before, "#before got outer focus"); 49 50 await test_driver.send_keys(document.activeElement, tab_key); 51 await subframe_focused(); 52 t.add_cleanup(() => { 53 iframe.remove(); 54 }); 55 }, 'Tab focus from parent frame into same-origin iframe is allowed with ' + header); 56 </script> 57 </body>