Chromium Code Reviews| Index: chrome/browser/chromeos/cros/input_method_library.cc |
| diff --git a/chrome/browser/chromeos/cros/input_method_library.cc b/chrome/browser/chromeos/cros/input_method_library.cc |
| index 9b5316f1da56f338474c57627fef23ab16421d1f..bed135497a9b428f57af71c37832a8fd1fd42d93 100644 |
| --- a/chrome/browser/chromeos/cros/input_method_library.cc |
| +++ b/chrome/browser/chromeos/cros/input_method_library.cc |
| @@ -63,6 +63,9 @@ class InputMethodLibraryImpl : public InputMethodLibrary, |
| should_change_input_method_(false), |
| ibus_daemon_process_id_(0), |
| candidate_window_process_id_(0) { |
| + // TODO(yusukes): Using both CreateFallbackInputMethodDescriptors and |
| + // chromeos::GetHardwareKeyboardLayoutName doesn't look clean. Probably |
| + // we should unify these APIs. |
| scoped_ptr<InputMethodDescriptors> input_method_descriptors( |
| CreateFallbackInputMethodDescriptors()); |
| current_input_method_ = input_method_descriptors->at(0); |
| @@ -160,7 +163,10 @@ class InputMethodLibraryImpl : public InputMethodLibrary, |
| bool SetImeConfig(const char* section, const char* config_name, |
| const ImeConfigValue& value) { |
| - MaybeStartOrStopInputMethodProcesses(section, config_name, value); |
| + // Start input method process if necessary. We don't stop the process here |
| + // since it can lead the successive FlushImeConfig() call to fail. |
| + MaybeStartOrStopInputMethodProcesses( |
| + section, config_name, value, false /* auto_ime_shutdown */); |
|
satorux1
2011/01/05 06:52:31
This is a bit hard to read. I think it would be ea
Yusuke Sato
2011/01/05 10:05:55
Done.
|
| const ConfigKeyType key = std::make_pair(section, config_name); |
| current_config_values_[key] = value; |
| @@ -168,6 +174,10 @@ class InputMethodLibraryImpl : public InputMethodLibrary, |
| pending_config_requests_[key] = value; |
| FlushImeConfig(); |
| } |
| + |
| + // Stop input method process if necessary. |
| + MaybeStartOrStopInputMethodProcesses( |
| + section, config_name, value, enable_auto_ime_shutdown_); |
| return pending_config_requests_.empty(); |
| } |
| @@ -187,7 +197,8 @@ class InputMethodLibraryImpl : public InputMethodLibrary, |
| void MaybeStartOrStopInputMethodProcesses( |
| const char* section, |
| const char* config_name, |
| - const ImeConfigValue& value) { |
| + const ImeConfigValue& value, |
| + bool auto_ime_shutdown) { |
| if (!strcmp(language_prefs::kGeneralSectionName, section) && |
|
satorux1
2011/01/05 06:52:31
You might want to change the parameters to const s
Yusuke Sato
2011/01/05 10:05:55
Done.
|
| !strcmp(language_prefs::kPreloadEnginesConfigName, config_name)) { |
| if (EnsureLoadedAndStarted()) { |
| @@ -197,7 +208,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, |
| value.string_list_value.size() == 1 && |
| value.string_list_value[0] == |
| chromeos::GetHardwareKeyboardLayoutName()) { |
| - if (enable_auto_ime_shutdown_) |
| + if (auto_ime_shutdown) |
| StopInputMethodProcesses(); |
| } else if (!defer_ime_startup_) { |
| StartInputMethodProcesses(); |
| @@ -304,7 +315,7 @@ class InputMethodLibraryImpl : public InputMethodLibrary, |
| const chromeos::InputMethodDescriptor& current_input_method) { |
| // The handler is called when the input method method change is |
| // notified via a DBus connection. Since the DBus notificatiosn are |
| - // handled in the UI thread, we can assume that this functionalways |
| + // handled in the UI thread, we can assume that this function always |
| // runs on the UI thread, but just in case. |
| if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
| LOG(ERROR) << "Not on UI thread"; |