Skip to content

Commit d138ce1

Browse files
zcorpanmoz-wptsync-bot
authored andcommitted
Bug 1776856 [wpt PR 34623] - DOM: Test that some event listeners are passive by default, a=testonly
Automatic update from web-platform-tests DOM: Test that some event listeners are passive by default Follows whatwg/dom#1087 -- wpt-commits: f1c5bcd1613a7d7d35d07b3edc4e4aef7fc815d1 wpt-pr: 34623
1 parent 08e46e2 commit d138ce1

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<!DOCTYPE html>
2+
<title>Default passive event listeners on window, document, document element, body</title>
3+
<link rel="help" href="https://dom.spec.whatwg.org/#default-passive-value">
4+
<script src="/resources/testharness.js"></script>
5+
<script src="/resources/testharnessreport.js"></script>
6+
<body>
7+
<div id="div"></div>
8+
<script>
9+
function isListenerPassive(eventName, eventTarget, passive, expectPassive) {
10+
test(() => {
11+
let defaultPrevented = null;
12+
let handler = event => {
13+
event.preventDefault();
14+
defaultPrevented = event.defaultPrevented;
15+
eventTarget.removeEventListener(eventName, handler);
16+
};
17+
if (passive === 'omitted') {
18+
eventTarget.addEventListener(eventName, handler);
19+
} else {
20+
eventTarget.addEventListener(eventName, handler, {passive});
21+
}
22+
let dispatchEventReturnValue = eventTarget.dispatchEvent(new Event(eventName, {cancelable: true}));
23+
assert_equals(defaultPrevented, !expectPassive, 'defaultPrevented');
24+
assert_equals(dispatchEventReturnValue, expectPassive, 'dispatchEvent() return value');
25+
}, `${eventName} listener is ${expectPassive ? '' : 'non-'}passive ${passive === 'omitted' ? 'by default' : `with {passive:${passive}}`} for ${eventTarget.constructor.name}`);
26+
}
27+
28+
const eventNames = {
29+
touchstart: true,
30+
touchmove: true,
31+
wheel: true,
32+
mousewheel: true,
33+
touchend: false
34+
};
35+
const passiveEventTargets = [window, document, document.documentElement, document.body];
36+
const div = document.getElementById('div');
37+
38+
for (const eventName in eventNames) {
39+
for (const eventTarget of passiveEventTargets) {
40+
isListenerPassive(eventName, eventTarget, 'omitted', eventNames[eventName]);
41+
isListenerPassive(eventName, eventTarget, undefined, eventNames[eventName]);
42+
isListenerPassive(eventName, eventTarget, false, false);
43+
isListenerPassive(eventName, eventTarget, true, true);
44+
}
45+
isListenerPassive(eventName, div, 'omitted', false);
46+
isListenerPassive(eventName, div, undefined, false);
47+
isListenerPassive(eventName, div, false, false);
48+
isListenerPassive(eventName, div, true, true);
49+
}
50+
</script>

0 commit comments

Comments
 (0)