blob: a23fd7226f25f21de2ccb3a5eccd4b627527f62c [file] [log] [blame]
<script src="../../../resources/js-test-pre.js"></script>
<style>
select {
width: 100px;
height: 150px;
padding: 0px;
outline: 1px;
}
select::-webkit-scrollbar { display: none; }
</style>
<div id="testArea">
<select id="list" multiple>
<optgroup id="group" label="Group">
<option id="option1">Option 1</option>
<option id="option2">Option 2</option>
</optgroup>
<option id="option3">Option 3</option>
</select>
<br><br>
</div>
<div id="console"></div>
<script>
if (window.testRunner)
testRunner.dumpAsText();
var list = document.getElementById('list');
var listBoundingBox = list.getBoundingClientRect();
var listBoundingBoxes = list.getClientRects();
shouldBe("listBoundingBoxes.length", "1");
shouldBe("listBoundingBoxes[0].left", "listBoundingBox.left");
shouldBe("listBoundingBoxes[0].right", "listBoundingBox.right");
shouldBe("listBoundingBoxes[0].top", "listBoundingBox.top");
shouldBe("listBoundingBoxes[0].bottom", "listBoundingBox.bottom");
shouldBe("listBoundingBoxes[0].width", "listBoundingBox.width");
shouldBe("listBoundingBoxes[0].height", "listBoundingBox.height");
var group = document.getElementById('group')
var groupBoundingBox = group.getBoundingClientRect();
var groupBoundingBoxes = group.getClientRects();
shouldBe("groupBoundingBoxes.length", "1");
shouldBe("groupBoundingBoxes[0].left", "groupBoundingBox.left");
shouldBe("groupBoundingBoxes[0].right", "groupBoundingBox.right");
shouldBe("groupBoundingBoxes[0].top", "groupBoundingBox.top");
shouldBe("groupBoundingBoxes[0].bottom", "groupBoundingBox.bottom");
shouldBe("groupBoundingBoxes[0].width", "groupBoundingBox.width");
shouldBe("groupBoundingBoxes[0].height", "groupBoundingBox.height");
var option1 = document.getElementById('option1');
var option1BoundingBox = option1.getBoundingClientRect();
var option1BoundingBoxes = option1.getClientRects();
shouldBe("option1BoundingBoxes.length", "1");
shouldBe("option1BoundingBoxes[0].left", "option1BoundingBox.left");
shouldBe("option1BoundingBoxes[0].right", "option1BoundingBox.right");
shouldBe("option1BoundingBoxes[0].top", "option1BoundingBox.top");
shouldBe("option1BoundingBoxes[0].bottom", "option1BoundingBox.bottom");
shouldBe("option1BoundingBoxes[0].width", "option1BoundingBox.width");
shouldBe("option1BoundingBoxes[0].height", "option1BoundingBox.height");
var option2 = document.getElementById('option2');
var option2BoundingBox = option2.getBoundingClientRect();
var option2BoundingBoxes = option2.getClientRects();
shouldBe("option2BoundingBoxes.length", "1");
shouldBe("option2BoundingBoxes[0].left", "option2BoundingBox.left");
shouldBe("option2BoundingBoxes[0].right", "option2BoundingBox.right");
shouldBe("option2BoundingBoxes[0].top", "option2BoundingBox.top");
shouldBe("option2BoundingBoxes[0].bottom", "option2BoundingBox.bottom");
shouldBe("option2BoundingBoxes[0].width", "option2BoundingBox.width");
shouldBe("option2BoundingBoxes[0].height", "option2BoundingBox.height");
var option3 = document.getElementById('option3');
var option3BoundingBox = option3.getBoundingClientRect();
var option3BoundingBoxes = option3.getClientRects();
shouldBe("option3BoundingBoxes.length", "1");
shouldBe("option3BoundingBoxes[0].left", "option3BoundingBox.left");
shouldBe("option3BoundingBoxes[0].right", "option3BoundingBox.right");
shouldBe("option3BoundingBoxes[0].top", "option3BoundingBox.top");
shouldBe("option3BoundingBoxes[0].bottom", "option3BoundingBox.bottom");
shouldBe("option3BoundingBoxes[0].width", "option3BoundingBox.width");
shouldBe("option3BoundingBoxes[0].height", "option3BoundingBox.height");
var border = 1;
var optionHeight = option1BoundingBox.height;
shouldBe("groupBoundingBox.left", "listBoundingBox.left + border");
shouldBe("groupBoundingBox.top", "listBoundingBox.top + border");
shouldBe("groupBoundingBox.right", "listBoundingBox.right - border");
shouldBe("groupBoundingBox.bottom", "groupBoundingBox.top + 3 * optionHeight");
shouldBe("groupBoundingBox.width", "listBoundingBox.width - 2 * border");
shouldBe("groupBoundingBox.height", "3 * optionHeight");
shouldBe("option1BoundingBox.left", "listBoundingBox.left + border");
shouldBe("option1BoundingBox.top", "listBoundingBox.top + border + optionHeight");
shouldBe("option1BoundingBox.right", "listBoundingBox.right - border");
shouldBe("option1BoundingBox.bottom", "option1BoundingBox.top + option1BoundingBox.height");
shouldBe("option1BoundingBox.width", "listBoundingBox.width - 2 * border");
shouldBe("option2BoundingBox.left", "listBoundingBox.left + border");
shouldBe("option2BoundingBox.top", "listBoundingBox.top + border + 2 * optionHeight");
shouldBe("option2BoundingBox.right", "listBoundingBox.right - border");
shouldBe("option2BoundingBox.bottom", "option2BoundingBox.top + option2BoundingBox.height");
shouldBe("option2BoundingBox.width", "listBoundingBox.width - 2 * border");
shouldBe("option3BoundingBox.left", "listBoundingBox.left + border");
shouldBe("option3BoundingBox.top", "listBoundingBox.top + border + 3 * optionHeight");
shouldBe("option3BoundingBox.right", "listBoundingBox.right - border");
shouldBe("option3BoundingBox.bottom", "option3BoundingBox.top + option3BoundingBox.height");
shouldBe("option3BoundingBox.width", "listBoundingBox.width - 2 * border");
if (window.testRunner) {
var area = document.getElementById('testArea');
area.parentNode.removeChild(area);
}
</script>
<script src="../../../resources/js-test-post.js"></script>