<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script>

    function removeElement() {
        document.getElementById('div').removeChild(document.getElementById('div').children[2]);
    }

    function queryIsEnabledOnDecendants(accessibilityObject) {
        accessibilityObject.isEnabled

        var count = accessibilityObject.childrenCount;
        for (var i = 0; i < count; ++i)
            queryIsEnabledOnDecendants(accessibilityObject.childAtIndex(i));
    }
</script>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>

<div id="div">
  <span>
    <div>a</div>
  </span>
  <div style="float:left">a</div>
  <span title="title">b</span>
</div>

<p id="description"></p>
<div id="console"></div>

<script>
    description("In certain cases removing a decendent from an anonymous block element does not update the parent chain correctly. This can cause a crash.");

    if (window.accessibilityController) {
        // First build up full accessibility tree.
        document.body.focus();
        queryIsEnabledOnDecendants(accessibilityController.focusedElement);
        
        removeElement()
        
        // Now call isEnabled on each accessibility object.
        document.body.focus();
        queryIsEnabledOnDecendants(accessibilityController.focusedElement);
    }

</script>

<script src="../resources/js-test-post.js"></script>
</body>
</html>
