blob: cca240a46e49bed5a8e286911bd1364d15bac951 [file] [edit]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<div id="container"></div>
<script>
description("Tests that innerHTML parsing of a select with many options is not O(n²).");
var optionCount = 20000;
var html = '<select>';
for (var i = 0; i < optionCount; i++)
html += '<option>option ' + i + '</option>';
html += '</select>';
document.getElementById('container').innerHTML = html;
var select = document.querySelector('#container select');
shouldBe("select.options.length", "optionCount");
shouldBeEqualToString("select.value", "option 0");
shouldBe("select.selectedIndex", "0");
// Also test with an explicitly selected option in the middle.
html = '<select>';
for (var i = 0; i < optionCount; i++) {
if (i === optionCount - 1)
html += '<option selected>selected option</option>';
else
html += '<option>option ' + i + '</option>';
}
html += '</select>';
document.getElementById('container').innerHTML = html;
select = document.querySelector('#container select');
shouldBe("select.options.length", "optionCount");
shouldBeEqualToString("select.value", "selected option");
shouldBe("select.selectedIndex", "optionCount - 1");
</script>
</body>
</html>