<!DOCTYPE html>
<html>
<body>
</body>
<script>
function insertHeaderForTest(testContent, expected)
{
    document.body.innerHTML = "<div id='testDiv' contentEditable='true'>foofoo</div>";
    var targetDiv = document.getElementById("testDiv");
    var targetText = targetDiv.firstChild;
    window.getSelection().setPosition(targetText, 3);
    document.execCommand("InsertHTML", false, testContent);
    var actual = targetDiv.innerHTML;
    if (actual == expected)
        return "Success. " + testContent +" was inserted into <div>foo^foo<div> and the result was:" + actual + "\n";
    return "Failure. Result was: " + actual + ", should have been: " + expected + "\n";
}

if (window.testRunner)
    window.testRunner.dumpAsText();

// Test 1: Verify that a header at the beginning of inserted content is preserved.
output = "Test 1: Verify that a header at the beginning of inserted content is preserved.\n";
output += insertHeaderForTest("<h1>bar</h1><div>baz</div>", "foo<h1>bar</h1>bazfoo");
output += insertHeaderForTest("<h2>bar</h2><div>baz</div>", "foo<h2>bar</h2>bazfoo");
output += insertHeaderForTest("<h3>bar</h3><div>baz</div>", "foo<h3>bar</h3>bazfoo");
output += insertHeaderForTest("<h4>bar</h4><div>baz</div>", "foo<h4>bar</h4>bazfoo");
output += insertHeaderForTest("<h5>bar</h5><div>baz</div>", "foo<h5>bar</h5>bazfoo");
output += insertHeaderForTest("<h6>bar</h6><div>baz</div>", "foo<h6>bar</h6>bazfoo");

// Test 2: Verify that a header at the end of inserted content is preserved.
output += "Test 2: Verify that a header at the end of inserted content is preserved.\n";
output += insertHeaderForTest("<div>bar</div><h1>baz</h1>", "foobar<h1>baz</h1>foo");
output += insertHeaderForTest("<div>bar</div><h2>baz</h2>", "foobar<h2>baz</h2>foo");
output += insertHeaderForTest("<div>bar</div><h3>baz</h3>", "foobar<h3>baz</h3>foo");
output += insertHeaderForTest("<div>bar</div><h4>baz</h4>", "foobar<h4>baz</h4>foo");
output += insertHeaderForTest("<div>bar</div><h5>baz</h5>", "foobar<h5>baz</h5>foo");
output += insertHeaderForTest("<div>bar</div><h6>baz</h6>", "foobar<h6>baz</h6>foo");

document.body.innerText = output;
</script>
</html>
