| Index: chrome/browser/chromeos/login/base_login_display_host.cc
|
| diff --git a/chrome/browser/chromeos/login/base_login_display_host.cc b/chrome/browser/chromeos/login/base_login_display_host.cc
|
| index b74cad6dc7ec82df06dac7ce2e813850ff85813f..50f88ee9c91053095bf3685972d62d0c03783716 100644
|
| --- a/chrome/browser/chromeos/login/base_login_display_host.cc
|
| +++ b/chrome/browser/chromeos/login/base_login_display_host.cc
|
| @@ -214,7 +214,7 @@ namespace browser {
|
| // TODO(nkostylev): Split this into a smaller functions.
|
| void ShowLoginWizard(const std::string& first_screen_name,
|
| const gfx::Size& size) {
|
| - VLOG(1) << "Showing login screen: " << first_screen_name;
|
| + VLOG(1) << "Showing OOBE screen: " << first_screen_name;
|
|
|
| // The login screen will enable alternate keyboard layouts, but we don't want
|
| // to start the IME process unless one is selected.
|
| @@ -282,47 +282,45 @@ void ShowLoginWizard(const std::string& first_screen_name,
|
| const chromeos::StartupCustomizationDocument* startup_manifest =
|
| chromeos::StartupCustomizationDocument::GetInstance();
|
|
|
| + // Switch to initial locale if specified by customization
|
| + // and has not been set yet. We cannot call
|
| + // chromeos::LanguageSwitchMenu::SwitchLanguage here before
|
| + // EmitLoginPromptReady.
|
| + PrefService* prefs = g_browser_process->local_state();
|
| + const std::string current_locale =
|
| + prefs->GetString(prefs::kApplicationLocale);
|
| + VLOG(1) << "Current locale: " << current_locale;
|
| std::string locale;
|
| - if (startup_manifest->IsReady()) {
|
| - // Switch to initial locale if specified by customization
|
| - // and has not been set yet. We cannot call
|
| - // chromeos::LanguageSwitchMenu::SwitchLanguage here before
|
| - // EmitLoginPromptReady.
|
| - PrefService* prefs = g_browser_process->local_state();
|
| - const std::string current_locale =
|
| - prefs->GetString(prefs::kApplicationLocale);
|
| - VLOG(1) << "Current locale: " << current_locale;
|
| - if (current_locale.empty()) {
|
| - locale = startup_manifest->initial_locale();
|
| - std::string layout = startup_manifest->keyboard_layout();
|
| - VLOG(1) << "Initial locale: " << locale
|
| - << "keyboard layout " << layout;
|
| - if (!locale.empty()) {
|
| - // 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
|
| - // will enforce preference saving.
|
| - prefs->SetString(prefs::kApplicationLocale, locale);
|
| - chromeos::WizardController::SetInitialLocale(locale);
|
| - // Determine keyboard layout from OEM customization (if provided) or
|
| - // initial locale and save it in preferences.
|
| - DetermineAndSaveHardwareKeyboard(locale, layout);
|
| - // Then, enable the hardware keyboard.
|
| - chromeos::input_method::EnableInputMethods(
|
| - locale,
|
| - chromeos::input_method::kKeyboardLayoutsOnly,
|
| - chromeos::input_method::GetHardwareInputMethodId());
|
| - // Reloading resource bundle causes us to do blocking IO on UI thread.
|
| - // Temporarily allow it until we fix http://crosbug.com/11102
|
| - base::ThreadRestrictions::ScopedAllowIO allow_io;
|
| - const std::string loaded_locale =
|
| - ResourceBundle::ReloadSharedInstance(locale);
|
| - CHECK(!loaded_locale.empty()) << "Locale could not be found for "
|
| - << locale;
|
| - // Set the application locale here so that the language switch
|
| - // menu works properly with the newly loaded locale.
|
| - g_browser_process->SetApplicationLocale(loaded_locale);
|
| - }
|
| + if (current_locale.empty()) {
|
| + locale = startup_manifest->initial_locale();
|
| + std::string layout = startup_manifest->keyboard_layout();
|
| + VLOG(1) << "Initial locale: " << locale
|
| + << "keyboard layout " << layout;
|
| + if (!locale.empty()) {
|
| + // 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
|
| + // will enforce preference saving.
|
| + prefs->SetString(prefs::kApplicationLocale, locale);
|
| + chromeos::WizardController::SetInitialLocale(locale);
|
| + // Determine keyboard layout from OEM customization (if provided) or
|
| + // initial locale and save it in preferences.
|
| + DetermineAndSaveHardwareKeyboard(locale, layout);
|
| + // Then, enable the hardware keyboard.
|
| + chromeos::input_method::EnableInputMethods(
|
| + locale,
|
| + chromeos::input_method::kKeyboardLayoutsOnly,
|
| + chromeos::input_method::GetHardwareInputMethodId());
|
| + // Reloading resource bundle causes us to do blocking IO on UI thread.
|
| + // Temporarily allow it until we fix http://crosbug.com/11102
|
| + base::ThreadRestrictions::ScopedAllowIO allow_io;
|
| + const std::string loaded_locale =
|
| + ResourceBundle::ReloadSharedInstance(locale);
|
| + CHECK(!loaded_locale.empty()) << "Locale could not be found for "
|
| + << locale;
|
| + // Set the application locale here so that the language switch
|
| + // menu works properly with the newly loaded locale.
|
| + g_browser_process->SetApplicationLocale(loaded_locale);
|
| }
|
| }
|
|
|
| @@ -332,18 +330,16 @@ void ShowLoginWizard(const std::string& first_screen_name,
|
| if (chromeos::CrosLibrary::Get()->EnsureLoaded())
|
| chromeos::CrosLibrary::Get()->GetLoginLibrary()->EmitLoginPromptReady();
|
|
|
| - if (startup_manifest->IsReady()) {
|
| - // Set initial timezone if specified by customization.
|
| - const std::string timezone_name = startup_manifest->initial_timezone();
|
| - VLOG(1) << "Initial time zone: " << timezone_name;
|
| - // Apply locale customizations only once so preserve whatever locale
|
| - // user has changed to during OOBE.
|
| - if (!timezone_name.empty()) {
|
| - icu::TimeZone* timezone = icu::TimeZone::createTimeZone(
|
| - icu::UnicodeString::fromUTF8(timezone_name));
|
| - CHECK(timezone) << "Timezone could not be set for " << timezone_name;
|
| - chromeos::system::TimezoneSettings::GetInstance()->SetTimezone(*timezone);
|
| - }
|
| + // Set initial timezone if specified by customization.
|
| + const std::string timezone_name = startup_manifest->initial_timezone();
|
| + VLOG(1) << "Initial time zone: " << timezone_name;
|
| + // Apply locale customizations only once to preserve whatever locale
|
| + // user has changed to during OOBE.
|
| + if (!timezone_name.empty()) {
|
| + icu::TimeZone* timezone = icu::TimeZone::createTimeZone(
|
| + icu::UnicodeString::fromUTF8(timezone_name));
|
| + CHECK(timezone) << "Timezone could not be set for " << timezone_name;
|
| + chromeos::system::TimezoneSettings::GetInstance()->SetTimezone(*timezone);
|
| }
|
| }
|
|
|
|
|