<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin" type="text/css"?> <window title="Add and remove dictionaries test" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="RunTest();"> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> <!-- test results are displayed in the html:body --> <body xmlns="http://www.w3.org/1999/xhtml"> </body> <script type="application/javascript"> <![CDATA[ SimpleTest.waitForExplicitFinish(); function getMisspelledWords(editor) { return editor.selectionController.getSelection(Components.interfaces.nsISelectionController.SELECTION_SPELLCHECK).toString(); } function getDictionaryList(editor) { var spellchecker = editor.getInlineSpellChecker(true).spellChecker; var o1 = {}; spellchecker.GetDictionaryList(o1, {}); return o1.value; } function getCurrentDictionary(editor) { var spellchecker = editor.getInlineSpellChecker(true).spellChecker; return spellchecker.GetCurrentDictionary(); } function setCurrentDictionary(editor, dictionary) { var spellchecker = editor.getInlineSpellChecker(true).spellChecker; spellchecker.SetCurrentDictionary(dictionary); } function RunTest() { var textbox = document.getElementById('textbox'); textbox.focus(); var editor = textbox.editor; var dir = Components.classes["@mozilla.org/file/directory_service;1"]. getService(Components.interfaces.nsIProperties). get("CurWorkD", Components.interfaces.nsIFile); dir.append("chrome"); dir.append("extensions"); dir.append("spellcheck"); dir.append("tests"); dir.append("chrome"); var hunspell = Components .classes["@mozilla.org/spellchecker/engine;1"] .getService(Components.interfaces.mozISpellCheckingEngine); // install base dictionary var base = dir.clone(); base.append("base"); ok(base.exists()); hunspell.addDirectory(base); // install map dictionary var map = dir.clone(); map.append("map"); ok(map.exists()); hunspell.addDirectory(map); Components.utils.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm"); onSpellCheck(textbox, function () { // 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"); // select base dictionary setCurrentDictionary(editor, "base-utf"); 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"); // select map dictionary setCurrentDictionary(editor, "maputf"); // Focus again, so the spelling gets updated. textbox.blur(); textbox.focus(); onSpellCheck(textbox, function () { // test that map dictionary is in use is(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings (1)"); is(getCurrentDictionary(editor), "maputf", "current dictionary"); // uninstall map dictionary hunspell.removeDirectory(map); // Focus again, so the spelling gets updated. textbox.blur(); textbox.focus(); onSpellCheck(textbox, function () { // test that map dictionary is not in use isnot(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings (2)"); isnot(getCurrentDictionary(editor), "maputf", "current dictionary"); // 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"); // uninstall base dictionary hunspell.removeDirectory(base); onSpellCheck(textbox, function () { SimpleTest.finish(); }); }); }); }); }); } ]]> </script> <textbox id="textbox" spellcheck="true" value="created imply Frühstück tomorrow qwertyu"/> </window>