OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src='../resources/testharness.js'></script> | 2 <script src='../resources/testharness.js'></script> |
3 <script src='../resources/testharnessreport.js'></script> | 3 <script src='../resources/testharnessreport.js'></script> |
4 <script src='resources/shadow-dom.js'></script> | 4 <script src='resources/shadow-dom.js'></script> |
5 <div id='d1'> | 5 <div id='d1'> |
6 <template data-mode='open' data-expose-as='d1_shadow'> | 6 <template data-mode='open' data-expose-as='d1_shadow'> |
7 <div id='d1-d1'> | 7 <div id='d1-d1'> |
8 <template data-mode='open' data-expose-as='d1_d1_shadow'> | 8 <template data-mode='open' data-expose-as='d1_d1_shadow'> |
9 <slot name='d1-d1-s1'></slot> | 9 <slot name='d1-d1-s1'></slot> |
10 </template> | 10 </template> |
(...skipping 20 matching lines...) Expand all Loading... |
31 assert_array_equals(d1_d1_s1.assignedNodes(), [d1_s1]); | 31 assert_array_equals(d1_d1_s1.assignedNodes(), [d1_s1]); |
32 assert_array_equals(d1_d1_s1.assignedNodes({'flatten': true}), [d2]); | 32 assert_array_equals(d1_d1_s1.assignedNodes({'flatten': true}), [d2]); |
33 | 33 |
34 d1_s1.addEventListener('slotchange', (e) => { | 34 d1_s1.addEventListener('slotchange', (e) => { |
35 test.step(() => { | 35 test.step(() => { |
36 count_for_d1_s1++; | 36 count_for_d1_s1++; |
37 if (count_for_d1_s1 == 1) { | 37 if (count_for_d1_s1 == 1) { |
38 assert_equals(e.target, d1_s1); | 38 assert_equals(e.target, d1_s1); |
39 assert_array_equals(d1_s1.assignedNodes(), [d2, d3]); | 39 assert_array_equals(d1_s1.assignedNodes(), [d2, d3]); |
40 assert_array_equals(d1_s1.assignedNodes({'flatten': true}), [d2, d3]); | 40 assert_array_equals(d1_s1.assignedNodes({'flatten': true}), [d2, d3]); |
41 assert_array_equals(e.scoped, true); | |
42 } else if (count_for_d1_s1 == 2) { | 41 } else if (count_for_d1_s1 == 2) { |
43 assert_equals(e.target, d1_s1); | 42 assert_equals(e.target, d1_s1); |
44 assert_array_equals(d1_s1.assignedNodes(), [d2]); | 43 assert_array_equals(d1_s1.assignedNodes(), [d2]); |
45 assert_array_equals(d1_s1.assignedNodes({'flatten': true}), [d2]); | 44 assert_array_equals(d1_s1.assignedNodes({'flatten': true}), [d2]); |
46 assert_array_equals(e.scoped, true); | |
47 test.done(); | 45 test.done(); |
48 } | 46 } |
49 }); | 47 }); |
50 }); | 48 }); |
51 | 49 |
52 d1_d1_s1.addEventListener('slotchange', (e) => { | 50 d1_d1_s1.addEventListener('slotchange', (e) => { |
53 test.step(() => { | 51 test.step(() => { |
54 count_for_d1_d1_s1++; | 52 count_for_d1_d1_s1++; |
55 if (count_for_d1_d1_s1 == 1) { | 53 if (count_for_d1_d1_s1 == 1) { |
56 assert_equals(e.target, d1_d1_s1); | 54 assert_equals(e.target, d1_d1_s1); |
57 assert_array_equals(d1_d1_s1.assignedNodes(), [d1_s1]); | 55 assert_array_equals(d1_d1_s1.assignedNodes(), [d1_s1]); |
58 assert_array_equals(d1_d1_s1.assignedNodes({'flatten': true}), [d2, d3])
; | 56 assert_array_equals(d1_d1_s1.assignedNodes({'flatten': true}), [d2, d3])
; |
59 assert_array_equals(e.scoped, true); | |
60 } else if (count_for_d1_d1_s1 == 2){ | 57 } else if (count_for_d1_d1_s1 == 2){ |
61 assert_equals(e.target, d1_d1_s1); | 58 assert_equals(e.target, d1_d1_s1); |
62 assert_array_equals(d1_d1_s1.assignedNodes(), [d1_s1]); | 59 assert_array_equals(d1_d1_s1.assignedNodes(), [d1_s1]); |
63 assert_array_equals(d1_d1_s1.assignedNodes({'flatten': true}), [d2]); | 60 assert_array_equals(d1_d1_s1.assignedNodes({'flatten': true}), [d2]); |
64 assert_array_equals(e.scoped, true); | |
65 test.done(); | 61 test.done(); |
66 } | 62 } |
67 }); | 63 }); |
68 }); | 64 }); |
69 | 65 |
70 const d3 = document.createElement('div'); | 66 const d3 = document.createElement('div'); |
71 d3.setAttribute('id', 'd3'); | 67 d3.setAttribute('id', 'd3'); |
72 d3.setAttribute('slot', 'd1-s1'); | 68 d3.setAttribute('slot', 'd1-s1'); |
73 d1.appendChild(d3); | 69 d1.appendChild(d3); |
74 // Different microtask. | 70 // Different microtask. |
75 setTimeout(function(){ | 71 setTimeout(function(){ |
76 d3.remove(); | 72 d3.remove(); |
77 }, 0); | 73 }, 0); |
78 | 74 |
79 }, "slotchange event should be dispatched for a slot at most once per microtask.
"); | 75 }, "slotchange event should be dispatched for a slot at most once per microtask.
"); |
80 </script> | 76 </script> |
OLD | NEW |