/* 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

registerManifests(MANIFESTS);

var chromeReg = Cc["@mozilla.org/chrome/chrome-registry;1"]
                .getService(Ci.nsIXULChromeRegistry)
                .QueryInterface(Ci.nsIToolkitChromeRegistry);
chromeReg.checkForNewChrome();

function enum_to_array(strings) {
  return Array.from(strings).sort();
}

function run_test() {
  // without override
  Services.locale.requestedLocales = ["de"];
  Assert.equal(chromeReg.getSelectedLocale("basepack"), "en-US");
  Assert.equal(chromeReg.getSelectedLocale("overpack"), "de");
  Assert.deepEqual(enum_to_array(chromeReg.getLocalesForPackage("basepack")),
                   ["en-US", "fr"]);

  // with override
  Services.prefs.setCharPref("chrome.override_package.basepack", "overpack");
  Assert.equal(chromeReg.getSelectedLocale("basepack"), "de");
  Assert.deepEqual(enum_to_array(chromeReg.getLocalesForPackage("basepack")),
                   ["de", "en-US"]);
}
