<html>
<body>
<div>
This tests indenting "three".  You should see 1, 2, and then a bullet before numbers "two", "three", and "four" respectively.
<ol id="e" contenteditable="true">
<li>one</li>
<ol><li>two</li></ol>
<li id="test">three</li>
<ul><li>four</li></ul>
</ol>
</div>

<ul>
<li>Before:<span id="c1"></span></li>
<li>After:<span id="c2"></span></li>
</ul>

<script type="text/javascript">

if (window.testRunner) {
    testRunner.dumpEditingCallbacks();
    testRunner.dumpAsText();
}

var e = document.getElementById('e');

document.getElementById('c1').appendChild(document.createTextNode(e.innerHTML));

var s = window.getSelection();
var r = document.createRange();
r.selectNode(document.getElementById('test'));
s.removeAllRanges();
s.addRange(r);
document.execCommand("Indent", false, "");

document.getElementById('c2').appendChild(document.createTextNode(e.innerHTML));

</script>
