diff options
Diffstat (limited to 'chrome/test/unit/test_bug848297.js')
-rw-r--r-- | chrome/test/unit/test_bug848297.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/chrome/test/unit/test_bug848297.js b/chrome/test/unit/test_bug848297.js new file mode 100644 index 000000000..0875370f7 --- /dev/null +++ b/chrome/test/unit/test_bug848297.js @@ -0,0 +1,48 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +var MANIFESTS = [ + do_get_file("data/test_bug848297.manifest") +]; + +// Stub in the locale service so we can control what gets returned as the OS locale setting +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + +registerManifests(MANIFESTS); + +var chromeReg = Cc["@mozilla.org/chrome/chrome-registry;1"] + .getService(Ci.nsIXULChromeRegistry) + .QueryInterface(Ci.nsIToolkitChromeRegistry); +chromeReg.checkForNewChrome(); + +var prefService = Cc["@mozilla.org/preferences-service;1"] + .getService(Ci.nsIPrefService) + .QueryInterface(Ci.nsIPrefBranch); + +function enum_to_array(strings) { + let rv = []; + while (strings.hasMore()) { + rv.push(strings.getNext()); + } + rv.sort(); + return rv; +} + +function run_test() { + + // without override + prefService.setCharPref("general.useragent.locale", "de"); + do_check_eq(chromeReg.getSelectedLocale("basepack"), "en-US"); + do_check_eq(chromeReg.getSelectedLocale("overpack"), "de"); + do_check_matches(enum_to_array(chromeReg.getLocalesForPackage("basepack")), + ['en-US', 'fr']); + + // with override + prefService.setCharPref("chrome.override_package.basepack", "overpack"); + do_check_eq(chromeReg.getSelectedLocale("basepack"), "de"); + do_check_matches(enum_to_array(chromeReg.getLocalesForPackage("basepack")), + ['de', 'en-US']); + +} |