tor-browser

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

pointerevent_mouseevent_key_pressed.html (2129B)


      1 <!DOCTYPE html>
      2 <title>Pointer events correctly show the modifier keys pressed</title>
      3 <link rel="author" title="Google" href="http://www.google.com/" />
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/resources/testdriver.js"></script>
      7 <script src="/resources/testdriver-vendor.js"></script>
      8 <script src="/resources/testdriver-actions.js"></script>
      9 <script type="text/javascript" src="../pointerevent_support.js"></script>
     10 <style>
     11  #target {
     12    width: 100px;
     13    height: 100px;
     14  }
     15 </style>
     16 <body>
     17  <div id="target"></div>
     18 </body>
     19 <script>
     20  "use strict";
     21 
     22  const target = document.getElementById("target");
     23 
     24  const Modifiers = {
     25    "Shift"   : '\uE008',
     26    "Control" : '\uE009',
     27    "Alt"     : '\uE00A',
     28    "Meta"    : '\uE03D'
     29  };
     30 
     31  function testModifierList(modifier_list) {
     32    promise_test(async test => {
     33      let pointermove_promise = getEvent("pointermove", target, test);
     34 
     35      let actions = new test_driver.Actions();
     36      for (let modifier of modifier_list) {
     37        actions = actions.keyDown(Modifiers[modifier]);
     38      }
     39      // Move the pointer off the center of "target" in case the pointer was
     40      // hovering at that position before the test started.
     41      actions = actions.pointerMove(0, 0, {origin:target})
     42            .pointerMove(10, 10, {origin:target});
     43      for (let modifier of modifier_list) {
     44        actions = actions.keyUp(Modifiers[modifier]);
     45      }
     46 
     47      await actions.send();
     48      let pointermove_event = await pointermove_promise;
     49 
     50      for (let modifier of Object.keys(Modifiers)) {
     51        let actual = pointermove_event.getModifierState(modifier);
     52        let expected = modifier_list.includes(modifier);
     53        assert_equals(actual, expected, `getModifierState(${modifier})`);
     54      }
     55    }, `Pointer events correctly show ${modifier_list.join()} pressed`);
     56  }
     57 
     58  window.onload = () => {
     59    testModifierList(["Alt"]);
     60    testModifierList(["Control"]);
     61    testModifierList(["Meta"]);
     62    testModifierList(["Shift"]);
     63    testModifierList(["Alt", "Control", "Meta", "Shift"]);
     64  }
     65 </script>