blob: bb0b7f455f17373f67c367d621a7b58d60bca047 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
.editing {
border: 2px solid red;
padding: 12px;
font-size: 24px;
}
</style>
<script src="../editing.js" language="JavaScript" type="text/JavaScript" ></script>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<div id="container"></div>
<script>
description("Tests spelling and grammar markers for misspellings.");
jsTestIsAsync = true;
if (window.internals)
internals.settings.setUnifiedTextCheckerEnabled(true);
function createEditableElement(parent) {
var e = document.createElement('div');
e.setAttribute("contentEditable", "true");
e.className = 'editing';
parent.appendChild(e);
return e;
}
function typeText(elem, text) {
elem.focus();
for (var i = 0; i < text.length; ++i)
typeCharacterCommand(text[i]);
}
var container = document.getElementById('container');
var elementWithGrammarIssue = createEditableElement(container);
typeText(elementWithGrammarIssue, 'I have a issue.');
var elementWithSpellingIssue = createEditableElement(container);
typeText(elementWithSpellingIssue, 'zz.');
var elementWithGrammarAndSpellingIssue = createEditableElement(container);
typeText(elementWithGrammarAndSpellingIssue, 'orange,zz,apple.');
var element;
var next;
function verifyMarkers(e, misspellings) {
if (!window.internals)
return done();
var n = misspellings.shift();
element = e;
next = n;
if (next) {
shouldBecomeEqual('internals.markerCountForNode(element.firstChild, next.marker)', '1', function() {
range = internals.markerRangeForNode(element.firstChild, next.marker, 0);
shouldBe('range.toString()', 'next.issue');
verifyMarkers(element, misspellings);
});
} else
done();
}
var misspellings = [
{ marker:'grammar', issue:'a' },
{ marker:'spelling', issue:'zz' },
{ marker:'grammar', issue:'orange,zz,apple.' }
];
var tests = [
function() { verifyMarkers(elementWithGrammarIssue, misspellings.slice(0, 1)) },
function() { verifyMarkers(elementWithSpellingIssue, misspellings.slice(1, 2)) },
function() { verifyMarkers(elementWithGrammarAndSpellingIssue, misspellings.slice(1, 3)) },
];
function done()
{
var next = tests.shift();
if (next)
return window.setTimeout(next, 0);
finishJSTest();
}
done();
</script>
</body>
</html>