blob: a7b0f42fb69109644a35d939c1e9339db57d741c [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../editing.js"></script>
<script src="../../resources/js-test.js"></script>
<script src="../../resources/ui-helper.js"></script>
</head>
<body>
<textarea id="test"></textarea>
<script>
description("The test verifies if the spelling markers remain if whitespace "
+ "is added before or after the misspelled word or the caret is moved. "
+ "The test succeeds if the word 'meagesga' has a red underline.");
jsTestIsAsync = true;
if (window.internals) {
if (UIHelper.isIOSFamily() || !UIHelper.isWebKit2())
internals.setContinuousSpellCheckingEnabled(true);
else {
internals.settings.setUnifiedTextCheckerEnabled(true);
internals.settings.setAsynchronousSpellCheckingEnabled(true);
}
}
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 checkSpellingMarker(testCase)
{
await resetText();
debug(`<br>Test: ${testCase.testName}:`);
testCase.run();
if (window.internals)
shouldBecomeEqual(`internals.hasSpellingMarker(${testCase.expectedMisspelledWordStartPosition}, 8)`, "true", () => runNextTest());
else
runNextTest();
}
var testCases = [
{
testName: "Has misspelled word",
run: () => { /* Do nothing */ },
expectedMisspelledWordStartPosition: 7,
},
{
testName: "Insert space before misspelled word",
run: () => {
evalAndLog("test.setSelectionRange(7, 7)");
evalAndLog("typeCharacterCommand(' ')");
},
expectedMisspelledWordStartPosition: 8,
},
{
testName: "Insert space after misspelled word",
run: () => {
evalAndLog("test.setSelectionRange(15, 15)");
evalAndLog("typeCharacterCommand(' ')");
},
expectedMisspelledWordStartPosition: 7,
},
{
testName: "Move caret",
run: () => {
evalAndLog("execMoveSelectionBackwardByCharacterCommand()");
},
expectedMisspelledWordStartPosition: 7,
}
];
function runNextTest()
{
let testCase = testCases.shift();
if (testCase) {
setTimeout(() => checkSpellingMarker(testCase), 0);
return;
}
finishJSTest();
}
runNextTest();
</script>
</body>
</html>