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

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

            console.log(document.getElementById("contentDiv").firstChild.tagName == "BLOCKQUOTE"
                ? "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">
                <br>A
            </blockquote>
            <br>
            B
        </blockquote>
    </div>
</body>
</html>
