Bug 1409973 - Update JS runtime default locale when pref javascript.use_us_english_local changes. draft
authorChung-Sheng Fu <cfu@mozilla.com>
Mon, 15 Jan 2018 17:15:22 +0800
changeset 720333 e9ef71beba120a52fcdd7d06a3b6cd7ae91c355e
parent 720332 0ea0c35bc0f45b2a78907227343d2dfcc6cf564b
child 746034 7fe5ad4afd1aa351dd6af5e9a3f98b5d8301056d
push id95511
push userbmo:cfu@mozilla.com
push dateMon, 15 Jan 2018 09:17:01 +0000
bugs1409973
milestone59.0a1
Bug 1409973 - Update JS runtime default locale when pref javascript.use_us_english_local changes. MozReview-Commit-ID: GzKSIFEqw4h
js/xpconnect/src/XPCLocale.cpp
--- a/js/xpconnect/src/XPCLocale.cpp
+++ b/js/xpconnect/src/XPCLocale.cpp
@@ -38,22 +38,25 @@ NS_IMPL_ISUPPORTS(XPCLocaleObserver, nsI
 
 void
 XPCLocaleObserver::Init()
 {
   nsCOMPtr<nsIObserverService> observerService =
     mozilla::services::GetObserverService();
 
   observerService->AddObserver(this, "intl:app-locales-changed", false);
+
+  Preferences::AddStrongObserver(this, "javascript.use_us_english_locale");
 }
 
 NS_IMETHODIMP
 XPCLocaleObserver::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData)
 {
-  if (!strcmp(aTopic, "intl:app-locales-changed")) {
+  if (!strcmp(aTopic, "intl:app-locales-changed") ||
+      (!strcmp(aTopic, "nsPref:changed") && !NS_strcmp(aData, u"javascript.use_us_english_locale"))) {
     JSRuntime* rt = CycleCollectedJSRuntime::Get()->Runtime();
     if (!xpc_LocalizeRuntime(rt)) {
       return NS_ERROR_OUT_OF_MEMORY;
     }
     return NS_OK;
   }
 
   return NS_ERROR_UNEXPECTED;