blob: da07302865160c5a7802bcf45123f2bebcf2cb66 [file] [log] [blame]
<!doctype html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script src="spellcheck_test.js"></script>
<script>
function runIdleTimeSpellCheckerIfNeeded(document) {
if (!window.internals || !internals.runtimeFlags.idleSpellCheckCallbackEnabled)
return;
internals.runIdleTimeSpellChecker(document);
}
function pasteToAllChildren(text, container) {
const document = container.ownerDocument;
const selection = document.getSelection();
selection.setClipboardData(text);
container.childNodes.forEach(child => {
if (child.nodeName === 'DIV') {
selection.selectAllChildren(child);
} else {
child.value = '';
child.focus();
}
document.execCommand('paste');
});
}
spellcheck_test(
[
'<div id="container">',
'<textarea></textarea>',
'<div contenteditable></div>',
'<input>',
'</div>'
].join(''),
document => {
const container = document.getElementById('container');
pasteToAllChildren('foo bar', container);
runIdleTimeSpellCheckerIfNeeded(document);
pasteToAllChildren('zz apple orange', container);
},
[
'<div id="container">',
'<textarea>#zz# apple orange</textarea>',
'<div contenteditable>#zz# apple orange</div>',
'<input value="#zz# apple orange">',
'</div>'
].join(''),
'Spellchecker handles multiple requests.');
// Regression test for crbug.com/681760
spellcheck_test(
[
'<textarea id="textarea1"></textarea>',
'<textarea id="textarea2"></textarea>'
].join(''),
document => {
const textarea1 = document.getElementById('textarea1');
const textarea2 = document.getElementById('textarea2');
textarea1.focus();
document.execCommand('insertText', false, 'foo.');
runIdleTimeSpellCheckerIfNeeded(document);
textarea2.focus();
document.execCommand('insertText', false, 'baz.');
runIdleTimeSpellCheckerIfNeeded(document);
textarea1.focus();
document.execCommand('insertText', false, 'zz.');
},
[
'<textarea id="textarea1">#foo#.#zz#.</textarea>',
'<textarea id="textarea2">#baz#.</textarea>'
].join(''),
'Spellchecker invokes requests in sequence order.');
</script>