<html> 
<head>

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

<script>

function sendDeleteWordKey()
{
    var deleteWordModifiers;
    if (navigator.userAgent.search(/\bMac OS X\b/) != -1)
        deleteWordModifiers = ["altKey"];
    else
        deleteWordModifiers = ["ctrlKey"];
    if (window.eventSender)
        eventSender.keyDown(String.fromCharCode(8), deleteWordModifiers);
}

function editingTest()
{
    moveSelectionForwardByWordCommand();
    moveSelectionForwardByWordCommand();
    typeCharacterCommand(' ');
    typeCharacterCommand('a');
    typeCharacterCommand('b');
    typeCharacterCommand('c');
    sendDeleteWordKey();
    typeCharacterCommand('c');
    typeCharacterCommand('h');
    typeCharacterCommand('a');
}

</script>

<title>Editing Test</title> 
</head> 
<body>

<div class="explanation">
<div class="scenario">
Tests: 
<br>
Option-delete when a typing command is open.
</div>
<div class="expected-results">
Expected Results:
<br>
Net result is a third "cha". It should like this:
<BR>
one two cha cha cha three four cha cha cha
</div>
</div>

<div contenteditable id="root" style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space;">
<div id="test" class="editing">
one two cha cha three four cha cha cha
</div>
</div>

<script>
runEditingTest();
</script>

</body>
</html>
