<!DOCTYPE html>
<html>
<head>
<script src="../editing.js"></script>
<script src="../../resources/ui-helper.js"></script>
<title>Editing word with marker test 1</title>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

if (window.internals) {
    if (UIHelper.isIOSFamily() || !UIHelper.isWebKit2())
        internals.setContinuousSpellCheckingEnabled(true);
    else {
        internals.settings.setUnifiedTextCheckerEnabled(true);
        internals.settings.setAsynchronousSpellCheckingEnabled(true);
    }
}
</script>
</head>
<body>
<p>The test verified that when a word is modified, its spelling markers are removed.
When manually testing, type "it's a meagesga", then edit the word "meagesga". You should see the 
underline under the modified "meagesga" disppears after editing.</p>
<textarea id="test" cols="80" rows="10"></textarea>
<div id="console"></div>
<script>
let textarea = document.getElementById("test");

async function resetText()
{
    textarea.blur();
    if (window.testRunner)
        await UIHelper.activateElementAndWaitForInputSession(textarea);
    else
        textarea.focus();
    textarea.value = "";
    typeCharacterCommand('i');
    typeCharacterCommand('t');
    typeCharacterCommand('\'');
    typeCharacterCommand('s');
    typeCharacterCommand(' ');
    typeCharacterCommand('a');
    typeCharacterCommand(' ');
    typeCharacterCommand('m');
    typeCharacterCommand('e');
    typeCharacterCommand('a');
    typeCharacterCommand('g');
    typeCharacterCommand('e');
    typeCharacterCommand('s');
    typeCharacterCommand('g');
    typeCharacterCommand('a');
    typeCharacterCommand(' ');
}

async function runTest()
{
    await resetText();
    textarea.setSelectionRange(14, 15);
    execDeleteCommand();
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(7, 7))
            document.getElementById('console').innerHTML = 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML = "FAILURE. The word 'meagesg' has underline.<br>";
    }

    // Testing deletion at various location.
    await resetText();
    textarea.setSelectionRange(6, 6);
    execForwardDeleteCommand();
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(6, 8))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The word 'ameagesga' has underline.<br>";
    }

    await resetText();
    textarea.setSelectionRange(7, 7);
    execForwardDeleteCommand();
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(7, 7))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The word 'eagesga' has underline.<br>";
    }

    await resetText();
    textarea.setSelectionRange(10, 10);
    typeCharacterCommand(' ');
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(7, 3) && !window.internals.hasSpellingMarker(11, 5))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The segment 'mea gesga' has underline.<br>";
    }

    await resetText();
    textarea.setSelectionRange(10, 13);
    execDeleteCommand();
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(7, 5))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The word 'meaga' has underline.<br>";
    }

    await resetText();
    textarea.setSelectionRange(10, 13);
    typeCharacterCommand(' ');
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(7, 3) && !window.internals.hasSpellingMarker(11, 2))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The segment 'mea ga' has underline.<br>";
    }

    // Testing appending non-whitespace character.
    await resetText();
    textarea.setSelectionRange(7, 7);
    typeCharacterCommand('a');
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(8, 8))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The word 'ameagesga' has underline.<br>";
    }

    await resetText();
    textarea.setSelectionRange(15, 15);
    typeCharacterCommand('a');
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(7,8))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The word 'meagesgaa' has underline.<br>";
    }

    // Testing pasting.
    await resetText();
    textarea = document.getElementById('test');
    textarea.setSelectionRange(0, 4);
    execCopyCommand();
    textarea.setSelectionRange(7, 7);
    execPasteCommand();
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(11, 8))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The word 'meagesga' has underline.<br>";
    }

    await resetText();
    textarea = document.getElementById('test');
    textarea.setSelectionRange(0, 4);
    execCopyCommand();
    textarea.setSelectionRange(15, 15);
    if (window.internals)
        internals.updateEditorUINowIfScheduled();
    execPasteCommand();
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(7, 8))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The word 'meagesga' has underline.<br>";
    }

    await resetText();
    textarea = document.getElementById('test');
    textarea.setSelectionRange(0, 4);
    execCopyCommand();
    textarea.setSelectionRange(10, 10);
    execPasteCommand();
    if (window.internals && window.internals.hasSpellingMarker) {
        if (!window.internals.hasSpellingMarker(7, 3) && !window.internals.hasSpellingMarker(15, 5))
            document.getElementById('console').innerHTML += 'SUCCESS<br>';
        else
            document.getElementById('console').innerHTML += "FAILURE. The word 'meait\'sgesga' has underline.<br>";
    }

    if (window.testRunner)
        testRunner.notifyDone();
}

runTest();
</script>
</body>
</html>
