Bug 1337551: Migrate Services.jsm to use LocaleService. r=mossop draft
authorZibi Braniecki <gandalf@mozilla.com>
Wed, 08 Feb 2017 12:31:06 -0800
changeset 493614 2217abbb1371132b82574be690f9fab5c1b64fb7
parent 493227 77d5a39a4677ed8e32a7ed46561c962d807fa7b1
child 547905 701777cd3c19acf774333b3c02914a64e33234fb
push id47813
push userzbraniecki@mozilla.com
push dateSun, 05 Mar 2017 11:22:05 +0000
reviewersmossop
bugs1337551
milestone54.0a1
Bug 1337551: Migrate Services.jsm to use LocaleService. r=mossop MozReview-Commit-ID: G0HFXfg4r6Y
addon-sdk/source/test/test-l10n-locale.js
browser/modules/DirectoryLinksProvider.jsm
toolkit/components/telemetry/TelemetryEnvironment.jsm
toolkit/modules/Locale.jsm
toolkit/modules/Services.jsm
toolkit/modules/tests/xpcshell/test_Services.js
toolkit/mozapps/extensions/AddonManager.jsm
--- a/addon-sdk/source/test/test-l10n-locale.js
+++ b/addon-sdk/source/test/test-l10n-locale.js
@@ -105,18 +105,17 @@ exports.testPreferedContentLocale = func
   prefs.reset(PREF_ACCEPT_LANGUAGES);
 }
 
 exports.testPreferedOsLocale = function(assert) {
   prefs.set(PREF_MATCH_OS_LOCALE, true);
   prefs.set(PREF_SELECTED_LOCALE, "");
   prefs.set(PREF_ACCEPT_LANGUAGES, "");
 
-  let expectedLocale = Services.locale.getLocaleComponentForUserAgent().
-    toLowerCase();
+  let expectedLocale = Services.locale.getAppLocale().toLowerCase();
   let expectedLocaleList = [expectedLocale];
 
   // Add default "en-us" fallback if the main language is not already en-us
   if (expectedLocale != "en-us")
     expectedLocaleList.push("en-us");
 
   assertPrefered(assert, expectedLocaleList, "Ensure that we select OS locale when related preference is set");
 
--- a/browser/modules/DirectoryLinksProvider.jsm
+++ b/browser/modules/DirectoryLinksProvider.jsm
@@ -189,17 +189,18 @@ var DirectoryLinksProvider = {
    */
   get locale() {
     let matchOS;
     try {
       matchOS = Services.prefs.getBoolPref(PREF_MATCH_OS_LOCALE);
     } catch (e) {}
 
     if (matchOS) {
-      return Services.locale.getLocaleComponentForUserAgent();
+      return Cc["@mozilla.org/intl/ospreferences;1"].
+             getService(Ci.mozIOSPreferences).getSystemLocale();
     }
 
     try {
       let locale = Services.prefs.getComplexValue(PREF_SELECTED_LOCALE,
                                                   Ci.nsIPrefLocalizedString);
       if (locale) {
         return locale.data;
       }
--- a/toolkit/components/telemetry/TelemetryEnvironment.jsm
+++ b/toolkit/components/telemetry/TelemetryEnvironment.jsm
@@ -225,31 +225,31 @@ function enforceBoolean(aValue) {
 }
 
 /**
  * Get the current browser.
  * @return a string with the locale or null on failure.
  */
 function getBrowserLocale() {
   try {
-    return Cc["@mozilla.org/chrome/chrome-registry;1"].
-             getService(Ci.nsIXULChromeRegistry).
-             getSelectedLocale("global");
+    return Services.locale.getAppLocale();
   } catch (e) {
     return null;
   }
 }
 
 /**
  * Get the current OS locale.
  * @return a string with the OS locale or null on failure.
  */
 function getSystemLocale() {
   try {
-    return Services.locale.getLocaleComponentForUserAgent();
+    return Cc["@mozilla.org/intl/ospreferences;1"].
+             getService(Ci.mozIOSPreferences).
+             getSystemLocale();
   } catch (e) {
     return null;
   }
 }
 
 /**
  * Safely get a sysinfo property and return its value. If the property is not
  * available, return aDefault.
--- a/toolkit/modules/Locale.jsm
+++ b/toolkit/modules/Locale.jsm
@@ -13,18 +13,21 @@ const PREF_MATCH_OS_LOCALE            = 
 const PREF_SELECTED_LOCALE            = "general.useragent.locale";
 
 this.Locale = {
   /**
    * Gets the currently selected locale for display.
    * @return  the selected locale or "en-US" if none is selected
    */
   getLocale() {
-    if (Preferences.get(PREF_MATCH_OS_LOCALE, false))
-      return Services.locale.getLocaleComponentForUserAgent();
+    if (Preferences.get(PREF_MATCH_OS_LOCALE, false)) {
+      const osPrefs =
+        Cc["@mozilla.org/intl/ospreferences;1"].getService(Ci.mozIOSPreferences);
+      return osPrefs.getSystemLocale();
+    }
     try {
       let locale = Preferences.get(PREF_SELECTED_LOCALE, null, Ci.nsIPrefLocalizedString);
       if (locale)
         return locale;
     } catch (e) {}
     return Preferences.get(PREF_SELECTED_LOCALE, "en-US");
   },
 
--- a/toolkit/modules/Services.jsm
+++ b/toolkit/modules/Services.jsm
@@ -70,17 +70,17 @@ var initTable = [
   ["console", "@mozilla.org/consoleservice;1", "nsIConsoleService"],
   ["contentPrefs", "@mozilla.org/content-pref/service;1", "nsIContentPrefService"],
   ["cookies", "@mozilla.org/cookiemanager;1", "nsICookieManager2"],
   ["downloads", "@mozilla.org/download-manager;1", "nsIDownloadManager"],
   ["droppedLinkHandler", "@mozilla.org/content/dropped-link-handler;1", "nsIDroppedLinkHandler"],
   ["els", "@mozilla.org/eventlistenerservice;1", "nsIEventListenerService"],
   ["eTLD", "@mozilla.org/network/effective-tld-service;1", "nsIEffectiveTLDService"],
   ["io", "@mozilla.org/network/io-service;1", "nsIIOService2"],
-  ["locale", "@mozilla.org/intl/nslocaleservice;1", "nsILocaleService"],
+  ["locale", "@mozilla.org/intl/localeservice;1", "mozILocaleService"],
   ["logins", "@mozilla.org/login-manager;1", "nsILoginManager"],
   ["obs", "@mozilla.org/observer-service;1", "nsIObserverService"],
   ["perms", "@mozilla.org/permissionmanager;1", "nsIPermissionManager"],
   ["prompt", "@mozilla.org/embedcomp/prompt-service;1", "nsIPromptService"],
   ["profiler", "@mozilla.org/tools/profiler;1", "nsIProfiler",
    AppConstants.MOZ_GECKO_PROFILER],
   ["scriptloader", "@mozilla.org/moz/jssubscript-loader;1", "mozIJSSubScriptLoader"],
   ["scriptSecurityManager", "@mozilla.org/scriptsecuritymanager;1", "nsIScriptSecurityManager"],
--- a/toolkit/modules/tests/xpcshell/test_Services.js
+++ b/toolkit/modules/tests/xpcshell/test_Services.js
@@ -40,17 +40,17 @@ function run_test() {
   checkService("DOMRequest", Ci.nsIDOMRequestService);
   checkService("domStorageManager", Ci.nsIDOMStorageManager);
   checkService("downloads", Ci.nsIDownloadManager);
   checkService("droppedLinkHandler", Ci.nsIDroppedLinkHandler);
   checkService("eTLD", Ci.nsIEffectiveTLDService);
   checkService("focus", Ci.nsIFocusManager);
   checkService("io", Ci.nsIIOService);
   checkService("io", Ci.nsIIOService2);
-  checkService("locale", Ci.nsILocaleService);
+  checkService("locale", Ci.mozILocaleService);
   checkService("logins", Ci.nsILoginManager);
   checkService("obs", Ci.nsIObserverService);
   checkService("perms", Ci.nsIPermissionManager);
   checkService("prefs", Ci.nsIPrefBranch);
   checkService("prefs", Ci.nsIPrefService);
   checkService("prompt", Ci.nsIPromptService);
   checkService("scriptSecurityManager", Ci.nsIScriptSecurityManager);
   checkService("scriptloader", Ci.mozIJSSubScriptLoader);
--- a/toolkit/mozapps/extensions/AddonManager.jsm
+++ b/toolkit/mozapps/extensions/AddonManager.jsm
@@ -324,18 +324,21 @@ function promiseCallProvider(aProvider, 
 }
 
 /**
  * Gets the currently selected locale for display.
  * @return  the selected locale or "en-US" if none is selected
  */
 function getLocale() {
   try {
-    if (Services.prefs.getBoolPref(PREF_MATCH_OS_LOCALE))
-      return Services.locale.getLocaleComponentForUserAgent();
+    if (Services.prefs.getBoolPref(PREF_MATCH_OS_LOCALE)) {
+      const osPrefs =
+        Cc["@mozilla.org/intl/ospreferences;1"].getService(Ci.mozIOSPreferences);
+      return osPrefs.getSystemLocale();
+    }
   } catch (e) { }
 
   try {
     let locale = Services.prefs.getComplexValue(PREF_SELECTED_LOCALE,
                                                 Ci.nsIPrefLocalizedString);
     if (locale)
       return locale;
   } catch (e) { }