Index: chrome/browser/chromeos/login/language_switch_menu.cc |
diff --git a/chrome/browser/chromeos/login/language_switch_menu.cc b/chrome/browser/chromeos/login/language_switch_menu.cc |
index c18d20da42d4925457a8c879dde0b1c298a28df1..01cee907135586a96c45eac73f4d2bc0a66660af 100644 |
--- a/chrome/browser/chromeos/login/language_switch_menu.cc |
+++ b/chrome/browser/chromeos/login/language_switch_menu.cc |
@@ -67,8 +67,14 @@ void LanguageSwitchMenu::InitLanguageMenu() { |
std::wstring LanguageSwitchMenu::GetCurrentLocaleName() const { |
DCHECK(g_browser_process); |
const std::string locale = g_browser_process->GetApplicationLocale(); |
- return language_list_->GetLanguageNameAt( |
- language_list_->GetIndexFromLocale(locale)); |
+ int index = language_list_->GetIndexFromLocale(locale); |
+ if (index == -1) { |
Peter Kasting
2010/12/20 17:18:48
I don't think we should "handle" this error. IMO
glotov
2010/12/21 13:19:08
Agree. That was my second option but I wanted some
|
+ // If locale cannot be found (probably resources bundle failed to |
+ // load or user edited prefs file manually) - use the default. |
+ LOG(DFATAL) << "Unknown locale: " << locale << ". Defaulting to the first."; |
+ index = 0; |
+ } |
+ return language_list_->GetLanguageNameAt(index); |
}; |
void LanguageSwitchMenu::SetFirstLevelMenuWidth(int width) { |
@@ -93,7 +99,8 @@ void LanguageSwitchMenu::SwitchLanguage(const std::string& locale) { |
prefs->SavePersistentPrefs(); |
// Switch the locale. |
- ResourceBundle::ReloadSharedInstance(locale); |
+ CHECK(ResourceBundle::ReloadSharedInstance(locale) == locale) |
Peter Kasting
2010/12/20 17:18:48
Never do real work inside a CHECK or DCHECK.
glotov
2010/12/21 13:19:08
Done.
|
+ << "Locale could not be found for " << locale; |
// Enable the keyboard layouts that are necessary for the new locale. |
input_method::EnableInputMethods( |