summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/shadow-dom/event-composed-path-after-dom-mutation.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/shadow-dom/event-composed-path-after-dom-mutation.html')
-rw-r--r--testing/web-platform/tests/shadow-dom/event-composed-path-after-dom-mutation.html59
1 files changed, 59 insertions, 0 deletions
diff --git a/testing/web-platform/tests/shadow-dom/event-composed-path-after-dom-mutation.html b/testing/web-platform/tests/shadow-dom/event-composed-path-after-dom-mutation.html
new file mode 100644
index 0000000000..fd129e036a
--- /dev/null
+++ b/testing/web-platform/tests/shadow-dom/event-composed-path-after-dom-mutation.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<title>Shadow DOM: Event.composedPath() should return the same result even if DOM is mutated</title>
+<meta name="author" title="Hayato Ito" href="mailto:hayato@google.com">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/shadow-dom.js"></script>
+
+<div id="test1">
+ <div id="host">
+ <template id="sr" data-mode="closed">
+ <div id="target"></div>
+ </template>
+ </div>
+</div>
+
+<script>
+async_test((t) => {
+ const n = createTestTree(document.querySelector('#test1'));
+ n.host.addEventListener('my-event', t.step_func((e) => {
+ const path_before = e.composedPath();
+ // Move the target out of a closed shadow tree
+ n.host.append(n.target);
+ const path_after = e.composedPath();
+ assert_array_equals(path_before, path_after);
+ t.done();
+ }));
+ const event = new Event('my-event', { bubbles: true, composed: true });
+ n.target.dispatchEvent(event);
+}, 'Event.composedPath() should return the same result even if DOM is mutated (1/2)');
+</script>
+
+<div id="test2">
+ <div id="host1">
+ <template id="sr1" data-mode="closed">
+ <div id="host2">
+ <template id="sr2" data-mode="open">
+ <div id="target"></div>
+ </template>
+ </div>
+ </template>
+ </div>
+</div>
+
+<script>
+async_test((t) => {
+ const n = createTestTree(document.querySelector('#test2'));
+ n.host1.addEventListener('my-event', t.step_func((e) => {
+ const path_before = e.composedPath();
+ // Move nodes out of a closed shadow tree
+ n.host1.append(n.host2);
+ n.host1.append(n.target);
+ const path_after = e.composedPath();
+ assert_array_equals(path_before, path_after);
+ t.done();
+ }));
+ const event = new Event('my-event', { bubbles: true, composed: true });
+ n.target.dispatchEvent(event);
+}, 'Event.composedPath() should return the same result even if DOM is mutated (2/2)');
+</script>