Index: ui/base/l10n/l10n_util_unittest.cc |
diff --git a/ui/base/l10n/l10n_util_unittest.cc b/ui/base/l10n/l10n_util_unittest.cc |
index 9e2ae4d3446b9f5b1d3c1f4739de2e9cfc361c4f..972dd261b043f3259992a992226e6ec3261c5bdd 100644 |
--- a/ui/base/l10n/l10n_util_unittest.cc |
+++ b/ui/base/l10n/l10n_util_unittest.cc |
@@ -141,12 +141,15 @@ TEST_F(L10nUtilTest, GetAppLocale) { |
base::i18n::SetICUDefaultLocale("en-US"); |
env->SetVar("LANGUAGE", "xx:fr_CA"); |
EXPECT_EQ("fr", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("fr", icu::Locale::getDefault().getLanguage()); |
env->SetVar("LANGUAGE", "xx:yy:en_gb.utf-8@quot"); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
env->SetVar("LANGUAGE", "xx:zh-hk"); |
EXPECT_EQ("zh-TW", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("zh", icu::Locale::getDefault().getLanguage()); |
// We emulate gettext's behavior here, which ignores LANG/LC_MESSAGES/LC_ALL |
// when LANGUAGE is specified. If no language specified in LANGUAGE is |
@@ -155,9 +158,11 @@ TEST_F(L10nUtilTest, GetAppLocale) { |
base::i18n::SetICUDefaultLocale("fr-FR"); |
env->SetVar("LANGUAGE", "xx:yy"); |
EXPECT_EQ("en-US", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
env->SetVar("LANGUAGE", "/fr:zh_CN"); |
EXPECT_EQ("zh-CN", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("zh", icu::Locale::getDefault().getLanguage()); |
// Test prioritization of the different environment variables. |
env->SetVar("LANGUAGE", "fr"); |
@@ -165,35 +170,46 @@ TEST_F(L10nUtilTest, GetAppLocale) { |
env->SetVar("LC_MESSAGES", "he"); |
env->SetVar("LANG", "nb"); |
EXPECT_EQ("fr", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("fr", icu::Locale::getDefault().getLanguage()); |
env->UnSetVar("LANGUAGE"); |
EXPECT_EQ("es", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("es", icu::Locale::getDefault().getLanguage()); |
env->UnSetVar("LC_ALL"); |
EXPECT_EQ("he", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("he", icu::Locale::getDefault().getLanguage()); |
env->UnSetVar("LC_MESSAGES"); |
EXPECT_EQ("nb", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("nb", icu::Locale::getDefault().getLanguage()); |
env->UnSetVar("LANG"); |
SetDefaultLocaleForTest("ca", env.get()); |
EXPECT_EQ("ca", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("ca", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("ca-ES", env.get()); |
EXPECT_EQ("ca", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("ca", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("ca@valencia", env.get()); |
EXPECT_EQ("ca@valencia", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("ca", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("ca_ES@valencia", env.get()); |
EXPECT_EQ("ca@valencia", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("ca", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("ca_ES.UTF8@valencia", env.get()); |
EXPECT_EQ("ca@valencia", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("ca", icu::Locale::getDefault().getLanguage()); |
} |
SetDefaultLocaleForTest("en-US", env.get()); |
EXPECT_EQ("en-US", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("xx", env.get()); |
EXPECT_EQ("en-US", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
if (!kPlatformHasDefaultLocale) { |
// ChromeOS & embedded use only browser prefs in GetApplicationLocale(), |
@@ -201,88 +217,148 @@ TEST_F(L10nUtilTest, GetAppLocale) { |
// the default locale from the OS or environment. |
SetDefaultLocaleForTest("en-GB", env.get()); |
EXPECT_EQ("en-US", l10n_util::GetApplicationLocale("")); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("en-US", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale("en-GB")); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("en-US", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale("en-AU")); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("en-US", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale("en-NZ")); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("en-US", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale("en-CA")); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("en-US", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale("en-ZA")); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
} else { |
// Most platforms have an OS-provided locale. This locale is preferred. |
SetDefaultLocaleForTest("en-GB", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("fr-CA", env.get()); |
EXPECT_EQ("fr", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("fr", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("es-MX", env.get()); |
EXPECT_EQ("es-419", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("es", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("es-AR", env.get()); |
EXPECT_EQ("es-419", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("es", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("es-ES", env.get()); |
EXPECT_EQ("es", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("es", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("es", env.get()); |
EXPECT_EQ("es", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("es", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("zh-HK", env.get()); |
EXPECT_EQ("zh-TW", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("zh", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("zh-MO", env.get()); |
EXPECT_EQ("zh-TW", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("zh", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("zh-SG", env.get()); |
EXPECT_EQ("zh-CN", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("zh", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("en-CA", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("en-AU", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("en-NZ", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
SetDefaultLocaleForTest("en-ZA", env.get()); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale(std::string())); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
} |
+ SetDefaultLocaleForTest("en-US", env.get()); |
+ |
if (kSupportsLocalePreference) { |
// On windows, the user can override the locale in preferences. |
base::i18n::SetICUDefaultLocale("en-US"); |
EXPECT_EQ("fr", l10n_util::GetApplicationLocale("fr")); |
+ EXPECT_STREQ("fr", icu::Locale::getDefault().getLanguage()); |
EXPECT_EQ("fr", l10n_util::GetApplicationLocale("fr-CA")); |
+ EXPECT_STREQ("fr", icu::Locale::getDefault().getLanguage()); |
base::i18n::SetICUDefaultLocale("en-US"); |
// Aliases iw, no, tl to he, nb, fil. |
EXPECT_EQ("he", l10n_util::GetApplicationLocale("iw")); |
+ EXPECT_STREQ("he", icu::Locale::getDefault().getLanguage()); |
EXPECT_EQ("nb", l10n_util::GetApplicationLocale("no")); |
+ EXPECT_STREQ("nb", icu::Locale::getDefault().getLanguage()); |
EXPECT_EQ("fil", l10n_util::GetApplicationLocale("tl")); |
+ EXPECT_STREQ("fil", icu::Locale::getDefault().getLanguage()); |
// es-419 and es-XX (where XX is not Spain) should be |
// mapped to es-419 (Latin American Spanish). |
EXPECT_EQ("es-419", l10n_util::GetApplicationLocale("es-419")); |
+ EXPECT_STREQ("es", icu::Locale::getDefault().getLanguage()); |
EXPECT_EQ("es", l10n_util::GetApplicationLocale("es-ES")); |
+ EXPECT_STREQ("es", icu::Locale::getDefault().getLanguage()); |
EXPECT_EQ("es-419", l10n_util::GetApplicationLocale("es-AR")); |
+ EXPECT_STREQ("es", icu::Locale::getDefault().getLanguage()); |
base::i18n::SetICUDefaultLocale("es-AR"); |
EXPECT_EQ("es", l10n_util::GetApplicationLocale("es")); |
+ EXPECT_STREQ("es", icu::Locale::getDefault().getLanguage()); |
base::i18n::SetICUDefaultLocale("zh-HK"); |
EXPECT_EQ("zh-CN", l10n_util::GetApplicationLocale("zh-CN")); |
+ EXPECT_STREQ("zh", icu::Locale::getDefault().getLanguage()); |
base::i18n::SetICUDefaultLocale("he"); |
EXPECT_EQ("en-US", l10n_util::GetApplicationLocale("en")); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
+ |
+ base::i18n::SetICUDefaultLocale("he"); |
+ EXPECT_EQ("en-US", l10n_util::GetApplicationLocale("en", false)); |
+ EXPECT_STREQ("he", icu::Locale::getDefault().getLanguage()); |
+ |
+ base::i18n::SetICUDefaultLocale("de"); |
+ EXPECT_EQ("en-US", l10n_util::GetApplicationLocale("xx", false)); |
+ EXPECT_STREQ("de", icu::Locale::getDefault().getLanguage()); |
+ |
+ base::i18n::SetICUDefaultLocale("de"); |
+ EXPECT_EQ("fr", l10n_util::GetApplicationLocale("fr", false)); |
+ EXPECT_STREQ("de", icu::Locale::getDefault().getLanguage()); |
+ |
+ base::i18n::SetICUDefaultLocale("de"); |
+ EXPECT_EQ("en-US", l10n_util::GetApplicationLocale("en", false)); |
+ EXPECT_STREQ("de", icu::Locale::getDefault().getLanguage()); |
+ |
+ base::i18n::SetICUDefaultLocale("de"); |
+ EXPECT_EQ("en-US", l10n_util::GetApplicationLocale("en-US", true)); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
+ } else { |
+ base::i18n::SetICUDefaultLocale("de"); |
+ EXPECT_EQ("en-US", l10n_util::GetApplicationLocale(std::string(), false)); |
+ EXPECT_STREQ("de", icu::Locale::getDefault().getLanguage()); |
+ |
+ base::i18n::SetICUDefaultLocale("de"); |
+ EXPECT_EQ("en-US", l10n_util::GetApplicationLocale(std::string(), true)); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
} |
#if defined(OS_WIN) |
@@ -290,13 +366,17 @@ TEST_F(L10nUtilTest, GetAppLocale) { |
if (base::win::GetVersion() < base::win::VERSION_VISTA) { |
base::i18n::SetICUDefaultLocale("am"); |
EXPECT_EQ("en-US", l10n_util::GetApplicationLocale("")); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
base::i18n::SetICUDefaultLocale("en-GB"); |
EXPECT_EQ("en-GB", l10n_util::GetApplicationLocale("am")); |
+ EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage()); |
} else { |
base::i18n::SetICUDefaultLocale("am"); |
EXPECT_EQ("am", l10n_util::GetApplicationLocale("")); |
+ EXPECT_STREQ("am", icu::Locale::getDefault().getLanguage()); |
base::i18n::SetICUDefaultLocale("en-GB"); |
EXPECT_EQ("am", l10n_util::GetApplicationLocale("am")); |
+ EXPECT_STREQ("am", icu::Locale::getDefault().getLanguage()); |
} |
#endif // defined(OS_WIN) |