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>