<html>
<head>
    <script>
        if (window.testRunner)
             testRunner.dumpAsText();

        function test() {
            var selection = window.getSelection();
            selection.selectAllChildren(document.getElementById("contentDiv"));
            document.execCommand("Outdent", false, "");

            console.log(document.getElementById("contentDiv").children.length == 3
                ? "SUCCESS: Nodes stayed in order after outdent."
                : "FAILED: Nodes became out of order after outdent.");
        }
    </script>
</head>
<body onload="test()">
    <div id="description">This test uses the execCommand to Outdent the text below. <b>This test that nodes, with different relationships with blockquotes, stay in the correct order after an outdent.</b></div>
    <br>
    <div contenteditable="true" id="contentDiv">
        <blockquote class="webkit-indent-blockquote" >
            <blockquote class="webkit-indent-blockquote" id="a" >A</blockquote>
            <blockquote class="webkit-indent-blockquote" id="cd">B<br>C</blockquote>
        </blockquote>
    </div>
</body>
</html>
