iframe-activeelement-after-focusing-out-iframes.html (1522B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title>iframe activeElement after focusing out iframe</title> 4 <script src=/resources/testharness.js></script> 5 <script src=/resources/testharnessreport.js></script> 6 <script> 7 function waitForEvent(target, event, checkFn) { 8 return new Promise(resolve => { 9 target.addEventListener(event, e => { 10 if (checkFn && !checkFn(e)) { 11 return; 12 } 13 resolve(); 14 }, { once: true }); 15 }); 16 } 17 18 function focusTopLevel(w) { 19 w.postMessage("focus", "*"); 20 } 21 22 async function getLog(w) { 23 let log = ""; 24 step_timeout(function() { 25 w.postMessage("getlog", "*"); 26 }, 0); 27 await waitForEvent(window, "message", (e) => { 28 log = e.data; 29 return true; 30 }); 31 return log; 32 } 33 34 async function runTest(t, url) { 35 let w = window.open(url); 36 t.add_cleanup(() => { w.close(); }); 37 await waitForEvent(window, "message", e => e.data === "ready"); 38 focusTopLevel(w); 39 assert_equals(await getLog(w), 'outerlog:willfocusinput,windowfocus,didfocusinput,innerlog:willfocusinput,windowfocus,didfocusinput,activeElement:INPUT,windowblur,activeElement:BODY,'); 40 } 41 42 promise_test(async t => { 43 await runTest(t, "support/iframe-activeelement-after-focusing-out-different-site-iframes-outer.sub.html"); 44 }, "Check iframe activeElement after focusing out different site iframe"); 45 46 promise_test(async t => { 47 await runTest(t, "support/iframe-activeelement-after-focusing-out-same-site-iframes-outer.html"); 48 }, "Check iframe activeElement after focusing out same site iframe"); 49 50 </script>