<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script>

    function removeElement() {
        document.getElementById('div').removeChild(document.getElementById('div').children[2]);
    }

    function queryIsEnabledOnDecendants(accessibilityObject) {
        if (!accessibilityObject)
            return;
        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>
