summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/shadow-dom/event-composed-path.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/shadow-dom/event-composed-path.html')
-rw-r--r--testing/web-platform/tests/shadow-dom/event-composed-path.html281
1 files changed, 281 insertions, 0 deletions
diff --git a/testing/web-platform/tests/shadow-dom/event-composed-path.html b/testing/web-platform/tests/shadow-dom/event-composed-path.html
new file mode 100644
index 000000000..8c37b1c3b
--- /dev/null
+++ b/testing/web-platform/tests/shadow-dom/event-composed-path.html
@@ -0,0 +1,281 @@
+<!DOCTYPE html>
+<title>Shadow DOM: Event path and Event.composedPath()</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="d1">
+ <div id="target"></div>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test1);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target', 'd1', 'test1'];
+ assert_event_path_equals(log,
+ [['target', 'target', null, path],
+ ['d1', 'target', null, path],
+ ['test1', 'target', null, path]]);
+}, 'Event Path without ShadowRoots.');
+</script>
+
+<div id="test2">
+ <div id="host">
+ <template id="sr" data-mode="open">
+ <div id="target"></div>
+ </template>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test2);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target', 'sr', 'host', 'test2'];
+ assert_event_path_equals(log,
+ [['target', 'target', null, path],
+ ['sr', 'target', null, path],
+ ['host', 'host', null, path],
+ ['test2', 'host', null, path]]);
+}, 'Event Path with an open ShadowRoot.');
+</script>
+
+<div id="test3">
+ <div id="host">
+ <template id="sr" data-mode="closed">
+ <div id="target"></div>
+ </template>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test3);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target','sr', 'host', 'test3'];
+ let path1 = ['host', 'test3'];
+ assert_event_path_equals(log, [['target', 'target', null, path],
+ ['sr', 'target', null, path],
+ ['host', 'host', null, path1],
+ ['test3', 'host', null, path1]]);
+}, 'Event Path with a closed ShadowRoot.');
+</script>
+
+<div id="test4">
+ <div id="host1">
+ <template id="sr1" data-mode="open">
+ <div id="host2">
+ <template id="sr2" data-mode="open">
+ <div id="target"></div>
+ </template>
+ </div>
+ </template>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test4);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target', 'sr2', 'host2', 'sr1', 'host1', 'test4'];
+ assert_event_path_equals(log, [['target', 'target', null, path],
+ ['sr2', 'target', null, path],
+ ['host2', 'host2', null, path],
+ ['sr1', 'host2', null, path],
+ ['host1', 'host1', null, path],
+ ['test4', 'host1', null, path]]);
+}, 'Event Path with nested ShadowRoots: open > open.');
+</script>
+
+<div id="test5">
+ <div id="host1">
+ <template id="sr1" data-mode="open">
+ <div id="host2">
+ <template id="sr2" data-mode="closed">
+ <div id="target"></div>
+ </template>
+ </div>
+ </template>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test5);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target', 'sr2', 'host2', 'sr1', 'host1', 'test5'];
+ let path1 = ['host2', 'sr1', 'host1', 'test5'];
+ assert_event_path_equals(log, [['target', 'target', null, path],
+ ['sr2', 'target', null, path],
+ ['host2', 'host2', null, path1],
+ ['sr1', 'host2', null, path1],
+ ['host1', 'host1', null, path1],
+ ['test5', 'host1', null, path1]]);
+}, 'Event Path with nested ShadowRoots: open > closed.');
+</script>
+
+<div id="test6">
+ <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>
+test(() => {
+ let n = createTestTree(test6);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target', 'sr2', 'host2', 'sr1', 'host1', 'test6'];
+ let path1 = ['host1', 'test6'];
+ assert_event_path_equals(log, [['target', 'target', null, path],
+ ['sr2', 'target', null, path],
+ ['host2', 'host2', null, path],
+ ['sr1', 'host2', null, path],
+ ['host1', 'host1', null, path1],
+ ['test6', 'host1', null, path1]]);
+}, 'Event Path with nested ShadowRoots: closed > open.');
+</script>
+
+<div id="test7">
+ <div id="host1">
+ <template id="sr1" data-mode="closed">
+ <div id="host2">
+ <template id="sr2" data-mode="closed">
+ <div id="target"></div>
+ </template>
+ </div>
+ </template>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test7);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target', 'sr2', 'host2', 'sr1', 'host1', 'test7'];
+ let path1 = ['host2', 'sr1', 'host1', 'test7'];
+ let path2 = ['host1', 'test7'];
+ assert_event_path_equals(log, [['target', 'target', null, path],
+ ['sr2', 'target', null, path],
+ ['host2', 'host2', null, path1],
+ ['sr1', 'host2', null, path1],
+ ['host1', 'host1', null, path2],
+ ['test7', 'host1', null, path2]]);
+}, 'Event Path with nested ShadowRoots: closed > closed.');
+</script>
+
+<div id="test8">
+ <div id="host1">
+ <template id="sr1" data-mode="open">
+ <slot id="slot"></slot>
+ </template>
+ <div id="target"></div>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test8);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target','slot', 'sr1', 'host1', 'test8'];
+ assert_event_path_equals(log, [['target', 'target', null, path],
+ ['slot', 'target', null, path],
+ ['sr1', 'target', null, path],
+ ['host1', 'target', null, path],
+ ['test8', 'target', null, path]]);
+}, 'Event Path with a slot in an open Shadow Root.');
+</script>
+
+<div id="test9">
+ <div id="host1">
+ <template id="sr1" data-mode="closed">
+ <slot id="slot"></slot>
+ </template>
+ <div id="target"></div>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test9);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target', 'slot', 'sr1', 'host1', 'test9'];
+ let path1 = ['target', 'host1', 'test9'];
+ assert_event_path_equals(log, [['target', 'target', null, path1],
+ ['slot', 'target', null, path],
+ ['sr1', 'target', null, path],
+ ['host1', 'target', null, path1],
+ ['test9', 'target', null, path1]]);
+}, 'Event Path with a slot in a closed Shadow Root.');
+</script>
+
+<div id="test10">
+ <div id="host1">
+ <template id="sr1" data-mode="open">
+ <div id="host2">
+ <template id="sr2" data-mode="open">
+ <slot id="slot2"></slot>
+ </template>
+ <slot id="slot1"></slot>
+ </div>
+ </template>
+ <div id="target"></div>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test10);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target','slot1', 'slot2', 'sr2', 'host2', 'sr1', 'host1', 'test10'];
+ assert_event_path_equals(log, [['target', 'target', null, path],
+ ['slot1', 'target', null, path],
+ ['slot2', 'target', null, path],
+ ['sr2', 'target', null, path],
+ ['host2', 'target', null, path],
+ ['sr1', 'target', null, path],
+ ['host1', 'target', null, path],
+ ['test10', 'target', null, path]]);
+}, 'Event Path with slots in nested ShadowRoots: open > open.');
+</script>
+
+<div id="test11">
+ <div id="host1">
+ <template id="sr1" data-mode="closed">
+ <div id="host2">
+ <template id="sr2" data-mode="closed">
+ <slot id="slot2"></slot>
+ </template>
+ <slot id="slot1"></slot>
+ </div>
+ </template>
+ <div id="target"></div>
+ </div>
+</div>
+
+<script>
+test(() => {
+ let n = createTestTree(test11);
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true }));
+ let path = ['target', 'slot1', 'slot2', 'sr2', 'host2', 'sr1', 'host1', 'test11'];
+ let path1 = ['target', 'slot1', 'host2', 'sr1', 'host1', 'test11'];
+ let path2 = ['target', 'host1', 'test11'];
+ assert_event_path_equals(log, [['target', 'target', null, path2],
+ ['slot1', 'target', null, path1],
+ ['slot2', 'target', null, path],
+ ['sr2', 'target', null, path],
+ ['host2', 'target', null, path1],
+ ['sr1', 'target', null, path1],
+ ['host1', 'target', null, path2],
+ ['test11', 'target', null, path2]]);
+}, 'Event Path with slots in nested ShadowRoots: closed > closed.');
+</script>