Chromium Code Reviews| Index: chrome/browser/chromeos/preferences.cc |
| diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc |
| index f6492543705bf18d2a44a259f6b39d03a87ffb2a..e90cbb587940d3144d48efedd6167c0ea6079873 100644 |
| --- a/chrome/browser/chromeos/preferences.cc |
| +++ b/chrome/browser/chromeos/preferences.cc |
| @@ -25,6 +25,7 @@ |
| #include "chrome/browser/chromeos/drive/file_system_util.h" |
| #include "chrome/browser/chromeos/input_method/input_method_util.h" |
| #include "chrome/browser/chromeos/login/session/user_session_manager.h" |
| +#include "chrome/browser/chromeos/profiles/profile_helper.h" |
| #include "chrome/browser/chromeos/system/input_device_settings.h" |
| #include "chrome/browser/download/download_prefs.h" |
| #include "chrome/browser/prefs/pref_service_syncable.h" |
| @@ -349,9 +350,10 @@ void Preferences::InitUserPrefs(PrefServiceSyncable* prefs) { |
| prefs::kLanguageXkbAutoRepeatInterval, prefs, callback); |
| } |
| -void Preferences::Init(PrefServiceSyncable* prefs, |
| - const user_manager::User* user) { |
| +void Preferences::Init(Profile* profile, const user_manager::User* user) { |
| + DCHECK(profile); |
| DCHECK(user); |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile); |
| user_ = user; |
| user_is_primary_ = UserManager::Get()->GetPrimaryUser() == user_; |
| InitUserPrefs(prefs); |
| @@ -362,6 +364,10 @@ void Preferences::Init(PrefServiceSyncable* prefs, |
| // PrefService::IsSyncing() changes. |
| prefs->AddObserver(this); |
| + ime_state_ = input_method_manager_->GetDefaultState( |
| + ProfileHelper::Get()->GetProfileByUser(user_)); |
| + input_method_manager_->SetState(ime_state_); |
| + |
| // Initialize preferences to currently saved state. |
| ApplyPreferences(REASON_INITIALIZATION, ""); |
| @@ -369,7 +375,8 @@ void Preferences::Init(PrefServiceSyncable* prefs, |
| // login. For a regular user this is done in |
| // UserSessionManager::InitProfilePreferences(). |
| if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) |
| - UserSessionManager::SetFirstLoginPrefs(prefs, std::string(), std::string()); |
| + UserSessionManager::SetFirstLoginPrefs( |
| + profile, std::string(), std::string()); |
| } |
| void Preferences::InitUserPrefsForTesting(PrefServiceSyncable* prefs, |
| @@ -536,25 +543,27 @@ void Preferences::ApplyPreferences(ApplyReason reason, |
| UpdateAutoRepeatRate(); |
| } |
| - if (reason != REASON_PREF_CHANGED && user_is_active) { |
| + if (reason == REASON_INITIALIZATION) { |
| SetInputMethodList(); |
| - } else if (pref_name == prefs::kLanguagePreloadEngines && user_is_active) { |
| + } |
|
Nikita (slow)
2014/08/13 10:56:41
nit: drop {}
Alexander Alekseev
2014/08/13 23:29:32
Done.
|
| + |
| + if (pref_name == prefs::kLanguagePreloadEngines && |
| + reason == REASON_PREF_CHANGED) { |
| SetLanguageConfigStringListAsCSV(language_prefs::kGeneralSectionName, |
| language_prefs::kPreloadEnginesConfigName, |
| preload_engines_.GetValue()); |
| } |
| - if (reason != REASON_PREF_CHANGED || |
| - pref_name == prefs::kLanguageEnabledExtensionImes) { |
| - if (user_is_active) { |
| - std::string value(enabled_extension_imes_.GetValue()); |
| + if ((reason == REASON_INITIALIZATION) || |
| + (pref_name == prefs::kLanguageEnabledExtensionImes && |
| + reason == REASON_PREF_CHANGED)) { |
| + std::string value(enabled_extension_imes_.GetValue()); |
| - std::vector<std::string> split_values; |
| - if (!value.empty()) |
| - base::SplitString(value, ',', &split_values); |
| + std::vector<std::string> split_values; |
| + if (!value.empty()) |
| + base::SplitString(value, ',', &split_values); |
| - input_method_manager_->SetEnabledExtensionImes(&split_values); |
| - } |
| + ime_state_->SetEnabledExtensionImes(&split_values); |
| } |
| if (user_is_active) { |
| @@ -596,7 +605,7 @@ void Preferences::SetLanguageConfigStringListAsCSV(const char* section, |
| if (section == std::string(language_prefs::kGeneralSectionName) && |
| name == std::string(language_prefs::kPreloadEnginesConfigName)) { |
| - input_method_manager_->ReplaceEnabledInputMethods(split_values); |
| + ime_state_->ReplaceEnabledInputMethods(split_values); |
| return; |
| } |
| } |
| @@ -621,9 +630,11 @@ void Preferences::SetInputMethodList() { |
| // which could have been modified by the SetLanguageConfigStringListAsCSV call |
| // above to the original state. |
| if (!previous_input_method_id.empty()) |
| - input_method_manager_->ChangeInputMethod(previous_input_method_id); |
| + ime_state_->ChangeInputMethod(previous_input_method_id, |
| + false /* show_message */); |
| if (!current_input_method_id.empty()) |
| - input_method_manager_->ChangeInputMethod(current_input_method_id); |
| + ime_state_->ChangeInputMethod(current_input_method_id, |
| + false /* show_message */); |
| } |
| void Preferences::UpdateAutoRepeatRate() { |