Bug 1251289 - Fix chrome.i18n.getAcceptLanguages to *not* replace dashes with underscores in language codes, r?kmag draft
authorbsilverberg <bsilverberg@mozilla.com>
Thu, 25 Feb 2016 13:18:16 -0500
changeset 334595 472b64c2a66cc78e2c86ff6501813baa59cc1679
parent 334587 5f9f5bacc390e2abd9bf9acbb76bd399171900e9
child 514954 8133d290d3ff398af62e9c06af735d5b319543d2
push id11593
push userbmo:bob.silverberg@gmail.com
push dateThu, 25 Feb 2016 18:19:33 +0000
reviewerskmag
bugs1251289
milestone47.0a1
Bug 1251289 - Fix chrome.i18n.getAcceptLanguages to *not* replace dashes with underscores in language codes, r?kmag MozReview-Commit-ID: 1plfVzxwq3V
toolkit/components/extensions/ExtensionUtils.jsm
toolkit/components/extensions/test/mochitest/test_ext_i18n.html
--- a/toolkit/components/extensions/ExtensionUtils.jsm
+++ b/toolkit/components/extensions/ExtensionUtils.jsm
@@ -428,21 +428,17 @@ LocaleData.prototype = {
     }
 
     this.messages.set(locale, result);
     return result;
   },
 
   get acceptLanguages() {
     let result = Preferences.get("intl.accept_languages", "", Ci.nsIPrefLocalizedString);
-    result = result.split(",");
-    result = result.map(lang => {
-      return lang.replace(/-/g, "_").trim();
-    });
-    return result;
+    return result.split(/\s*,\s*/g);
   },
 
 
   get uiLocale() {
     // Return the browser locale, but convert it to a Chrome-style
     // locale code.
     return Locale.getLocale().replace(/-/g, "_");
   },
--- a/toolkit/components/extensions/test/mochitest/test_ext_i18n.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_i18n.html
@@ -223,21 +223,21 @@ add_task(function* test_get_accept_langu
     },
   });
 
   let win = window.open("file_sample.html");
 
   yield extension.startup();
   yield extension.awaitMessage("ready");
 
-  let expectedLangs = ["en_US", "en"];
+  let expectedLangs = ["en-US", "en"];
   extension.sendMessage(["expect-results", expectedLangs]);
   yield extension.awaitMessage("done");
 
-  expectedLangs = ["en_US", "en", "fr_CA", "fr"];
+  expectedLangs = ["en-US", "en", "fr-CA", "fr"];
   SpecialPowers.setCharPref("intl.accept_languages", expectedLangs.toString());
   extension.sendMessage(["expect-results", expectedLangs]);
   yield extension.awaitMessage("done");
   SpecialPowers.clearUserPref("intl.accept_languages");
 
   win.close();
 
   yield extension.unload();