<html>
<head>
    <link rel="stylesheet" href="../fast/js/resources/js-test-style.css">
    <script src="../fast/js/resources/js-test-pre.js"></script>
</head>

<body id="body">

<select id="selectElement" multiple title="selectElement">
    <option SELECTED>Option 1</option>
    <option>Option 2</option>
    <option DISABLED>Option 3</option>
</select>

<p>This tests that we report the correct selection-related states.</p>

<p id="notDRT">This test should only be run inside of DumpRenderTree.</p>

<p id="console"></p>

<script>
    if (window.layoutTestController && window.accessibilityController) {
        document.getElementById("notDRT").style.visibility = "hidden";

        layoutTestController.dumpAsText();

        document.getElementById("selectElement").focus();

        shouldBeTrue('accessibilityController.focusedElement.isMultiSelectable');
        shouldBeTrue('accessibilityController.focusedElement.childAtIndex(0).isSelectable');
        shouldBeTrue('accessibilityController.focusedElement.childAtIndex(0).isSelected');
        shouldBeTrue('accessibilityController.focusedElement.childAtIndex(1).isSelectable');
        shouldBeFalse('accessibilityController.focusedElement.childAtIndex(1).isSelected');
        shouldBeFalse('accessibilityController.focusedElement.childAtIndex(2).isSelectable');
        shouldBeFalse('accessibilityController.focusedElement.childAtIndex(2).isSelected');
    }
</script>
</body>
</html>
