Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6075)

Unified Diff: chrome/browser/chromeos/locale_change_guard.cc

Issue 6249009: Cleanup of r71320 commit. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: style fix Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/profiles/profile_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/locale_change_guard.cc
diff --git a/chrome/browser/chromeos/locale_change_guard.cc b/chrome/browser/chromeos/locale_change_guard.cc
index f875cdf5745de25f8fd96c7027636f6995e23625..f10775167b6fd3da4eb2cfc989118c7e8708e908 100644
--- a/chrome/browser/chromeos/locale_change_guard.cc
+++ b/chrome/browser/chromeos/locale_change_guard.cc
@@ -33,15 +33,27 @@ LocaleChangeGuard::LocaleChangeGuard()
}
void LocaleChangeGuard::RevertLocaleChange(const ListValue* list) {
+ if (note_ == NULL ||
+ tab_contents_ == NULL ||
+ from_locale_.empty() ||
+ to_locale_.empty()) {
+ NOTREACHED();
+ return;
+ }
+ if (reverted_)
+ return;
+
+ PrefService* prefs = tab_contents_->profile()->GetPrefs();
+ if (prefs == NULL)
+ return;
+
reverted_ = true;
UserMetrics::RecordAction(UserMetricsAction("LanguageChange_Revert"));
tab_contents_->profile()->ChangeApplicationLocale(from_locale_, true);
- PrefService* prefs = tab_contents_->profile()->GetPrefs();
- if (prefs) {
- prefs->SetString(prefs::kApplicationLocaleBackup, from_locale_);
- prefs->ClearPref(prefs::kApplicationLocaleAccepted);
- prefs->ScheduleSavePersistentPrefs();
- }
+ prefs->SetString(prefs::kApplicationLocaleBackup, from_locale_);
+ prefs->ClearPref(prefs::kApplicationLocaleAccepted);
+ prefs->ScheduleSavePersistentPrefs();
+
Browser* browser = Browser::GetBrowserForController(
&tab_contents_->controller(), NULL);
if (browser)
@@ -52,37 +64,58 @@ void LocaleChangeGuard::CheckLocaleChange(TabContents* tab_contents) {
// We want notification to be shown no more than once per session.
if (note_ != NULL)
return;
+ DCHECK(note_ == NULL && tab_contents_ == NULL);
+ DCHECK(from_locale_.empty() && to_locale_.empty());
+
// We check profile Id because:
// (1) we want to exit fast in common case when nothing should be done.
// (2) on ChromeOS this guard may be invoked for a dummy profile first time.
ProfileId cur_profile_id = tab_contents->profile()->GetRuntimeId();
- if (cur_profile_id == profile_id_)
+ if (cur_profile_id == profile_id_) {
+ // We have already checked this profile, exiting fast.
return;
+ }
profile_id_ = cur_profile_id;
+
std::string cur_locale = g_browser_process->GetApplicationLocale();
- if (cur_locale.empty())
+ if (cur_locale.empty()) {
+ NOTREACHED();
return;
+ }
+
PrefService* prefs = tab_contents->profile()->GetPrefs();
if (prefs == NULL)
return;
- to_locale_ = prefs->GetString(prefs::kApplicationLocaleOverride);
- if (!to_locale_.empty()) {
- DCHECK(to_locale_ == cur_locale);
+
+ std::string to_locale = prefs->GetString(prefs::kApplicationLocaleOverride);
+ if (!to_locale.empty()) {
+ DCHECK(to_locale == cur_locale);
return;
}
- to_locale_ = prefs->GetString(prefs::kApplicationLocale);
- if (to_locale_ != cur_locale)
+
+ to_locale = prefs->GetString(prefs::kApplicationLocale);
+ if (to_locale != cur_locale) {
+ // This conditional branch can occur in case kApplicationLocale
+ // preference was modified by synchronization.
return;
- from_locale_ = prefs->GetString(prefs::kApplicationLocaleBackup);
- if (from_locale_.empty() || from_locale_ == to_locale_)
+ }
+
+ std::string from_locale = prefs->GetString(prefs::kApplicationLocaleBackup);
+ if (from_locale.empty() || from_locale == to_locale) {
+ // No locale change was detected, just exit.
return;
+ }
+
+ // Locale change detected, showing notification.
+ from_locale_ = from_locale;
+ to_locale_ = to_locale;
+ tab_contents_ = tab_contents;
note_.reset(new chromeos::SystemNotification(
tab_contents->profile(),
new Delegate(this),
IDR_DEFAULT_FAVICON,
l10n_util::GetStringUTF16(
IDS_OPTIONS_SETTINGS_SECTION_TITLE_LANGUAGE)));
- tab_contents_ = tab_contents;
note_->Show(
l10n_util::GetStringFUTF16(
IDS_LOCALE_CHANGE_MESSAGE,
@@ -95,10 +128,16 @@ void LocaleChangeGuard::CheckLocaleChange(TabContents* tab_contents) {
}
void LocaleChangeGuard::AcceptLocaleChange() {
+ if (note_ == NULL ||
+ tab_contents_ == NULL ||
+ from_locale_.empty() ||
+ to_locale_.empty()) {
+ NOTREACHED();
+ return;
+ }
+
// Check whether locale has been reverted or changed.
// If not: mark current locale as accepted.
- if (tab_contents_ == NULL)
- return;
if (reverted_)
return;
PrefService* prefs = tab_contents_->profile()->GetPrefs();
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/profiles/profile_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698