<html> 
<head>

<style>
.editing { 
    border: 2px solid red; 
    padding: 12px; 
    font-size: 24px; 
}
.explanation { 
    border: 2px solid blue; 
    padding: 12px; 
    font-size: 24px; 
    margin-bottom: 24px;
}
</style>
<script src=../editing.js language="JavaScript" type="text/JavaScript" ></script>

<script>
if (window.internals)
    internals.settings.setEditingBehavior('mac');

function editingTest() {
    extendSelectionForwardByWordCommand();
    extendSelectionForwardByLineCommand();
    extendSelectionForwardByWordCommand();
    for (i = 0; i < 6; i++)
        fontSizeDeltaCommand("+1px");
}

</script>

<title>Editing Test</title> 
</head> 
<body contenteditable="true">
<div class="explanation">
Size check should say: 30px. All text on the first line, and the first two words of the second line, should appear to be 30px.
</div>

<div style="font-size: 24px; margin-bottom: 16px;">Size check: <span id="check"></span></div>

<div id="root" style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space;">
<div id="test" class="editing">There is a tide
<div id="foo" class="editing">
In the affairs of men
</div>
Which taken at the flood
</div>
</div>

<script>
runEditingTest();
test = document.getElementById("test").firstChild;
check = document.getElementById("check");
size = document.defaultView.getComputedStyle(test, "").getPropertyValue("font-size");
check.innerHTML = size;
</script>

</body>
</html>
