<div id="outerdiv" contenteditable="true">
    <div>There should be a single H1 block with a single BR below.</div>
    <div id="div"><br></div>
    <div id="div">There should be a single H1 block with a single BR above.</div>
</div>
<p id="console"></p>

<script>

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

function log(message) {
    var console = document.getElementById("console");
    var text = document.createTextNode(message);
    console.appendChild(text);
}

div = document.getElementById("div");
window.getSelection().setPosition(div, 0);
document.execCommand("FormatBlock", false, "h1");

log(document.getElementById('outerdiv').innerHTML);

</script>
