| <!DOCTYPE html> |
| <html> |
| <meta charset=utf-8 /> |
| <title>Event Timing: interactionId.</title> |
| <button id='button'>Click me.</button> |
| <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> |
| <script> |
| let observedEntries = []; |
| let map = new Map(); |
| async function clickOnElement(id) { |
| const element = document.getElementById(id); |
| const clickHandler = () => { |
| mainThreadBusy(200); |
| }; |
| element.addEventListener("mousedown", clickHandler); |
| element.addEventListener("mouseup", clickHandler); |
| element.addEventListener("pointerdown", clickHandler); |
| element.addEventListener("pointerup", clickHandler); |
| element.addEventListener("click", clickHandler); |
| await test_driver.click(element); |
| } |
| function eventsForCheck(entry) { |
| if (entry.name === 'pointerdown' || entry.name === 'pointerup' || entry.name === 'click' |
| || entry.name === 'mousedown' || entry.name === 'mouseup') { |
| map.set(entry.name, entry.interactionId); |
| return true; |
| } |
| return false; |
| } |
| async_test(function(t) { |
| assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.'); |
| new PerformanceObserver(t.step_func(entryList => { |
| observedEntries = observedEntries.concat(entryList.getEntries().filter(eventsForCheck)); |
| if (observedEntries.length < 5) |
| return; |
| assert_equals(map.get('mousedown'), 0, 'Should not have a interactionId'); |
| assert_equals(map.get('mouseup'), 0, 'Should not have a interactionId'); |
| assert_greater_than(map.get('pointerdown'), 0, 'Should have a non-trivial interactionId'); |
| assert_equals(map.get('pointerdown'), map.get('pointerup'), 'Pointerdown and pointerup should have the same interactionId'); |
| assert_equals(map.get('pointerdown'), map.get('click'), 'Pointerdown and click should have the same interactionId'); |
| t.done(); |
| })).observe({type: 'event'}); |
| clickOnElement('button'); |
| }, "Event Timing: compare event timing interactionId."); |
| </script> |
| </html> |