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