<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=790475 --> <head> <title>Test for Bug 790475</title> <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=790475">Mozilla Bug 790475</a> <p id="display"></p> <div id="content" style="display: none"></div> <pre id="test"> <script type="application/javascript"> /** * Test for Bug 790475 * * Tests that inline spell checking works properly through adjacent text nodes. */ SimpleTest.waitForExplicitFinish(); addLoadEvent(runTest); var gMisspeltWords; function getEditor() { const Ci = SpecialPowers.Ci; var editingSession = SpecialPowers.wrap(window) .QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIWebNavigation) .QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIEditingSession); return editingSession.getEditorForWindow(window); } function getSpellCheckSelection() { var editor = getEditor(); var selcon = editor.selectionController; return selcon.getSelection(selcon.SELECTION_SPELLCHECK); } function runTest() { gMisspeltWords = []; var edit = document.getElementById("edit"); edit.focus(); SimpleTest.executeSoon(function() { gMisspeltWords = []; is(isSpellingCheckOk(), true, "Should not find any misspellings yet."); var newTextNode = document.createTextNode("ing string"); edit.appendChild(newTextNode); var editor = getEditor(); var sel = editor.selection; sel.collapse(newTextNode, newTextNode.textContent.length); synthesizeKey("!", {}); edit.blur(); SimpleTest.executeSoon(function() { is(isSpellingCheckOk(), true, "Should not have found any misspellings. "); SimpleTest.finish(); }); }); } function isSpellingCheckOk() { var sel = getSpellCheckSelection(); var numWords = sel.rangeCount; is(numWords, gMisspeltWords.length, "Correct number of misspellings and words."); if (numWords != gMisspeltWords.length) return false; for (var i = 0; i < numWords; i++) { var word = sel.getRangeAt(i); is (word, gMisspeltWords[i], "Misspelling is what we think it is."); if (word != gMisspeltWords[i]) return false; } return true; } </script> </pre> <div id="edit" contenteditable="true">This is a test</div> </body> </html>