Index: third_party/WebKit/LayoutTests/shadow-dom/event-composed-path.html |
diff --git a/third_party/WebKit/LayoutTests/shadow-dom/event-composed-path.html b/third_party/WebKit/LayoutTests/shadow-dom/event-composed-path.html |
index 81ab3070d4943d9d2f76b803adf7f1821e31a841..4b184a0e68be4e88cb2cc962a8839953085ccd80 100644 |
--- a/third_party/WebKit/LayoutTests/shadow-dom/event-composed-path.html |
+++ b/third_party/WebKit/LayoutTests/shadow-dom/event-composed-path.html |
@@ -4,96 +4,250 @@ |
<script src="resources/shadow-dom.js"></script> |
<div id="test1"> |
- <template id="shadowroot" data-mode="open"> |
- <slot id="slot" name="slot"></slot> |
- </template> |
- <input id="input" slot="slot"> |
+ <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 })); |
+ assert_event_path_equals(log, makeExpectedEventPathLog(['target', 'd1', 'test1'])); |
+}, 'Event Path without ShadowRoots.'); |
+</script> |
+ |
<div id="test2"> |
- <template id="shadowroot" data-mode="open"> |
- <slot id="slot" name="slot"></slot> |
- </template> |
- <div id="input-parent" slot="slot"> |
- <input id="input"> |
+ <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 })); |
+ assert_event_path_equals(log, makeExpectedEventPathLog(['target', 'sr', 'host', 'test2'])); |
+}, 'Event Path with an open ShadowRoot.'); |
+</script> |
+ |
<div id="test3"> |
- <template id="open_shadow" data-mode="open"> |
- <div id="inner_open"> |
- <template id="open_shadow_in_open_shadow" data-mode="open"> |
- <spen id="target_open" tabindex="0">open</spen> |
- </template> |
- </div> |
- </template> |
+ <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', null, path], |
+ ['sr', null, path], |
+ ['host', null, path1], |
+ ['test3', null, path1]]); |
+}, 'Event Path with a closed ShadowRoot.'); |
+</script> |
+ |
<div id="test4"> |
- <template id="closed_shadow" data-mode="closed"> |
- <div id="inner_closed"> |
- <template id="open_shadow_in_closed_shadow" data-mode="open"> |
- <spen id="target_closed" tabindex="0">closed</spen> |
- </template> |
- </div> |
- </template> |
+ <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> |
-function makeExpectedEventPathLog(path) { |
- let expectedLog = []; |
- for (let i of path) { |
- expectedLog.push([i, null, path]); |
- } |
- return expectedLog; |
-} |
+test(() => { |
+ let n = createTestTree(test4); |
+ let log = dispatchEventWithLog(n, n.target, new Event('my-event', { bubbles: true, composed: true })); |
+ assert_event_path_equals(log, makeExpectedEventPathLog(['target', 'sr2', 'host2', 'sr1', 'host1', 'test4'])); |
+}, '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(() => { |
- const event = new Event('my-event'); |
- let dispatched = false; |
- let target = document.createElement('div'); |
- target.addEventListener('my-event', (e) => { |
- assert_array_equals(e.composedPath(), [target]); |
- dispatched = true; |
- }); |
- assert_array_equals(event.composedPath(), []); |
- target.dispatchEvent(event); |
- assert_true(dispatched); |
- assert_array_equals(event.composedPath(), []); |
-}, "Event.composedPath() should return an empty array before/after dispatching an event"); |
+ 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', null, path], |
+ ['sr2', null, path], |
+ ['host2', null, path1], |
+ ['sr1', null, path1], |
+ ['host1', null, path1], |
+ ['test5', 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(test1); |
- removeWhiteSpaceOnlyTextNodes(n.test1); |
- let log = dispatchEventWithLog(n, n.input, new Event('my-event', { bubbles: true, composed: true })); |
- assert_event_path_equals(log, makeExpectedEventPathLog(['input', 'slot', 'shadowroot', 'test1'])); |
-}, 'Triggered in a slotted element, eventPath should go through shadow tree.'); |
+ 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', null, path], |
+ ['sr2', null, path], |
+ ['host2', null, path], |
+ ['sr1', null, path], |
+ ['host1', null, path1], |
+ ['test6', 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(test2); |
- removeWhiteSpaceOnlyTextNodes(n.test2); |
- let log = dispatchEventWithLog(n, n.input, new Event('my-event', { bubbles: true, composed: true })); |
- assert_event_path_equals(log, makeExpectedEventPathLog(['input', 'input-parent', 'slot', 'shadowroot', 'test2'])); |
-}, 'EventPath works fine when event happens to a descendant of a slotted element.'); |
+ 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', null, path], |
+ ['sr2', null, path], |
+ ['host2', null, path1], |
+ ['sr1', null, path1], |
+ ['host1', null, path2], |
+ ['test7', 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(test3); |
- removeWhiteSpaceOnlyTextNodes(n.test3); |
- let log = dispatchEventWithLog(n, n.target_open, new Event('my-event', { bubbles: true, composed: true })); |
- let path = ['target_open', 'open_shadow_in_open_shadow', 'inner_open', 'open_shadow', 'test3'] |
+ 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, makeExpectedEventPathLog(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', null, path1], |
+ ['slot', null, path], |
+ ['sr1', null, path], |
+ ['host1', null, path1], |
+ ['test9', 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, makeExpectedEventPathLog(path)); |
-}, 'EventPath for Open > Open'); |
+}, '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(test4); |
- removeWhiteSpaceOnlyTextNodes(n.test4); |
- let log = dispatchEventWithLog(n, n.target_closed, new Event('my-event', { bubbles: true, composed: true })); |
- let path = ['target_closed', 'open_shadow_in_closed_shadow', 'inner_closed', 'closed_shadow', 'test4'] |
- assert_event_path_equals(log, |
- [['target_closed', null, path], |
- ['open_shadow_in_closed_shadow', null, path], |
- ['inner_closed', null, path], |
- ['closed_shadow', null, path], |
- ['test4', null, ['test4']]]); |
-}, 'EventPath for Closed > Open'); |
+ 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', null, path2], |
+ ['slot1', null, path1], |
+ ['slot2', null, path], |
+ ['sr2', null, path], |
+ ['host2', null, path1], |
+ ['sr1', null, path1], |
+ ['host1', null, path2], |
+ ['test11', null, path2]]); |
+}, 'Event Path with slots in nested ShadowRoots: closed > closed.'); |
</script> |