<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script>
function test()
{
  description("This tests that selecting an option in an ARIA listbox doesn't crash.");
  jsTestIsAsync = true;

  if (window.testRunner) {
    // We focus on the body and get the associated accessibility
    // object to force the creation of the accessibility hierarchy.
    if (window.accessibilityController)
      document.getElementById("body").focus();
      accessibilityController.focusedElement;
    }

   // Get references to the list and the items, and change selection.
   list = document.getElementById('list');
   preSelectedItem = document.getElementById('list_item_1');
   targetItem = document.getElementById('list_item_2');

   list.setAttribute('aria-activedescendant', targetItem.id);
   preSelectedItem.setAttribute('aria-selected', false);
   targetItem.setAttribute('aria-selected', true);

   // We need to finish on idle to give room for the crash to happen,
   // since it's supposed to crash because of a notification about the
   // selection changing and so if we notifyDone() now it would be too
   // soon and we would skip such emission, not crashing at all.
   window.setTimeout(finishJSTest, 0);
}
</script>
</head>
<body id="body" onload="test();">
<ul id="list" role="listbox" aria-activedescendant="list_item_1">
  <li id="list_item_1" role="option" aria-selected="false">foo</li>
  <li id="list_item_2" role="option" aria-selected="false">bar</li>
</ul>

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