Skip to content

Commit 45e57b5

Browse files
annevkmoz-wptsync-bot
authored andcommitted
Bug 1924145 [wpt PR 48577] - Shadow trees: more involved dispatch tests, a=testonly
Automatic update from web-platform-tests Shadow trees: more involved dispatch tests In particular, this adds tests for when the target get moved out of the shadow tree or into a shadow tree by an event listener. Co-authored-by: Chris Dumez <[email protected]> -- wpt-commits: b330bd718452c3dc9b7f6826ba62d51bf81d5f4d wpt-pr: 48577
1 parent eeee2bd commit 45e57b5

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

testing/web-platform/tests/shadow-dom/event-post-dispatch.html

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,4 +223,60 @@
223223
assert_equals(log.event.composedPath().length, 0);
224224
}, 'Event properties post dispatch with relatedTarget in the different shadow trees. (composed: false)');
225225
document.body.removeChild(n7.test7);
226+
227+
test(t => {
228+
let host = document.createElement("div");
229+
let shadow = host.attachShadow({ mode: "open" });
230+
let target = shadow.appendChild(document.createElement("trala"));
231+
232+
let eventListenerCalled = false;
233+
target.addEventListener("my-event", t.step_func(e => {
234+
eventListenerCalled = true;
235+
assert_equals(window.event, undefined);
236+
237+
// Move target node out of shadow tree.
238+
host.appendChild(target);
239+
}));
240+
241+
let event = new MouseEvent('my-event', {composed: false, relatedTarget: host});
242+
target.dispatchEvent(event);
243+
assert_true(eventListenerCalled);
244+
245+
assert_equals(event.target, null, "target should have been cleared");
246+
assert_equals(event.relatedTarget, null, "relatedTarget should have been cleared");
247+
assert_equals(event.eventPhase, 0);
248+
assert_equals(event.currentTarget, null);
249+
assert_equals(event.composedPath().length, 0);
250+
}, 'Event properties post dispatch when target get moved out of the shadow tree by event listener');
251+
252+
test(t => {
253+
let host = document.createElement("div");
254+
let shadow = host.attachShadow({ mode: "open" });
255+
let target = host.appendChild(document.createElement("trala"));
256+
257+
let eventListenerCalled = false;
258+
target.addEventListener("my-event", t.step_func(e => {
259+
assert_equals(window.event, e);
260+
}));
261+
target.addEventListener("my-event", t.step_func(e => {
262+
eventListenerCalled = true;
263+
assert_equals(window.event, e);
264+
// Move target node into the shadow tree.
265+
shadow.append(target);
266+
}));
267+
target.addEventListener("my-event", t.step_func(e => {
268+
assert_equals(window.event, e);
269+
}));
270+
271+
let event = new MouseEvent('my-event', {composed: false, relatedTarget: host});
272+
target.dispatchEvent(event);
273+
assert_true(eventListenerCalled);
274+
275+
// targets should not have been cleared since the node was not in the shadow tree when the event was initially dispatched.
276+
assert_equals(event.target, target, "Target should not have been cleared");
277+
assert_equals(event.relatedTarget, host, "relatedTarget should not have been cleared");
278+
assert_equals(event.eventPhase, 0);
279+
assert_equals(event.currentTarget, null);
280+
assert_equals(event.composedPath().length, 0);
281+
}, 'Event properties post dispatch when target get moved into the the shadow tree by event listener');
226282
</script>

0 commit comments

Comments
 (0)