tor-browser

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

disabled-event-dispatch-additional.tentative.html (2902B)


      1 <!DOCTYPE html>
      2 <meta name="timeout" content="long">
      3 <link rel=author href="mailto:jarhar@chromium.org">
      4 <link rel=help href="https://github.com/whatwg/html/issues/2368">
      5 <link rel=help href="https://github.com/whatwg/html/issues/5886">
      6 <script src="/resources/testharness.js"></script>
      7 <script src="/resources/testharnessreport.js"></script>
      8 <script src="/resources/testdriver.js"></script>
      9 <script src="/resources/testdriver-vendor.js"></script>
     10 <script src="/resources/testdriver-actions.js"></script>
     11 
     12 <!-- This test should be merged with disabled-event-dispatch.tentative.html after interop2023 is over. -->
     13 
     14 <div id=targetparent>
     15  <button disabled>
     16    hello world
     17    <span style="border: 1px solid black">child</span>
     18  </button>
     19  <my-control disabled>
     20    hello world
     21    <span style="border: 1px solid black">child</span>
     22  </my-control>
     23 </div>
     24 
     25 <script>
     26 customElements.define('my-control', class extends HTMLElement {
     27  static get formAssociated() { return true; }
     28 });
     29 
     30 ['dblclick', 'auxclick'].forEach(eventName => {
     31  [true, false].forEach(clickChildElement => {
     32    for (const target of targetparent.children) {
     33      promise_test(async () => {
     34        let parentReceivedEvent = false;
     35        targetparent.addEventListener(eventName, () => parentReceivedEvent = true);
     36 
     37        let targetReceivedEvent = false;
     38        target.addEventListener(eventName, () => targetReceivedEvent = true);
     39 
     40        let childReceivedEvent = false;
     41        let targetchild = target.firstElementChild;
     42        targetchild.addEventListener(eventName, () => childReceivedEvent = true);
     43 
     44        const elementToClick = clickChildElement ? targetchild : target;
     45        if (eventName === 'dblclick') {
     46          await (new test_driver.Actions()
     47            .pointerMove(1, 1, {origin: elementToClick})
     48            .pointerDown()
     49            .pointerUp()
     50            .pointerDown()
     51            .pointerUp())
     52            .send();
     53        } else if (eventName === 'auxclick') {
     54          const actions = new test_driver.Actions();
     55          await actions
     56            .pointerMove(1, 1, {origin: elementToClick})
     57            .pointerDown({button: actions.ButtonType.MIDDLE})
     58            .pointerUp({button: actions.ButtonType.MIDDLE})
     59            .send();
     60        }
     61 
     62 
     63        const shouldReceiveEvents = eventName.startsWith('pointer') || eventName === 'auxclick';
     64        assert_equals(parentReceivedEvent, shouldReceiveEvents,
     65                      `parent element received ${eventName} events`);
     66        assert_equals(targetReceivedEvent, shouldReceiveEvents,
     67                      `target element received ${eventName} events`);
     68        assert_equals(childReceivedEvent, clickChildElement,
     69                      `child element received ${eventName} events`);
     70      }, `Testing ${eventName} events when clicking ${clickChildElement ? 'child of ' : ''}disabled ${target.localName}.`);
     71    }
     72  });
     73 });
     74 </script>