<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body id="body">

<div tabindex=0 id="region" title="region">
<select size=20>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
<option>test option that spans the width of the cell. test option that spans the width of the cell</option>
</select>
</div>

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

<script>

    description("This tests that hit testing works on a listbox.");

    if (window.accessibilityController) {

          document.getElementById("region").focus();
          var region = accessibilityController.focusedElement;
          
          var element = accessibilityController.elementAtPoint(region.x + region.width/2, region.y + region.height/2);
          shouldBe("element.role", "'AXRole: AXStaticText'");
          shouldBe("element.stringValue", "'AXValue: test option that spans the width of the cell. test option that spans the width of the cell'");
          shouldBe("element.parentElement().role", "'AXRole: AXList'");
    }

</script>

<script src="../../resources/js-test-post.js"></script>
</body>
</html>
