no-activation-thru-escape-key.html (2345B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>No user activation through 'Escape' key</title> 5 <meta name="timeout" content="long"> 6 <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/> 7 <link rel="author" title="Google" href="http://www.google.com "/> 8 <link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#tracking-user-activation"> 9 <script src="/resources/testharness.js"></script> 10 <script src="/resources/testharnessreport.js"></script> 11 <script src="/resources/testdriver.js"></script> 12 <script src="/resources/testdriver-vendor.js"></script> 13 <style> 14 #target { 15 width: 40ex; 16 background-color: yellow; 17 } 18 </style> 19 <script type="text/javascript"> 20 let keydown_event_fired = false; 21 let keyup_event_fired = false; 22 23 function run() { 24 let textbox_elem = document.getElementById("target"); 25 let test_esc_key = async_test("'Escape' key doesn't activate a page."); 26 27 test_esc_key.step(() => { 28 assert_true(!!navigator.userActivation, "This test requires user activation query API"); 29 }); 30 31 textbox_elem.focus(); 32 33 on_event(textbox_elem, "keydown", () => { 34 test_esc_key.step(() => { 35 keydown_event_fired = true; 36 assert_false(navigator.userActivation.isActive, "No user activation on keydown"); 37 }); 38 }); 39 40 on_event(textbox_elem, "keyup", () => { 41 test_esc_key.step(() => { 42 if (keydown_event_fired) 43 keyup_event_fired = true; 44 assert_true(keydown_event_fired, "keydown event fired before keyup"); 45 assert_false(navigator.userActivation.isActive, "No user activation on keyup"); 46 }); 47 }); 48 49 // Inject mouse inputs. 50 const escape_key = "\uE00C"; 51 test_driver 52 .send_keys(textbox_elem, escape_key) 53 .then(() => { 54 assert_true(keyup_event_fired, "keydown event fired before keyup"); 55 test_esc_key.done(); 56 }); 57 } 58 </script> 59 </head> 60 <body onload="run()"> 61 <h1>No user activation through 'Escape' key</h1> 62 <h4>Tests that pressing/releasing 'Escape' key is not treated as a user activation.</h4> 63 <input id="target" value="Press and release the 'Esc' key." /> 64 </body> 65 </html>