| 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 |