diff --git a/browser/base/content/test/test_contextmenu.html b/browser/base/content/test/test_contextmenu.html index 080a3edc143..79a8c38a9ae 100644 --- a/browser/base/content/test/test_contextmenu.html +++ b/browser/base/content/test/test_contextmenu.html @@ -21,10 +21,11 @@ Browser context menu tests. /** Test for Login Manager: multiple login autocomplete. **/ SpecialPowers.Cu.import("resource://gre/modules/InlineSpellChecker.jsm", window); +SpecialPowers.Cu.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm", window); const Ci = SpecialPowers.Ci; -function openContextMenuFor(element, shiftkey, shouldWaitForFocus) { +function openContextMenuFor(element, shiftkey, waitForSpellCheck) { // Context menu should be closed before we open it again. is(SpecialPowers.wrap(contextMenu).state, "closed", "checking if popup is closed"); @@ -39,8 +40,9 @@ function openContextMenuFor(element, shiftkey, shouldWaitForFocus) { var eventDetails = { type : "contextmenu", button : 2, shiftKey : shiftkey }; synthesizeMouse(element, 2, 2, eventDetails, element.ownerDocument.defaultView); } - if (shouldWaitForFocus) - SimpleTest.executeSoon(actuallyOpenContextMenuFor); + + if (waitForSpellCheck) + onSpellCheck(element, actuallyOpenContextMenuFor); else actuallyOpenContextMenuFor(); } @@ -608,7 +610,7 @@ function runTest(testNum) { ].concat(inspectItems)); contextMenu.ownerDocument.getElementById("spell-undo-add-to-dictionary").doCommand(); // Undo add to dictionary closeContextMenu(); - openContextMenuFor(contenteditable); + openContextMenuFor(contenteditable, false, true); break; case 18: @@ -633,7 +635,7 @@ function runTest(testNum) { ].concat(inspectItems)); closeContextMenu(); - openContextMenuFor(inputspell); // Invoke context menu for next test. + openContextMenuFor(inputspell, false, true); // Invoke context menu for next test. break; case 19: diff --git a/editor/composer/test/test_bug338427.html b/editor/composer/test/test_bug338427.html index f31ef23f04f..f4e978ede1d 100644 --- a/editor/composer/test/test_bug338427.html +++ b/editor/composer/test/test_bug338427.html @@ -20,28 +20,31 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=338427 /** Test for Bug 338427 **/ function init() { + Components.utils.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm"); + var textarea = document.getElementById("editor"); var editor = textarea.editor; var spellchecker = editor.getInlineSpellChecker(true); spellchecker.enableRealTimeSpell = true; - - var list = {}, count = {}; - spellchecker.spellChecker.GetDictionaryList(list, count); - if (count.value === 0) { - return; // no dictionary, no test possible - } - var lang = list.value[0]; - spellchecker.spellChecker.SetCurrentDictionary(lang); - - textarea.addEventListener("focus", function() { - var dictionary = ""; - try { - dictionary = spellchecker.spellChecker.GetCurrentDictionary(); - } catch(e) {} - is(dictionary, lang, "Unexpected spell check dictionary"); - SimpleTest.finish(); - }, false); textarea.focus(); + + onSpellCheck(textarea, function () { + var list = {}, count = {}; + spellchecker.spellChecker.GetDictionaryList(list, count); + ok(count.value > 0, "At least one dictionary should be present"); + + var lang = list.value[0]; + spellchecker.spellChecker.SetCurrentDictionary(lang); + + onSpellCheck(textarea, function () { + try { + var dictionary = + spellchecker.spellChecker.GetCurrentDictionary(); + } catch(e) {} + is(dictionary, lang, "Unexpected spell check dictionary"); + SimpleTest.finish(); + }); + }); } SimpleTest.waitForExplicitFinish(); diff --git a/editor/composer/test/test_bug678842.html b/editor/composer/test/test_bug678842.html index 778e12551cc..17b051a9ca1 100644 --- a/editor/composer/test/test_bug678842.html +++ b/editor/composer/test/test_bug678842.html @@ -27,30 +27,33 @@ var content = document.getElementById('content'); var firstLoad = true; var loadListener = function(evt) { + Components.utils.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm"); var doc = evt.target.contentDocument; var elem = doc.getElementById('textarea'); var editor = elem.QueryInterface(Components.interfaces.nsIDOMNSEditableElement).editor; editor.setSpellcheckUserOverride(true); var inlineSpellChecker = editor.getInlineSpellChecker(true); - var spellchecker = inlineSpellChecker.spellChecker; - var currentDictonary = ""; - try { - currentDictonary = spellchecker.GetCurrentDictionary(); - } catch(e) {} - if (!currentDictonary) { - spellchecker.SetCurrentDictionary('en-US'); - } + onSpellCheck(elem, function () { + var spellchecker = inlineSpellChecker.spellChecker; + try { + var currentDictonary = spellchecker.GetCurrentDictionary(); + } catch(e) {} - if (firstLoad) { - firstLoad = false; - is (currentDictonary, "", "unexpected lang " + currentDictonary); - content.src = 'http://mochi.test:8888/tests/editor/composer/test/bug678842_subframe.html?firstload=false'; - } else { - is (currentDictonary, "en-US", "unexpected lang " + currentDictonary + " instead of en-US"); - content.removeEventListener('load', loadListener, false); - SimpleTest.finish(); - } + if (!currentDictonary) { + spellchecker.SetCurrentDictionary('en-US'); + } + + if (firstLoad) { + firstLoad = false; + is (currentDictonary, "", "unexpected lang " + currentDictonary); + content.src = 'http://mochi.test:8888/tests/editor/composer/test/bug678842_subframe.html?firstload=false'; + } else { + is (currentDictonary, "en-US", "unexpected lang " + currentDictonary + " instead of en-US"); + content.removeEventListener('load', loadListener, false); + SimpleTest.finish(); + } + }); } content.addEventListener('load', loadListener, false); diff --git a/editor/libeditor/html/tests/test_bug366682.html b/editor/libeditor/html/tests/test_bug366682.html index 04cb242a3d4..ce7491e8a8f 100644 --- a/editor/libeditor/html/tests/test_bug366682.html +++ b/editor/libeditor/html/tests/test_bug366682.html @@ -48,7 +48,9 @@ function runTest() { editDoc().body.innerHTML = "
errror and an other errror
"; gMisspeltWords = ["errror", "errror"]; editDoc().designMode = "on"; - setTimeout(function() { evalTest(); }, 0); + + Components.utils.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm"); + onSpellCheck(editDoc().documentElement, evalTest); } function evalTest() { diff --git a/editor/libeditor/html/tests/test_bug484181.html b/editor/libeditor/html/tests/test_bug484181.html index 6ad59518cfd..c188fd0527a 100644 --- a/editor/libeditor/html/tests/test_bug484181.html +++ b/editor/libeditor/html/tests/test_bug484181.html @@ -59,17 +59,19 @@ function runTest() { gMisspeltWords = ["haz", "cheezburger"]; var edit = document.getElementById("edit"); edit.focus(); - SimpleTest.executeSoon(function() { - is(isSpellingCheckOk(), true, "All misspellings before editing are accounted for."); - append(" becaz I'm a lolcat!"); - SimpleTest.executeSoon(function() { + SpecialPowers.Cu.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm", window); + onSpellCheck(edit, function () { + is(isSpellingCheckOk(), true, "All misspellings before editing are accounted for."); + + append(" becaz I'm a lolcat!"); + onSpellCheck(edit, function () { gMisspeltWords.push("becaz"); gMisspeltWords.push("lolcat"); is(isSpellingCheckOk(), true, "All misspellings after typing are accounted for."); SimpleTest.finish(); - }); + }); }); } diff --git a/editor/libeditor/text/tests/test_bug596333.html b/editor/libeditor/text/tests/test_bug596333.html index 8b083359780..8f6b26bdb84 100644 --- a/editor/libeditor/text/tests/test_bug596333.html +++ b/editor/libeditor/text/tests/test_bug596333.html @@ -22,7 +22,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=596333 const Ci = SpecialPowers.Ci; SimpleTest.waitForExplicitFinish(); -addLoadEvent(function() SimpleTest.executeSoon(runTest)); +addLoadEvent(runTest); var gMisspeltWords; @@ -71,42 +71,39 @@ function paste(str) { function runOnFocus() { var edit = document.getElementById("edit"); - edit.removeEventListener("focus", runOnFocus, false); - - SimpleTest.executeSoon(function() { - gMisspeltWords = ["haz", "cheezburger"]; - is(isSpellingCheckOk(), true, "All misspellings before editing are accounted for."); - append(" becaz I'm a lolcat!"); - SimpleTest.executeSoon(function() { - gMisspeltWords.push("becaz"); - gMisspeltWords.push("lolcat"); - is(isSpellingCheckOk(), true, "All misspellings after typing are accounted for."); - // Now, type an invalid word, and instead of hitting "space" at the end, just blur - // the textarea and see if the spell check after the blur event catches it. - append(" workd"); - edit.blur(); - SimpleTest.executeSoon(function() { - gMisspeltWords.push("workd"); - is(isSpellingCheckOk(), true, "All misspellings after blur are accounted for."); + gMisspeltWords = ["haz", "cheezburger"]; + is(isSpellingCheckOk(), true, "All misspellings before editing are accounted for."); + append(" becaz I'm a lolcat!"); + onSpellCheck(edit, function () { + gMisspeltWords.push("becaz"); + gMisspeltWords.push("lolcat"); + is(isSpellingCheckOk(), true, "All misspellings after typing are accounted for."); - // Also, test the case when we're entering the first word in a textarea + // Now, type an invalid word, and instead of hitting "space" at the end, just blur + // the textarea and see if the spell check after the blur event catches it. + append(" workd"); + edit.blur(); + onSpellCheck(edit, function () { + gMisspeltWords.push("workd"); + is(isSpellingCheckOk(), true, "All misspellings after blur are accounted for."); + + // Also, test the case when we're entering the first word in a textarea + gMisspeltWords = ["workd"]; + edit.value = ""; + append("workd "); + onSpellCheck(edit, function () { + is(isSpellingCheckOk(), true, "Misspelling in the first entered word is accounted for."); + + // Make sure that pasting would also trigger spell checking for the previous word gMisspeltWords = ["workd"]; edit.value = ""; - append("workd "); - SimpleTest.executeSoon(function() { - is(isSpellingCheckOk(), true, "Misspelling in the first entered word is accounted for."); + append("workd"); + paste(" x"); + onSpellCheck(edit, function () { + is(isSpellingCheckOk(), true, "Misspelling is accounted for after pasting."); - // Make sure that pasting would also trigger spell checking for the previous word - gMisspeltWords = ["workd"]; - edit.value = ""; - append("workd"); - paste(" x"); - SimpleTest.executeSoon(function() { - is(isSpellingCheckOk(), true, "Misspelling is accounted for after pasting."); - - SimpleTest.finish(); - }); + SimpleTest.finish(); }); }); }); @@ -116,8 +113,10 @@ function runOnFocus() { function runTest() { var edit = document.getElementById("edit"); - edit.addEventListener("focus", runOnFocus, false); edit.focus(); + + SpecialPowers.Cu.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm", window); + onSpellCheck(edit, runOnFocus); } function isSpellingCheckOk() { diff --git a/editor/libeditor/text/tests/test_bug636465.xul b/editor/libeditor/text/tests/test_bug636465.xul index ebb44dd90b7..ceaf37bd775 100644 --- a/editor/libeditor/text/tests/test_bug636465.xul +++ b/editor/libeditor/text/tests/test_bug636465.xul @@ -30,42 +30,31 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=636465 SimpleTest.waitForExplicitFinish(); function runTest() { + Components.utils.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm"); var x = document.getElementById("x"); x.focus(); - setTimeout(function(){ + onSpellCheck(x, function () { x.blur(); - setTimeout(function(){ - var spellCheckTrue = snapshotWindow(window); - x.setAttribute("spellcheck", "false"); - setTimeout(function(){ - setTimeout(function(){ - var spellCheckFalse = snapshotWindow(window); - x.setAttribute("spellcheck", "true"); - x.focus(); - setTimeout(function(){ - x.blur(); - setTimeout(function(){ - var spellCheckTrueAgain = snapshotWindow(window); - x.removeAttribute("spellcheck"); - setTimeout(function(){ - setTimeout(function(){ - var spellCheckNone = snapshotWindow(window); - var after = snapshotWindow(window); - ok(compareSnapshots(spellCheckTrue, spellCheckFalse, false)[0], - "Setting the spellcheck attribute to false should work"); - ok(compareSnapshots(spellCheckTrue, spellCheckTrueAgain, true)[0], - "Setting the spellcheck attribute back to true should work"); - ok(compareSnapshots(spellCheckNone, spellCheckFalse, true)[0], - "Unsetting the spellcheck attribute should work"); - SimpleTest.finish(); - },0); - },0); - },0); - },0); - },0); - },0); - },0); - },0); + var spellCheckTrue = snapshotWindow(window); + x.setAttribute("spellcheck", "false"); + var spellCheckFalse = snapshotWindow(window); + x.setAttribute("spellcheck", "true"); + x.focus(); + onSpellCheck(x, function () { + x.blur(); + var spellCheckTrueAgain = snapshotWindow(window); + x.removeAttribute("spellcheck"); + var spellCheckNone = snapshotWindow(window); + var after = snapshotWindow(window); + ok(compareSnapshots(spellCheckTrue, spellCheckFalse, false)[0], + "Setting the spellcheck attribute to false should work"); + ok(compareSnapshots(spellCheckTrue, spellCheckTrueAgain, true)[0], + "Setting the spellcheck attribute back to true should work"); + ok(compareSnapshots(spellCheckNone, spellCheckFalse, true)[0], + "Unsetting the spellcheck attribute should work"); + SimpleTest.finish(); + }); + }); } ]]> diff --git a/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul b/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul index 6f28acd21b3..ff38b9c777d 100644 --- a/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul +++ b/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul @@ -64,44 +64,50 @@ function RunTest() { ok(map.exists()); hunspell.addDirectory(map); - // test that base and map dictionaries are available - var dicts = getDictionaryList(editor); - isnot(dicts.indexOf("base_utf"), -1, "base is available"); - isnot(dicts.indexOf("maputf"), -1, "map is available"); + Components.utils.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm"); + onSpellCheck(textbox, function () { - // select base dictionary - setCurrentDictionary(editor, "base_utf"); + // test that base and map dictionaries are available + var dicts = getDictionaryList(editor); + isnot(dicts.indexOf("base_utf"), -1, "base is available"); + isnot(dicts.indexOf("maputf"), -1, "map is available"); - SimpleTest.executeSoon(function() { - // test that base dictionary is in use - is(getMisspelledWords(editor), "Frühstück" + "qwertyu", "base misspellings"); - is(getCurrentDictionary(editor), "base_utf", "current dictionary"); + // select base dictionary + setCurrentDictionary(editor, "base_utf"); - // select map dictionary - setCurrentDictionary(editor, "maputf"); + onSpellCheck(textbox, function () { + // test that base dictionary is in use + is(getMisspelledWords(editor), "Frühstück" + "qwertyu", "base misspellings"); + is(getCurrentDictionary(editor), "base_utf", "current dictionary"); - SimpleTest.executeSoon(function() { - // test that map dictionary is in use - is(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings"); - is(getCurrentDictionary(editor), "maputf", "current dictionary"); + // select map dictionary + setCurrentDictionary(editor, "maputf"); - // uninstall map dictionary - hunspell.removeDirectory(map); + onSpellCheck(textbox, function () { + // test that map dictionary is in use + is(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings"); + is(getCurrentDictionary(editor), "maputf", "current dictionary"); - SimpleTest.executeSoon(function() { - // test that map dictionary is not in use - isnot(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings"); - isnot(getCurrentDictionary(editor), "maputf", "current dictionary"); + // uninstall map dictionary + hunspell.removeDirectory(map); - // test that base dictionary is available and map dictionary is unavailable - var dicts = getDictionaryList(editor); - isnot(dicts.indexOf("base_utf"), -1, "base is available"); - is(dicts.indexOf("maputf"), -1, "map is unavailable"); + onSpellCheck(textbox, function () { + // test that map dictionary is not in use + isnot(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings"); + isnot(getCurrentDictionary(editor), "maputf", "current dictionary"); - // uninstall base dictionary - hunspell.removeDirectory(base); + // test that base dictionary is available and map dictionary is unavailable + var dicts = getDictionaryList(editor); + isnot(dicts.indexOf("base_utf"), -1, "base is available"); + is(dicts.indexOf("maputf"), -1, "map is unavailable"); - SimpleTest.finish(); + // uninstall base dictionary + hunspell.removeDirectory(base); + + onSpellCheck(textbox, function () { + SimpleTest.finish(); + }); + }); }); }); }); diff --git a/toolkit/content/tests/chrome/test_textbox_dictionary.xul b/toolkit/content/tests/chrome/test_textbox_dictionary.xul index 4574df02b4a..8e69dd15e32 100644 --- a/toolkit/content/tests/chrome/test_textbox_dictionary.xul +++ b/toolkit/content/tests/chrome/test_textbox_dictionary.xul @@ -40,7 +40,10 @@ function startTests() textbox.focus(); testNum = 0; - SimpleTest.executeSoon( function() { bringUpContextMenu(textbox); }); + Components.utils.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm"); + onSpellCheck(textbox, function () { + bringUpContextMenu(textbox); + }); } function runContextMenuTest() @@ -65,7 +68,9 @@ function runContextMenuTest() contextMenu.hidePopup(); testNum++; - SimpleTest.executeSoon( function() {bringUpContextMenu(textbox); }); // Bring up the menu again to invoke the next test + onSpellCheck(textbox, function () { + bringUpContextMenu(textbox); + }); break; case 1: // "Undo Add to Dictionary" button @@ -78,7 +83,9 @@ function runContextMenuTest() undoAddDict.doCommand(); contextMenu.hidePopup(); - SimpleTest.finish(); + onSpellCheck(textbox, function () { + SimpleTest.finish(); + }); break; } });