tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>