| Index: chrome/browser/chromeos/login/login_display_host_impl.cc
|
| diff --git a/chrome/browser/chromeos/login/login_display_host_impl.cc b/chrome/browser/chromeos/login/login_display_host_impl.cc
|
| index 20b6774403895593c056b7af71400cf8f194272c..708d0670defe1b7d6d292bbbd4dec3b5300dda8c 100644
|
| --- a/chrome/browser/chromeos/login/login_display_host_impl.cc
|
| +++ b/chrome/browser/chromeos/login/login_display_host_impl.cc
|
| @@ -147,11 +147,17 @@ void DetermineAndSaveHardwareKeyboard(const std::string& locale,
|
| if (!layout.empty()) {
|
| PrefService* prefs = g_browser_process->local_state();
|
| prefs->SetString(prefs::kHardwareKeyboardLayout, layout);
|
| +
|
| // This asks the file thread to save the prefs (i.e. doesn't block).
|
| // The latest values of Local State reside in memory so we can safely
|
| // get the value of kHardwareKeyboardLayout even if the data is not
|
| // yet saved to disk.
|
| prefs->CommitPendingWrite();
|
| +
|
| + chromeos::input_method::InputMethodManager* manager =
|
| + chromeos::input_method::InputMethodManager::Get();
|
| + manager->GetInputMethodUtil()->UpdateHardwareLayoutCache();
|
| + manager->SetInputMethodLoginDefault();
|
| }
|
| }
|
|
|
| @@ -1078,7 +1084,7 @@ void ShowLoginWizard(const std::string& first_screen_name) {
|
| // Set up keyboards. For example, when |locale| is "en-US", enable US qwerty
|
| // and US dvorak keyboard layouts.
|
| if (g_browser_process && g_browser_process->local_state()) {
|
| - manager->SetInputMethodDefault();
|
| + manager->SetInputMethodLoginDefault();
|
|
|
| PrefService* prefs = g_browser_process->local_state();
|
| // Apply owner preferences for tap-to-click and mouse buttons swap for
|
| @@ -1145,7 +1151,8 @@ void ShowLoginWizard(const std::string& first_screen_name) {
|
| std::string locale = chromeos::StartupUtils::GetInitialLocale();
|
| prefs->SetString(prefs::kApplicationLocale, locale);
|
| manager->EnableLoginLayouts(
|
| - locale, manager->GetInputMethodUtil()->GetHardwareInputMethodId());
|
| + locale,
|
| + manager->GetInputMethodUtil()->GetHardwareInputMethodIds());
|
| base::ThreadRestrictions::ScopedAllowIO allow_io;
|
| const std::string loaded_locale =
|
| ResourceBundle::GetSharedInstance().ReloadLocaleResources(locale);
|
| @@ -1169,14 +1176,18 @@ void ShowLoginWizard(const std::string& first_screen_name) {
|
| VLOG(1) << "Current locale: " << current_locale;
|
| std::string locale = startup_manifest->initial_locale_default();
|
|
|
| + std::string layout = startup_manifest->keyboard_layout();
|
| + VLOG(1) << "Initial locale: " << locale << "keyboard layout " << layout;
|
| +
|
| + // Determine keyboard layout from OEM customization (if provided) or
|
| + // initial locale and save it in preferences.
|
| + DetermineAndSaveHardwareKeyboard(locale, layout);
|
| +
|
| if (!current_locale.empty() || locale.empty()) {
|
| ShowLoginWizardFinish(first_screen_name, startup_manifest, display_host);
|
| return;
|
| }
|
|
|
| - std::string layout = startup_manifest->keyboard_layout();
|
| - VLOG(1) << "Initial locale: " << locale << "keyboard layout " << layout;
|
| -
|
| // Save initial locale from VPD/customization manifest as current
|
| // Chrome locale. Otherwise it will be lost if Chrome restarts.
|
| // Don't need to schedule pref save because setting initial local
|
| @@ -1184,10 +1195,6 @@ void ShowLoginWizard(const std::string& first_screen_name) {
|
| prefs->SetString(prefs::kApplicationLocale, locale);
|
| chromeos::StartupUtils::SetInitialLocale(locale);
|
|
|
| - // Determine keyboard layout from OEM customization (if provided) or
|
| - // initial locale and save it in preferences.
|
| - DetermineAndSaveHardwareKeyboard(locale, layout);
|
| -
|
| scoped_ptr<ShowLoginWizardSwitchLanguageCallbackData> data(
|
| new ShowLoginWizardSwitchLanguageCallbackData(
|
| first_screen_name, startup_manifest, display_host));
|
|
|