tizen beta release
[framework/web/webkit-efl.git] / LayoutTests / fast / forms / script-tests / select-set-length-with-mutation-reorder.js
1 description('Tests that setting the .length on an HTMLSelectElement works in the presence of DOM mutation listeners that reorder option elements');
2
3 var wrapper = document.createElement('div');
4 document.body.appendChild(wrapper);
5 wrapper.innerHTML = '<select id="theSelect">' +
6                     '<option id="a">a</option>' +
7                     '<option id="b">b</option>' +
8                     '<option id="c">c</option>' +
9                     '<option id="d">d</option>' +
10                     '</select>';
11
12 var sel = document.getElementById('theSelect');
13
14 var firstRemove = true;
15 function onRemove(e) {
16     if (firstRemove) {
17         // remove listener temporarily to avoid lots of nesting
18         sel.removeEventListener('DOMNodeRemoved', onRemove, false);
19         var lastOption = document.getElementById('d');
20         sel.removeChild(lastOption);
21         sel.insertBefore(lastOption, document.getElementById('c'));
22         firstRemove = false;
23         sel.addEventListener('DOMNodeRemoved', onRemove, false);
24     }
25 }
26
27 sel.addEventListener('DOMNodeRemoved', onRemove, false);
28 sel.addEventListener('DOMNodeInserted', function() {}, false);
29
30 shouldBe('sel.length', '4');
31 sel.length = 2;
32 shouldBe('sel.length', '2');
33 shouldBe('sel.options.item(0).id', '"a"');
34 shouldBe('sel.options.item(1).id', '"b"');