tor-browser

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

keyboard-accesskey-click-event.html (2943B)


      1 <script src="/resources/testharness.js"></script>
      2 <script src="/resources/testharnessreport.js"></script>
      3 <script src="/resources/testdriver.js"></script>
      4 <script src="/resources/testdriver-actions.js"></script>
      5 <script src="/resources/testdriver-vendor.js"></script>
      6 <script src="/resources/accesskey.js"></script>
      7 
      8 <p>Tests that a keyboard access key to press a button will fire only the click event</p>
      9 <button id="button" accesskey="g">Click Me with Shift+Alt+g or on Mac with Control+Option+g</button>
     10 <input id="inputbutton" type="button" accesskey="b" value="Click me with Shift+Alt+b or on Mac with Control+Option+b">
     11 <label id="label" accesskey="l">Click Me with Shift+Alt+l or on Mac with Control+Option+l</label>
     12 
     13 <script>
     14 let button = document.getElementById("button");
     15 let inputbutton = document.getElementById("inputbutton");
     16 let radiobutton = document.getElementById("radiobutton");
     17 let label = document.getElementById("label");
     18 let elementList = [button, inputbutton, label];
     19 let eventLog = [];
     20 const eventList = ["pointerdown", "pointerup", "mousedown", "mouseup", "click"];
     21 elementList.forEach((el)=>{eventList.forEach((ev)=>el.addEventListener(ev, (e)=>{
     22  eventLog.push(`${ev}_${el.id}`);
     23  if(ev === "click" && currentTest){
     24    currentTest.step(()=>{
     25      if(e instanceof PointerEvent){
     26        // We want the test to run on all browsers even if click is not a PointerEvent.
     27        assert_equals(e.pointerId, -1, "Click's pointerId has -1 because of non-pointing device input");
     28        assert_equals(e.pointerType, "", "Click's pointerType has default value");
     29      }
     30      assert_equals(e.screenX, 0, "Click's screenX has default value");
     31      assert_equals(e.screenY, 0, "Click's screenY has default value");
     32      assert_equals(e.clientX, 0, "Click's clientX has default value");
     33      assert_equals(e.clientY, 0, "Click's clientY has default value");
     34      assert_equals(e.pageX, 0, "Click's pageX has default value");
     35      assert_equals(e.pageY, 0, "Click's pageY has default value");
     36      // https://github.com/w3c/csswg-drafts/issues/1070
     37      assert_equals(e.offsetX, 0, "Click's offsetX should have default value");
     38      assert_equals(e.offsetY, 0, "Click's offsetY should have default value");
     39    });
     40  }
     41 }));});
     42 let currentTest;
     43 let testElements = [button, inputbutton, label];
     44 let accesskeyMap = new Map([[button, "g"], [inputbutton, "b"], [label, "l"]]);
     45 testElements.forEach((el)=>promise_test((test)=> new Promise(async (resolve,reject)=>{
     46  currentTest = test;
     47  eventLog = [];
     48  var eventWatcher = new EventWatcher(test, el, ['click']);
     49  let waitForClick = eventWatcher.wait_for('click');
     50  await pressAccessKey(accesskeyMap.get(el));
     51  await waitForClick;
     52 
     53  assert_array_equals(eventLog, [`click_${el.id}`], "The Keyboard generated click only sends the click event.");
     54  resolve();
     55 }), `Test that the Keyboard generated click does not fire pointer or mouse events for ${el.id}`));
     56 </script>