Bug 1342753 - Use app locale in DateTimeFormat.cpp, instead of OS locale. r?m_kato draft
authorZibi Braniecki <gandalf@mozilla.com>
Mon, 27 Feb 2017 09:36:50 -0800
changeset 493230 8539fca28dacbd60557b433c64c66f78661e3e44
parent 489279 6f2117c0b9895dfeb06fa74d2dc91bff660386ce
child 547796 f94bbdf44db6d78286f2bc77fb3ca4c51d2ec166
push id47688
push userzbraniecki@mozilla.com
push dateFri, 03 Mar 2017 16:35:55 +0000
reviewersm_kato
bugs1342753
milestone54.0a1
Bug 1342753 - Use app locale in DateTimeFormat.cpp, instead of OS locale. r?m_kato MozReview-Commit-ID: SPsNYxe493
intl/locale/DateTimeFormat.cpp
--- a/intl/locale/DateTimeFormat.cpp
+++ b/intl/locale/DateTimeFormat.cpp
@@ -2,49 +2,36 @@
  *
  * 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/. */
 
 #include "DateTimeFormat.h"
 #include "nsCOMPtr.h"
 #include "nsIServiceManager.h"
-#include "nsILocaleService.h"
+#include "mozilla/intl/LocaleService.h"
 #include "unicode/udatpg.h"
 
 namespace mozilla {
 
 nsCString* DateTimeFormat::mLocale = nullptr;
 
 /*static*/ nsresult
 DateTimeFormat::Initialize()
 {
-  nsAutoString localeStr;
-  nsresult rv = NS_OK;
-
-  if (!mLocale) {
-    mLocale = new nsCString();
-  } else if (!mLocale->IsEmpty()) {
+  if (mLocale) {
     return NS_OK;
   }
 
-  nsCOMPtr<nsILocaleService> localeService =
-           do_GetService(NS_LOCALESERVICE_CONTRACTID, &rv);
-  if (NS_SUCCEEDED(rv)) {
-    nsCOMPtr<nsILocale> appLocale;
-    rv = localeService->GetApplicationLocale(getter_AddRefs(appLocale));
-    if (NS_SUCCEEDED(rv)) {
-      rv = appLocale->GetCategory(NS_LITERAL_STRING("NSILOCALE_TIME"), localeStr);
-      if (NS_SUCCEEDED(rv) && !localeStr.IsEmpty()) {
-        *mLocale = NS_LossyConvertUTF16toASCII(localeStr); // cache locale name
-      }
-    }
-  }
+  mLocale = new nsCString();
+  nsAutoCString locale;
+  intl::LocaleService::GetInstance()->GetAppLocale(locale);
+  mLocale->Assign(locale);
 
-  return rv;
+  return NS_OK;
 }
 
 // performs a locale sensitive date formatting operation on the time_t parameter
 /*static*/ nsresult
 DateTimeFormat::FormatTime(const nsDateFormatSelector aDateFormatSelector,
                            const nsTimeFormatSelector aTimeFormatSelector,
                            const time_t aTimetTime,
                            nsAString& aStringOut)