| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 1 | <!DOCTYPE html> |
| 2 | <html> |
| 3 | <meta charset=utf-8 /> |
| Blink WPT Bot | 64af02f | 2022-07-11 13:32:07 | [diff] [blame] | 4 | <title>First Input: interactionId-click.</title> |
| 5 | <button id='testButtonId'>Click me</button> |
| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 6 | <script src=/resources/testharness.js></script> |
| 7 | <script src=/resources/testharnessreport.js></script> |
| 8 | <script src=/resources/testdriver.js></script> |
| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 9 | <script src=/resources/testdriver-vendor.js></script> |
| 10 | <script src=resources/event-timing-test-utils.js></script> |
| 11 | |
| 12 | <script> |
| 13 | let firstInputInteractionId = 0; |
| 14 | let eventTimingPointerDownInteractionId = 0; |
| 15 | let hasFirstInputEntry = false; |
| 16 | let hasEventTimingPointerDownEntry = false; |
| 17 | |
| Blink WPT Bot | 7aa98ce | 2022-09-21 18:08:31 | [diff] [blame] | 18 | promise_test(async t => { |
| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 19 | assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.'); |
| 20 | |
| Blink WPT Bot | 7aa98ce | 2022-09-21 18:08:31 | [diff] [blame] | 21 | const callback = (entryList) => { |
| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 22 | entryList.getEntries().forEach(entry => { |
| 23 | switch (entry.entryType) { |
| Blink WPT Bot | 7aa98ce | 2022-09-21 18:08:31 | [diff] [blame] | 24 | case 'first-input': { |
| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 25 | firstInputInteractionId = entry.interactionId; |
| 26 | hasFirstInputEntry = true; |
| 27 | break; |
| 28 | } |
| Blink WPT Bot | 7aa98ce | 2022-09-21 18:08:31 | [diff] [blame] | 29 | case 'event': { |
| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 30 | if ('pointerdown' == entry.name) { |
| 31 | eventTimingPointerDownInteractionId = entry.interactionId; |
| 32 | hasEventTimingPointerDownEntry = true; |
| 33 | } |
| 34 | break; |
| 35 | } |
| 36 | } |
| Blink WPT Bot | 7aa98ce | 2022-09-21 18:08:31 | [diff] [blame] | 37 | }); |
| 38 | }; |
| 39 | const readyToResolve = () => { |
| 40 | return hasFirstInputEntry && hasEventTimingPointerDownEntry; |
| 41 | } |
| 42 | const observerPromise = createPerformanceObserverPromise(['event', 'first-input'], callback, readyToResolve); |
| 43 | await interactAndObserve('click', document.getElementById('testButtonId'), observerPromise); |
| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 44 | |
| Blink WPT Bot | 7aa98ce | 2022-09-21 18:08:31 | [diff] [blame] | 45 | assert_greater_than(firstInputInteractionId, 0, 'The first input entry should have a non-trivial interactionId'); |
| 46 | assert_equals(firstInputInteractionId, eventTimingPointerDownInteractionId, 'The first input entry should have the same interactionId as the event timing pointerdown entry'); |
| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 47 | |
| Blink WPT Bot | 64af02f | 2022-07-11 13:32:07 | [diff] [blame] | 48 | }, "The interactionId of the first input entry should match the same pointerdown entry of event timing when click."); |
| Aoyuan Zuo | 5bebbfb | 2022-06-07 22:08:03 | [diff] [blame] | 49 | </script> |
| 50 | |
| 51 | </html> |