<!DOCTYPE html>
<html>
<head>
<script type="text/JavaScript">

function runTest() {
    document.execCommand('usecss', null, 'false');

    var div = document.getElementById('a');
    var range = document.createRange();
    var sNode = div.childNodes[0];
    var eNode = div.childNodes[3];
    range.setStart(sNode, NaN);
    range.setEnd(eNode, NaN);
    getSelection().removeAllRanges();
    getSelection().addRange(range);

    document.execCommand('indent', null, true);

    document.body.innerHTML = 'This test ensures WebKit does not crash when intending.<br>PASS';

    testRunner.notifyDone();
}

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

</script>
</head>
<body onload="runTest()"><div contenteditable="" id="a"><div><br><div contenteditable="false"><table></table></div></div><blockquote><input></blockquote><br></br></div></body></html>
