disabled-event-dispatch.tentative.html (2298B)
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 <div id=targetparent> 13 <button disabled> 14 hello world 15 <span style="border: 1px solid black">child</span> 16 </button> 17 <my-control disabled> 18 hello world 19 <span style="border: 1px solid black">child</span> 20 </my-control> 21 </div> 22 23 <script> 24 customElements.define('my-control', class extends HTMLElement { 25 static get formAssociated() { return true; } 26 }); 27 28 ['mousedown', 'mouseup', 'pointerdown', 'pointerup', 'click'].forEach(eventName => { 29 [true, false].forEach(clickChildElement => { 30 for (const target of targetparent.children) { 31 promise_test(async () => { 32 let parentReceivedEvent = false; 33 targetparent.addEventListener(eventName, () => parentReceivedEvent = true); 34 35 let targetReceivedEvent = false; 36 target.addEventListener(eventName, () => targetReceivedEvent = true); 37 38 let childReceivedEvent = false; 39 let targetchild = target.firstElementChild; 40 targetchild.addEventListener(eventName, () => childReceivedEvent = true); 41 42 await test_driver.click(clickChildElement ? targetchild : target); 43 44 const parentShouldReceiveEvents = eventName.startsWith('pointer'); 45 assert_equals(parentReceivedEvent, parentShouldReceiveEvents, 46 `parent element received ${eventName} events`); 47 48 const targetShouldReceiveEvents = eventName.startsWith('pointer'); 49 assert_equals(targetReceivedEvent, targetShouldReceiveEvents, 50 `target element received ${eventName} events`); 51 assert_equals(childReceivedEvent, clickChildElement, 52 `child element received ${eventName} events`); 53 }, `Testing ${eventName} events when clicking ${clickChildElement ? 'child of ' : ''}disabled ${target.localName}.`); 54 } 55 }); 56 }); 57 </script>