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