<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("aSpan").nextSibling == document.getElementById("bottom")
                ? "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" id="top">
            <span id="aSpan">A</span></blockquote><blockquote class="webkit-indent-blockquote" id="bottom">
        <blockquote class="webkit-indent-blockquote" id="third">B</blockquote>
            <span>C</span>
        </blockquote>
    </div>
</body>
</html>
