tor-browser

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

modifier-keys-combinations.html (1674B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8" />
      3 <title>UI Events Test: Modifier keys combinations</title>
      4 <link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
      5 <link rel="help" href="https://w3c.github.io/uievents/#idl-keyboardevent" />
      6 <meta name="assert" content="This test checks that modifier keys combinations are properly detected in 'keydown' event.">
      7 <script src="/resources/testharness.js"></script>
      8 <script src="/resources/testharnessreport.js"></script>
      9 <script src="/resources/testdriver.js"></script>
     10 <script src="/resources/testdriver-vendor.js"></script>
     11 <div id="target" tabindex="0">Target</div>
     12 <script>
     13  const keys = {
     14    "Shift": '\uE008' + 'y',
     15    "Control": '\uE009' + 'y',
     16    "Alt": '\uE00A' + 'y',
     17    "Meta": '\uE03D' + 'y',
     18  };
     19 
     20  target.focus();
     21  for (const [key, code] of Object.entries(keys)) {
     22    promise_test(() => {
     23      return new Promise(resolve => {
     24        target.addEventListener("keydown", (event) => {
     25          if (event.key != key)
     26              resolve(event);
     27        });
     28        test_driver.send_keys(target, code);
     29      }).then((event) => {
     30        if (event.shiftKey) {
     31          // Shift + y will send a "Y" keydown event on Chromium and Firefox, but a "y" one on WebKit.
     32          assert_true(event.key == "y" || event.key == "Y");
     33        } else {
     34          assert_equals(event.key, "y");
     35        }
     36        assert_equals(event.shiftKey, key === "Shift");
     37        assert_equals(event.ctrlKey, key === "Control");
     38        assert_equals(event.altKey, key === "Alt");
     39        assert_equals(event.metaKey, key === "Meta");
     40      });
     41    }, `Check sending "${key} + y" key combination`);
     42  }
     43 </script>