/* 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");
Components.utils.import("resource://gre/modules/Services.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
  Services.locale.setRequestedLocales(["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"]);

}
