<!DOCTYPE html> <html> <meta charset=utf-8 /> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/resources/testdriver.js></script> <script src=/resources/testdriver-vendor.js></script> <script src=resources/event-timing-test-utils.js></script> <custom-button id='custom_button'></custom-button> <script> async_test(function(t) { assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.'); let innerButtonClicked = false; customElements.define('custom-button', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = `<button id='inner_button_id'>Click me</button>`; this.shadowRoot.getElementById('inner_button_id').onclick = () => { innerButtonClicked = true; }; } }); const observer = new PerformanceObserver(t.step_func((entryList) => { const entries = entryList.getEntriesByName('pointerdown'); if (entries.length === 0) return; // There must only be one pointerdown entry. assert_equals(entries.length, 1); verifyClickEvent(entries[0], 'custom_button', true); assert_true(innerButtonClicked); t.done() })); observer.observe({entryTypes: ['event']}); clickAndBlockMain('custom_button'); }, "Event Timing: target reports the last Event Target, i.e. nothing from shadow DOM."); </script> </html>