focus-invalid-uri-link.html (1872B)
1 <!doctype html> 2 <script src=/resources/testharness.js></script> 3 <script src=/resources/testharnessreport.js></script> 4 <script src=/resources/testdriver.js></script> 5 <script src=/resources/testdriver-actions.js></script> 6 <script src=/resources/testdriver-vendor.js></script> 7 <script> 8 function abs(uri) { 9 return new URL(uri, window.location.href).href; 10 } 11 const CHILD_DOC = ` 12 <!doctype html> 13 <script src="${abs("/resources/testdriver.js")}"></` + `script> 14 <script src="${abs("/resources/testdriver-actions.js")}"></` + `script> 15 <script src="${abs("/resources/testdriver-vendor.js")}"></` + `script> 16 <script> 17 test_driver.set_test_context(opener); 18 </` + `script> 19 20 <a href>To link or not to link</a> 21 22 <script> 23 onload = async function() { 24 let link = document.querySelector("a"); 25 link.focus(); 26 let focused = document.activeElement == link; 27 let clicked = new Promise(resolve => { 28 link.addEventListener("click", resolve, { once: true }); 29 }); 30 const enterKey = '\\uE007'; 31 await test_driver.send_keys(link, enterKey); 32 await clicked; 33 test_driver.message_test({ testResult: true, focused, clicked: true }); 34 }; 35 </` + `script> 36 ` 37 38 promise_test(async function(t) { 39 await new Promise(resolve => { 40 window.onload = resolve; 41 }) 42 43 let messagePromise = new Promise(resolve => { 44 addEventListener("message", function(msg) { 45 if (msg.data.testResult) { 46 resolve(msg); 47 } 48 }); 49 }); 50 51 let win = window.open("data:text/html," + escape(CHILD_DOC)); 52 53 assert_true(true, "Window opened"); 54 let message = await messagePromise; 55 assert_true(true, "message: " + JSON.stringify(message)); 56 57 let { focused, clicked } = message.data; 58 assert_true(focused, "Link should be focusable"); 59 assert_true(clicked, "Link should be keyboard activatable"); 60 61 win.close(); 62 }, "Link to invalid URI should be focusable and keyboard activatable"); 63 </script>