<head>
<script>
function runTest() {
    if (window.testRunner)
        window.testRunner.dumpAsText();
    start = document.getElementById("start");
    end = document.getElementById("end");
    window.getSelection().setBaseAndExtent(start, 0, end, 0);
    document.execCommand("Indent");
}
</script>
</head>
<body onLoad="runTest();" contenteditable="true" style="text-align: justify">
    <div id="description">This tests for a crash when indenting a particular selection that contains a block nested in an inline element that contains an hr.  It should not crash.</div>
    <blockquote id="start" class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
        <h5>
            <span class="Apple-style-span" style="font-size: 16px;">
                <hr style="text-align: right;">
                <div style="text-align: right;">
                    <br>
                </div>
            </span>
        </h5>
    </blockquote>
    <div id="end">
        <br>
    </div>
</body>
