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