Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Unified Diff: chrome/browser/chromeos/input_method/input_method_manager.cc

Issue 8761018: Start the IME Daemon when adding an extension IME (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Pre-submit Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/input_method/input_method_manager.cc
diff --git a/chrome/browser/chromeos/input_method/input_method_manager.cc b/chrome/browser/chromeos/input_method/input_method_manager.cc
index 8f014f8ce3377d7aef23086d9c270ae11980ad2e..2eb655af231ea470cb0770102378fa0ca7a543a0 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager.cc
+++ b/chrome/browser/chromeos/input_method/input_method_manager.cc
@@ -384,8 +384,11 @@ class InputMethodManagerImpl : public HotkeyManager::Observer,
FlushImeConfig();
}
- // Stop input method process if necessary.
- MaybeStopInputMethodDaemon(section, config_name, value);
+ if (section == language_prefs::kGeneralSectionName &&
+ config_name == language_prefs::kPreloadEnginesConfigName) {
+ // Stop input method process if necessary.
+ MaybeStopInputMethodDaemon();
+ }
// Change the current keyboard layout if necessary.
MaybeChangeCurrentKeyboardLayout(section, config_name, value);
return pending_config_requests_.empty();
@@ -403,6 +406,9 @@ class InputMethodManagerImpl : public HotkeyManager::Observer,
active_input_method_ids_.push_back(id);
// TODO(yusukes): Call UpdateInputMethodSpecificHotkeys() here once IME
// extension supports hotkeys.
+
+ // Ensure that the input method daemon is running.
+ StartInputMethodDaemon();
}
virtual void RemoveActiveIme(const std::string& id) {
@@ -416,6 +422,9 @@ class InputMethodManagerImpl : public HotkeyManager::Observer,
extra_input_method_ids_.erase(id);
// TODO(yusukes): Call UpdateInputMethodSpecificHotkeys() here once IME
// extension supports hotkeys.
+
+ // Stop the IME daemon if needed.
+ MaybeStopInputMethodDaemon();
}
virtual bool GetExtraDescriptor(const std::string& id,
@@ -588,12 +597,9 @@ class InputMethodManagerImpl : public HotkeyManager::Observer,
// Returns true if the given input method config value is a string list
// that only contains an input method ID of a keyboard layout.
- bool ContainOnlyKeyboardLayout(const ImeConfigValue& value) {
- if (value.type != ImeConfigValue::kValueTypeStringList) {
- return false;
- }
- for (size_t i = 0; i < value.string_list_value.size(); ++i) {
- if (!InputMethodUtil::IsKeyboardLayout(value.string_list_value[i])) {
+ bool ContainOnlyKeyboardLayout(const std::vector<std::string>& value) {
+ for (size_t i = 0; i < value.size(); ++i) {
+ if (!InputMethodUtil::IsKeyboardLayout(value[i])) {
return false;
}
}
@@ -615,7 +621,8 @@ class InputMethodManagerImpl : public HotkeyManager::Observer,
// If there is only one input method which is a keyboard layout,
// we don't start the input method processes. When
// |defer_ime_startup_| is true, we don't start it either.
- if (ContainOnlyKeyboardLayout(value) || defer_ime_startup_) {
+ if (ContainOnlyKeyboardLayout(value.string_list_value) ||
+ defer_ime_startup_) {
// Do not start the input method daemon.
return;
}
@@ -659,21 +666,17 @@ class InputMethodManagerImpl : public HotkeyManager::Observer,
// Stops input method daemon based on the |enable_auto_ime_shutdown_| flag
// and input method configuration being updated.
// See also: MaybeStartInputMethodDaemon().
- void MaybeStopInputMethodDaemon(const std::string& section,
- const std::string& config_name,
- const ImeConfigValue& value) {
+ void MaybeStopInputMethodDaemon() {
// If there is only one input method which is a keyboard layout,
// and |enable_auto_ime_shutdown_| is true, we'll stop the input
// method daemon.
- if (section == language_prefs::kGeneralSectionName &&
- config_name == language_prefs::kPreloadEnginesConfigName &&
- ContainOnlyKeyboardLayout(value) &&
+ if (ContainOnlyKeyboardLayout(active_input_method_ids_) &&
enable_auto_ime_shutdown_) {
if (StopInputMethodDaemon()) {
// The process is killed. Change the current keyboard layout.
// We shouldn't use SetCurrentKeyboardLayoutByName() here. See
// comments at ChangeCurrentInputMethod() for details.
- ChangeCurrentInputMethodFromId(value.string_list_value[0]);
+ ChangeCurrentInputMethodFromId(active_input_method_ids_[0]);
}
}
}
« no previous file with comments | « chrome/browser/chromeos/input_method/ibus_engine_controller.cc ('k') | chrome/browser/extensions/extension_input_ime_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698