test_bug1295719_event_sequence_for_arrow_keys.html (2593B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=1295719 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Test for Bug 1295719</title> 9 <script src="/tests/SimpleTest/SimpleTest.js"></script> 10 <script src="/tests/SimpleTest/EventUtils.js"></script> 11 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 12 </head> 13 <body> 14 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1295719">Mozilla Bug 1295719</a> 15 <p id="display"></p> 16 <div id="content" style="display: none"> 17 </div> 18 <input id="test_number" type="number" value=50> 19 <input id="test_range" type="range" value=50 max=100 min=0> 20 <script type="text/javascript"> 21 22 /** Test for Bug 1295719 */ 23 SimpleTest.waitForExplicitFinish(); 24 SimpleTest.waitForFocus(runTests); 25 26 function runTests() { 27 let number = window.document.getElementById("test_number"); 28 let range = window.document.getElementById("test_range"); 29 let waiting_event_sequence = ["keydown", "input", "change"]; 30 let waiting_event_idx = 0; 31 waiting_event_sequence.forEach((eventType) => { 32 number.addEventListener(eventType, (event) => { 33 let waiting_event = waiting_event_sequence[waiting_event_idx]; 34 is(waiting_event, eventType, "Waiting " + waiting_event + " get " + eventType); 35 // Input element will fire input and change events when handling keypress 36 // with keycode=arrows. When user press and hold the keyboard, we expect 37 // that input element repeatedly fires "keydown"(, "keypress"), "input", and 38 // "change" events until user release the keyboard. Using 39 // waiting_event_sequence as a circular buffer and reset waiting_event_idx 40 // when it point to the end of buffer. 41 waiting_event_idx = waiting_event_idx == waiting_event_sequence.length -1 ? 0 : waiting_event_idx + 1; 42 }); 43 range.addEventListener(eventType, (event) => { 44 let waiting_event = waiting_event_sequence[waiting_event_idx]; 45 is(waiting_event, eventType, "Waiting " + waiting_event + " get " + eventType); 46 waiting_event_idx = waiting_event_idx == waiting_event_sequence.length - 1 ? 0 : waiting_event_idx + 1; 47 }); 48 }); 49 50 number.focus(); 51 synthesizeKey("KEY_ArrowDown", {type: "keydown"}); 52 synthesizeKey("KEY_ArrowDown", {type: "keydown"}); 53 synthesizeKey("KEY_ArrowDown", {type: "keyup"}); 54 number.blur(); 55 range.focus(); 56 waiting_event_idx = 0; 57 synthesizeKey("KEY_ArrowDown", {type: "keydown"}); 58 synthesizeKey("KEY_ArrowDown", {type: "keydown"}); 59 synthesizeKey("KEY_ArrowDown", {type: "keyup"}); 60 61 SimpleTest.finish(); 62 } 63 64 </script> 65 </body> 66 </html>