| <!DOCTYPE html> | |
| <html> | |
| <meta charset=utf-8 /> | |
| <title>Event Timing: eventCounts.</title> | |
| <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> | |
| <div id='div'>Click me</div> | |
| <button id='button'>Click me</button> | |
| <script> | |
| promise_test( t => { | |
| assert_implements(window.EventCounts, "Event Counts isn't supported"); | |
| function testClicks(expectedCount, resolve) { | |
| const clickCount = performance.eventCounts.get('click'); | |
| if (clickCount < expectedCount) { | |
| t.step_timeout(function() { | |
| testClicks(expectedCount, resolve); | |
| }, 5); | |
| return; | |
| } | |
| assert_equals(clickCount, expectedCount,'Incorrect click count.'); | |
| assert_equals(performance.eventCounts.get('mousedown'), expectedCount, 'Incorrect mousedown count'); | |
| assert_equals(performance.eventCounts.get('mouseup'), expectedCount, 'Incorrect mouseup count.'); | |
| resolve(); | |
| } | |
| function promiseClicks(expectedCount) { | |
| return new Promise(resolve => { | |
| testClicks(expectedCount, resolve) | |
| }); | |
| } | |
| return test_driver.click(document.getElementById('div')).then(() => { | |
| return promiseClicks(1); | |
| }).then(() => { | |
| return test_driver.click(document.getElementById('button')); | |
| }).then(() => { | |
| return promiseClicks(2); | |
| }).then(() => { | |
| return test_driver.click(document.getElementById('div')); | |
| }).then(() => { | |
| return promiseClicks(3); | |
| }); | |
| }) | |
| </script> | |
| </html> |