<!DOCTYPE html>
<html>
<body>
<p>This tests WebKit preserves non-directional selection after unapplying replacement on Mac. To manually test on Mac,</p>
<ol>
<li>Select "world" by double-clicking the word</li>
<li>Replace "world" by a character by pressing a key</li>
<li>Undo</li>
<li>Extend selection to the left</li>
</ol>
<p>" world" should be selected.</p>
<div contenteditable>hello wo<span id="target">r</span>ld WebKit</div>
<script>

if (window.testRunner && window.internals) {
    testRunner.dumpAsText();

    if (!window.eventSender)
        document.writeln('FAIL - this test requires eventSender');
    else {
        internals.settings.setEditingBehavior('mac');

        var test = document.getElementById('target');
        eventSender.mouseMoveTo(target.offsetLeft + target.offsetWidth / 2, target.offsetTop + target.offsetHeight / 2);
        eventSender.mouseDown();
        eventSender.mouseUp();

        eventSender.leapForward(200);

        eventSender.mouseDown();
        eventSender.mouseUp();

        document.execCommand('InsertText', false, 'a');
        document.execCommand('Undo');
        window.getSelection().modify('extend', 'left', 'character');

        var actual = window.getSelection().toString();
        // Windows has a trailing whitespace, other platforms don't.
        document.writeln((actual == ' world' || actual == ' world ') ? 'PASS' : 'FAIL - expected " world" but got "' + actual + '"');
    }
}

</script>
</body>
</html>
