Bug 1344141 - Do not BCP47 canonicalize languages from ChromeRegistry in LocaleService. r?jfkthame draft
authorZibi Braniecki <gandalf@mozilla.com>
Fri, 03 Mar 2017 13:31:26 -0800
changeset 493402 f83d84909c5377ecc330b8d4023df4dacb138c74
parent 493227 77d5a39a4677ed8e32a7ed46561c962d807fa7b1
child 547851 cf7019ce901e974a93e26f07343eb4ccf07a6926
push id47751
push userzbraniecki@mozilla.com
push dateFri, 03 Mar 2017 22:00:53 +0000
reviewersjfkthame
bugs1344141
milestone54.0a1
Bug 1344141 - Do not BCP47 canonicalize languages from ChromeRegistry in LocaleService. r?jfkthame MozReview-Commit-ID: I6xMPhZRUUv
intl/locale/LocaleService.cpp
--- a/intl/locale/LocaleService.cpp
+++ b/intl/locale/LocaleService.cpp
@@ -24,17 +24,20 @@ mozilla::StaticRefPtr<LocaleService> Loc
  */
 static void
 ReadAppLocales(nsTArray<nsCString>& aRetVal)
 {
   nsAutoCString uaLangTag;
   nsCOMPtr<nsIToolkitChromeRegistry> cr =
     mozilla::services::GetToolkitChromeRegistryService();
   if (cr) {
-    cr->GetSelectedLocale(NS_LITERAL_CSTRING("global"), true, uaLangTag);
+    // We don't want to canonicalize the locale from ChromeRegistry into
+    // it's BCP47 form because we will use it for direct language
+    // negotiation and BCP47 changes `ja-JP-mac` into `ja-JP-x-variant-mac`.
+    cr->GetSelectedLocale(NS_LITERAL_CSTRING("global"), false, uaLangTag);
   }
   if (!uaLangTag.IsEmpty()) {
     aRetVal.AppendElement(uaLangTag);
   }
 
   if (!uaLangTag.EqualsLiteral("en-US")) {
     aRetVal.AppendElement(NS_LITERAL_CSTRING("en-US"));
   }