OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <script src="../resources/testharness.js"></script> |
| 3 <script src="../resources/testharnessreport.js"></script> |
| 4 <script src="resources/shadow-dom.js"></script> |
| 5 |
| 6 <div id="test1"> |
| 7 <div id="target"></div> |
| 8 <div id="related"></div> |
| 9 </div> |
| 10 |
| 11 <script> |
| 12 test(() => { |
| 13 let n = createTestTree(test1); |
| 14 let log = dispatchEventWithLog(n, n.target, new FocusEvent('my-focus', { bubbl
es: true, composed: true, relatedTarget: n.related })); |
| 15 let path = ['target', 'test1']; |
| 16 assert_event_path_equals(log, [['target', 'target', 'related', path], |
| 17 ['test1', 'target', 'related', path]]); |
| 18 }, 'Event path for an event with a relatedTarget. relatedTarget != target.'); |
| 19 </script> |
| 20 |
| 21 <script> |
| 22 test(() => { |
| 23 let n = createTestTree(test1); |
| 24 let log = dispatchEventWithLog(n, n.target, new FocusEvent('my-focus', { bubbl
es: true, composed: true, relatedTarget: n.target })); |
| 25 let path = ['target', 'test1']; |
| 26 assert_event_path_equals(log, [['target', 'target', 'target', path], |
| 27 ['test1', 'target', 'target', path]]); |
| 28 }, 'Event path for an event with a relatedTarget. Event shoul be dispatched if 1
) target and relatedTarget are same, and 2) they are not in a shadow tree.'); |
| 29 </script> |
| 30 |
| 31 <div id="test2"> |
| 32 <div id="host"> |
| 33 <template id="sr" data-mode="open"> |
| 34 <div id="target"></div> |
| 35 <div id="related"></div> |
| 36 </template> |
| 37 </div> |
| 38 </div> |
| 39 |
| 40 <script> |
| 41 test(() => { |
| 42 let n = createTestTree(test2); |
| 43 let log = dispatchEventWithLog(n, n.target, new FocusEvent('my-focus', { bubbl
es: true, composed: true, relatedTarget: n.related })); |
| 44 let path = ['target', 'sr']; |
| 45 assert_event_path_equals(log, [['target', 'target', 'related', path], |
| 46 ['sr', 'target', 'related', path]]); |
| 47 }, 'Event path for an event with a relatedTarget. Event should stop at the shado
w root'); |
| 48 |
| 49 test(() => { |
| 50 let n = createTestTree(test2); |
| 51 let log = dispatchEventWithLog(n, n.target, new FocusEvent('my-focus', { bubbl
es: true, composed: true, relatedTarget: n.target })); |
| 52 assert_event_path_equals(log, []); |
| 53 }, 'Event path for an event with a relatedTarget. Event should not be dispatched
if 1) target and relatedTarget are same, and 2) both are in a shadow tree.'); |
| 54 </script> |
| 55 |
| 56 <div id="test3_1"> |
| 57 <div id="host1"> |
| 58 <template id="sr1" data-mode="open"> |
| 59 <div id="target1"></div> |
| 60 </template> |
| 61 </div> |
| 62 </div> |
| 63 |
| 64 <div id="test3_2"> |
| 65 <div id="host2"> |
| 66 <template id="sr2" data-mode="open"> |
| 67 <div id="target2"></div> |
| 68 </template> |
| 69 </div> |
| 70 </div> |
| 71 |
| 72 <script> |
| 73 test(() => { |
| 74 let n1 = createTestTree(test3_1); |
| 75 let n2 = createTestTree(test3_2); |
| 76 let log = dispatchEventWithLog(n1, n1.target1, new FocusEvent('my-focus', { bu
bbles: true, composed: true, relatedTarget: n2.target2 })); |
| 77 let path = ['target1', 'sr1', 'host1', 'test3_1']; |
| 78 assert_event_path_equals(log, [['target1', 'target1', 'host2', path], |
| 79 ['sr1', 'target1', 'host2', path], |
| 80 ['host1', 'host1', 'host2', path], |
| 81 ['test3_1', 'host1', 'host2', path]]); |
| 82 }, 'Event path for an event with a relatedTarget. target and relaterTarget do no
t share any shadow-including ancestor. target is in a shadow tree.'); |
| 83 |
| 84 test(() => { |
| 85 let n1 = createTestTree(test3_1); |
| 86 let n2 = createTestTree(test3_2); |
| 87 let log = dispatchEventWithLog(n1, n1.host1, new FocusEvent('my-focus', { bubb
les: true, composed: true, relatedTarget: n2.target2 })); |
| 88 let path = ['host1', 'test3_1']; |
| 89 assert_event_path_equals(log, [['host1', 'host1', 'host2', path], |
| 90 ['test3_1', 'host1', 'host2', path]]); |
| 91 }, 'Event path for an event with a relatedTarget. target and relaterTarget do no
t share any shadow-including ancestor. target is not in a shadow tree'); |
| 92 </script> |
| 93 |
| 94 <div id="test4"> |
| 95 <div id="host1"> |
| 96 <template id="sr1" data-mode="open"> |
| 97 <div id="host2"> |
| 98 <template id="sr2" data-mode="open"> |
| 99 <div id="target"></div> |
| 100 </template> |
| 101 </div> |
| 102 <div id="host3"> |
| 103 <template id="sr3" data-mode="open"> |
| 104 <div id="related"></div> |
| 105 </template> |
| 106 </div> |
| 107 </template> |
| 108 </div> |
| 109 </div> |
| 110 |
| 111 <script> |
| 112 test(() => { |
| 113 let n = createTestTree(test4); |
| 114 let log = dispatchEventWithLog(n, n.target, new FocusEvent('my-focus', { bubbl
es: true, composed: true, relatedTarget: n.related })); |
| 115 let path = ['target', 'sr2', 'host2', 'sr1']; |
| 116 assert_event_path_equals(log, [['target', 'target', 'host3', path], |
| 117 ['sr2', 'target', 'host3', path], |
| 118 ['host2', 'host2', 'host3', path], |
| 119 ['sr1', 'host2', 'host3', path]]); |
| 120 }, 'Event path for an event with a relatedTarget. target and relaterTarget share
the same shadow-including ancestor. Both are in shadow trees.'); |
| 121 |
| 122 test(() => { |
| 123 let n = createTestTree(test4); |
| 124 let log = dispatchEventWithLog(n, n.target, new FocusEvent('my-focus', { bubbl
es: true, composed: true, relatedTarget: n.host1 })); |
| 125 let path = ['target', 'sr2', 'host2', 'sr1']; |
| 126 assert_event_path_equals(log, [['target', 'target', 'host1', path], |
| 127 ['sr2', 'target', 'host1', path], |
| 128 ['host2', 'host2', 'host1', path], |
| 129 ['sr1', 'host2', 'host1', path]]); |
| 130 }, 'Event path for an event with a relatedTarget. relaterTarget is a shadow-incl
uding ancestor of target.'); |
| 131 |
| 132 test(() => { |
| 133 let n = createTestTree(test4); |
| 134 let log = dispatchEventWithLog(n, n.host1, new FocusEvent('my-focus', { bubble
s: true, composed: true, relatedTarget: n.target })); |
| 135 assert_event_path_equals(log, []); |
| 136 }, 'Event path for an event with a relatedTarget. target is a shadow-including a
ncestor of relatedTarget.'); |
| 137 </script> |
| 138 |
| 139 <div id="test5"> |
| 140 <div id="host"> |
| 141 <template id="sr" data-mode="open"> |
| 142 <slot id="slot"></slot> |
| 143 <div id="related"></div> |
| 144 </template> |
| 145 <div id="target"></div> |
| 146 </div> |
| 147 </div> |
| 148 |
| 149 <script> |
| 150 test(() => { |
| 151 let n = createTestTree(test5); |
| 152 let log = dispatchEventWithLog(n, n.target, new FocusEvent('my-focus', { bubbl
es: true, composed: true, relatedTarget: n.related })); |
| 153 let path = ['target', 'slot', 'sr', 'host', 'test5']; |
| 154 assert_event_path_equals(log, [['target', 'target', 'host', path], |
| 155 ['slot', 'target', 'related', path], |
| 156 ['sr', 'target', 'related', path], |
| 157 ['host', 'target', 'host', path], |
| 158 ['test5', 'target', 'host', path]]); |
| 159 }, 'Event path for an event with a relatedTarget. target is assigned to a slot.'
); |
| 160 |
| 161 test(() => { |
| 162 let n = createTestTree(test5); |
| 163 let log = dispatchEventWithLog(n, n.related, new FocusEvent('my-focus', { bubb
les: true, composed: true, relatedTarget: n.target })); |
| 164 let path = ['related', 'sr', 'host', 'test5']; |
| 165 assert_event_path_equals(log, [['related', 'related', 'target', path], |
| 166 ['sr', 'related', 'target', path], |
| 167 ['host', 'host', 'target', path], |
| 168 ['test5', 'host', 'target', path]]); |
| 169 }, 'Event path for an event with a relatedTarget. relatedTarget is assigned to a
slot.'); |
| 170 </script> |
| 171 |
| 172 <div id="test6"> |
| 173 <div id="host0"> |
| 174 <template id="sr0" data-mode="open"> |
| 175 <div id="host1"> |
| 176 <template id="sr1" data-mode="open"> |
| 177 <div id="host2"> |
| 178 <template id="sr2" data-mode="open"> |
| 179 <slot id="slot2"></slot> |
| 180 <div id="related2"></div> |
| 181 </template> |
| 182 <div id="related1"></div> |
| 183 <div id="d1"> |
| 184 <slot id="slot1"></slot> |
| 185 </div> |
| 186 </div> |
| 187 </template> |
| 188 <div id="host3"> |
| 189 <template id="sr3" data-mode="open"> |
| 190 <div id="host4"> |
| 191 <template id="sr4" data-mode="open"> |
| 192 <div id="host5"> |
| 193 <template id="sr5" data-mode="open"> |
| 194 <slot id="slot5"></slot> |
| 195 </template> |
| 196 <slot id="slot4"></slot> |
| 197 </div> |
| 198 </template> |
| 199 <div id="target"></div> |
| 200 </div> |
| 201 </template> |
| 202 </div> |
| 203 </div> |
| 204 </template> |
| 205 </div> |
| 206 </div> |
| 207 |
| 208 <script> |
| 209 test(() => { |
| 210 let n = createTestTree(test6); |
| 211 let log = dispatchEventWithLog(n, n.target, new FocusEvent('my-focus', { bubbl
es: true, composed: true, relatedTarget: n.related1 })); |
| 212 let path = ['target', 'slot4', 'slot5', 'sr5', 'host5', 'sr4', 'host4', 'sr3',
'host3', 'slot1', 'd1', 'slot2', 'sr2', 'host2', 'sr1', 'host1', 'sr0']; |
| 213 assert_event_path_equals(log, [['target', 'target', 'host1', path], |
| 214 ['slot4', 'target', 'host1', path], |
| 215 ['slot5', 'target', 'host1', path], |
| 216 ['sr5', 'target', 'host1', path], |
| 217 ['host5', 'target', 'host1', path], |
| 218 ['sr4', 'target', 'host1', path], |
| 219 ['host4', 'target', 'host1', path], |
| 220 ['sr3', 'target', 'host1', path], |
| 221 ['host3', 'host3', 'host1', path], |
| 222 ['slot1', 'host3', 'related1', path], |
| 223 ['d1' , 'host3', 'related1', path], |
| 224 ['slot2', 'host3', 'related1', path], |
| 225 ['sr2', 'host3', 'related1', path], |
| 226 ['host2', 'host3', 'related1', path], |
| 227 ['sr1', 'host3', 'related1', path], |
| 228 ['host1', 'host3', 'host1', path], |
| 229 ['sr0', 'host3', 'host1' , path]]); |
| 230 }, 'Event path for an event with a relatedTarget. Event should be dispatched at
every slots.'); |
| 231 |
| 232 test(() => { |
| 233 let n = createTestTree(test6); |
| 234 let log = dispatchEventWithLog(n, n.target, new FocusEvent('my-focus', { bubbl
es: true, composed: true, relatedTarget: n.related2 })); |
| 235 let path = ['target', 'slot4', 'slot5', 'sr5', 'host5', 'sr4', 'host4', 'sr3',
'host3', 'slot1', 'd1', 'slot2', 'sr2', 'host2', 'sr1', 'host1', 'sr0']; |
| 236 assert_event_path_equals(log, [['target', 'target', 'host1', path], |
| 237 ['slot4', 'target', 'host1', path], |
| 238 ['slot5', 'target', 'host1', path], |
| 239 ['sr5', 'target', 'host1', path], |
| 240 ['host5', 'target', 'host1', path], |
| 241 ['sr4', 'target', 'host1', path], |
| 242 ['host4', 'target', 'host1', path], |
| 243 ['sr3', 'target', 'host1', path], |
| 244 ['host3', 'host3', 'host1', path], |
| 245 ['slot1', 'host3', 'host2', path], |
| 246 ['d1' , 'host3', 'host2', path], |
| 247 ['slot2', 'host3', 'related2', path], |
| 248 ['sr2', 'host3', 'related2', path], |
| 249 ['host2', 'host3', 'host2', path], |
| 250 ['sr1', 'host3', 'host2', path], |
| 251 ['host1', 'host3', 'host1', path], |
| 252 ['sr0', 'host3', 'host1' , path]]); |
| 253 }, 'Event path for an event with a relatedTarget. Event should be dispatched at
every slots. relatedTarget should be correctly retargeted.'); |
| 254 </script> |
OLD | NEW |