Bug 1964426 - Add a wpt test for the orphan keydown event without a keyup r=sefeng
Differential Revision: https://phabricator.services.mozilla.com/D247841
This commit is contained in:
committed by
canaltinova@gmail.com
parent
e1b7ee8a01
commit
cbe262e40a
34
testing/web-platform/tests/event-timing/orphan-keydown.html
Normal file
34
testing/web-platform/tests/event-timing/orphan-keydown.html
Normal file
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<meta charset=utf-8 />
|
||||
<title>Event Timing: orphan keydown.</title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/testdriver.js></script>
|
||||
<script src=/resources/testdriver-actions.js></script>
|
||||
<script src=/resources/testdriver-vendor.js></script>
|
||||
<script src=resources/event-timing-test-utils.js></script>
|
||||
|
||||
<body>
|
||||
<button id='target'>Click me</button>
|
||||
|
||||
<script>
|
||||
let observedEntries = [];
|
||||
const map = new Map();
|
||||
const events = ['keydown'];
|
||||
|
||||
promise_test(async t => {
|
||||
assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.');
|
||||
|
||||
const callback = (entryList) => {observedEntries = observedEntries.concat(entryList.getEntries().filter(filterAndAddToMap(events, map))); };
|
||||
const readyToResolve = () => { return observedEntries.length >= 1; };
|
||||
const observerPromise = createPerformanceObserverPromise(['event'], callback, readyToResolve);
|
||||
|
||||
await interactAndObserve('orphan-keydown', document.getElementById('target'), observerPromise);
|
||||
|
||||
assert_equals(observedEntries.length, 1, "Keydown without a keyup should be fired properly.");
|
||||
assert_greater_than(map.get('keydown'), 0, "Should have a non-trivial interactionId.")
|
||||
}, "Event Timing: Orphan keydown should be measured as an interaction.");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -554,6 +554,17 @@ async function interactAndObserve(interactionType, target, observerPromise, key
|
||||
interactionPromise = textSelectionAndBlockMain(target, 30);
|
||||
break;
|
||||
}
|
||||
case 'orphan-keydown': {
|
||||
addListeners(target, ['keydown']);
|
||||
interactionPromise = new test_driver.Actions()
|
||||
.pointerMove(0, 0, {origin: target})
|
||||
.pointerDown()
|
||||
.pointerUp()
|
||||
.addTick()
|
||||
.keyDown('a')
|
||||
.send();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return Promise.all([interactionPromise, observerPromise]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user