| <!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> |