Index: chrome/browser/chromeos/login/login_utils.cc |
diff --git a/chrome/browser/chromeos/login/login_utils.cc b/chrome/browser/chromeos/login/login_utils.cc |
index 42a03ed64495fcffd9929f922dcfc117231627ed..e9032fb991078093758acc40c89c081516dccbeb 100644 |
--- a/chrome/browser/chromeos/login/login_utils.cc |
+++ b/chrome/browser/chromeos/login/login_utils.cc |
@@ -155,7 +155,7 @@ class LoginUtilsImpl : public LoginUtils { |
private: |
// Check user's profile for kApplicationLocale setting. |
- void RespectLocalePreference(PrefService* pref); |
+ void RespectLocalePreference(Profile* pref); |
// Indicates if DoBrowserLaunch will actually launch the browser or not. |
bool browser_launch_enabled_; |
@@ -309,7 +309,7 @@ void LoginUtilsImpl::CompleteLogin( |
} |
btl->AddLoginTimeMarker("TPMOwned", false); |
- RespectLocalePreference(profile->GetPrefs()); |
+ RespectLocalePreference(profile); |
if (first_login) { |
SetFirstLoginPrefs(profile->GetPrefs()); |
@@ -354,53 +354,21 @@ void LoginUtilsImpl::FetchTokens( |
} |
} |
-void LoginUtilsImpl::RespectLocalePreference(PrefService* prefs) { |
+void LoginUtilsImpl::RespectLocalePreference(Profile* profile) { |
+ DCHECK(profile != NULL); |
+ PrefService* prefs = profile->GetPrefs(); |
DCHECK(prefs != NULL); |
- std::string pref_locale_override = |
- prefs->GetString(prefs::kApplicationLocaleOverride); |
- if (!pref_locale_override.empty()) { |
- LanguageSwitchMenu::SwitchLanguage(pref_locale_override); |
- return; |
- } |
- |
if (g_browser_process == NULL) |
return; |
- std::string cur_locale = g_browser_process->GetApplicationLocale(); |
std::string pref_locale = prefs->GetString(prefs::kApplicationLocale); |
- if (!pref_locale.empty()) { |
- if (prefs->GetString(prefs::kApplicationLocaleAccepted) == pref_locale) { |
- // If locale is accepted then we do not want to show LocaleChange |
- // notification. This notification is triggered by different values of |
- // kApplicationLocaleBackup and kApplicationLocale preferences, |
- // so make them identical. |
- prefs->SetString(prefs::kApplicationLocaleBackup, pref_locale); |
- } else { |
- std::string pref_locale_backup = |
- prefs->GetString(prefs::kApplicationLocaleBackup); |
- if (pref_locale_backup != cur_locale) { |
- if (pref_locale_backup == pref_locale || pref_locale_backup.empty()) { |
- prefs->SetString(prefs::kApplicationLocaleBackup, cur_locale); |
- } |
- } |
- } |
- LanguageSwitchMenu::SwitchLanguage(pref_locale); |
- return; |
- } |
- // Profile synchronization takes time and is not completed at that moment |
- // at first login. So we initialize locale preference in steps: |
- // (1) first save it to temporary backup; |
- // (2) on next login we assume that synchronization is already completed |
- // and we may finalize initialization. |
- std::string pref_locale_backup = |
- prefs->GetString(prefs::kApplicationLocaleBackup); |
- prefs->SetString(prefs::kApplicationLocaleBackup, cur_locale); |
- prefs->ScheduleSavePersistentPrefs(); |
- if (!pref_locale_backup.empty()) { |
- prefs->SetString(prefs::kApplicationLocale, pref_locale_backup); |
- prefs->ScheduleSavePersistentPrefs(); |
- LanguageSwitchMenu::SwitchLanguage(pref_locale_backup); |
- } |
+ if (pref_locale.empty()) |
+ pref_locale = prefs->GetString(prefs::kApplicationLocaleBackup); |
+ if (pref_locale.empty()) |
+ pref_locale = g_browser_process->GetApplicationLocale(); |
+ DCHECK(!pref_locale.empty()); |
+ profile->ChangeAppLocale(pref_locale, Profile::APP_LOCALE_CHANGED_VIA_LOGIN); |
+ LanguageSwitchMenu::SwitchLanguage(pref_locale); |
} |
void LoginUtilsImpl::CompleteOffTheRecordLogin(const GURL& start_url) { |