OLD | NEW |
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="../../resources/js-test.js"></script> | 4 <script src="../../resources/js-test.js"></script> |
5 </head> | 5 </head> |
6 <body> | 6 <body> |
7 <p id="description"></p> | 7 <p id="description"></p> |
8 <div id="console"></div> | 8 <div id="console"></div> |
9 <script> | 9 <script> |
10 description('Tests that setting .length on an HTMLSelectElement works in the pre
sence of mutation listeners that remove option elements.'); | 10 description('Tests that setting .length on an HTMLSelectElement works in the pre
sence of mutation listeners that remove option elements.'); |
11 | 11 |
12 function onRemove(e) { | 12 function onRemove(e) { |
13 if (e.target.nextSibling != null) { | 13 if (e.target.nextSibling != null) { |
14 // remove listener temporarily to avoid lots of nesting | 14 // remove listener temporarily to avoid lots of nesting |
15 sel.removeEventListener('DOMNodeRemoved', onRemove, false); | 15 sel.removeEventListener('DOMNodeRemoved', onRemove, false); |
16 e.target.nextSibling.parentNode.removeChild(e.target.nextSibling); | 16 e.target.nextSibling.parentNode.removeChild(e.target.nextSibling); |
17 sel.addEventListener('DOMNodeRemoved', onRemove, false); | 17 sel.addEventListener('DOMNodeRemoved', onRemove, false); |
18 } | 18 } |
19 gc(); | 19 GCController.collect(); // Use a single GC here to avoid test TIMEOUTs. |
20 } | 20 } |
21 | 21 |
22 var sel = document.createElement('select'); | 22 var sel = document.createElement('select'); |
23 document.body.appendChild(sel); | 23 document.body.appendChild(sel); |
24 | 24 |
25 sel.addEventListener('DOMNodeRemoved', onRemove, false); | 25 sel.addEventListener('DOMNodeRemoved', onRemove, false); |
26 sel.addEventListener('DOMNodeInserted', function() {}, false); | 26 sel.addEventListener('DOMNodeInserted', function() {}, false); |
27 | 27 |
28 sel.length = 200; | 28 sel.length = 200; |
29 shouldBe('sel.length', '200'); | 29 shouldBe('sel.length', '200'); |
30 | 30 |
31 sel.length = 100; | 31 sel.length = 100; |
32 shouldBe('sel.length', '100'); | 32 shouldBe('sel.length', '100'); |
33 | 33 |
34 sel.length = 180; | 34 sel.length = 180; |
35 shouldBe('sel.length', '180'); | 35 shouldBe('sel.length', '180'); |
36 </script> | 36 </script> |
37 </body> | 37 </body> |
38 </html> | 38 </html> |
OLD | NEW |