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

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

Issue 433163005: Refactoring for InputMethodEngine and InputMethodEventRouter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits. Created 6 years, 4 months 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_impl.cc
diff --git a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
index 8db20e0df9a396ec26bb20e81aab5b8a57aeb807..5865d1a04e666d2832bb8b6325d7bac6a24fb682 100644
--- a/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
+++ b/chrome/browser/chromeos/input_method/input_method_manager_impl.cc
@@ -338,18 +338,15 @@ bool InputMethodManagerImpl::ChangeInputMethodInternal(
engine->Disable();
// Configure the next engine handler.
- if (InputMethodUtil::IsKeyboardLayout(input_method_id_to_switch) &&
- !extension_ime_util::IsKeyboardLayoutExtension(
- input_method_id_to_switch)) {
- IMEBridge::Get()->SetCurrentEngineHandler(NULL);
- } else {
- IMEEngineHandlerInterface* next_engine =
- profile_engine_map_[GetProfile()][input_method_id_to_switch];
- if (next_engine) {
- IMEBridge::Get()->SetCurrentEngineHandler(next_engine);
- next_engine->Enable();
- }
- }
+ std::string extension_id =
+ extension_ime_util::GetExtensionIDFromInputMethodID(
+ input_method_id_to_switch);
+ std::string engine_id = extension_ime_util::GetEngineIDByInputMethodID(
+ input_method_id_to_switch);
+ engine = engine_map_[extension_id];
+ IMEBridge::Get()->SetCurrentEngineHandler(engine);
+ if (engine)
+ engine->Enable(engine_id);
// TODO(komatsu): Check if it is necessary to perform the above routine
// when the current input method is equal to |input_method_id_to_swich|.
@@ -433,56 +430,67 @@ void InputMethodManagerImpl::ActivateInputMethodMenuItem(
}
void InputMethodManagerImpl::AddInputMethodExtension(
- const std::string& id,
+ const std::string& extension_id,
+ const InputMethodDescriptors& descriptors,
InputMethodEngineInterface* engine) {
if (state_ == STATE_TERMINATING)
return;
DCHECK(engine);
- profile_engine_map_[GetProfile()][id] = engine;
+ engine_map_[extension_id] = engine;
- if (id == current_input_method_.id()) {
+ if (extension_id == extension_ime_util::GetExtensionIDFromInputMethodID(
+ current_input_method_.id())) {
IMEBridge::Get()->SetCurrentEngineHandler(engine);
- engine->Enable();
- }
-
- if (extension_ime_util::IsComponentExtensionIME(id))
- return;
-
- CHECK(extension_ime_util::IsExtensionIME(id))
- << id << "is not a valid extension input method ID";
-
- const InputMethodDescriptor& descriptor = engine->GetDescriptor();
- extra_input_methods_[id] = descriptor;
-
- if (Contains(enabled_extension_imes_, id)) {
- if (!Contains(active_input_method_ids_, id)) {
- active_input_method_ids_.push_back(id);
- } else {
- DVLOG(1) << "AddInputMethodExtension: alread added: "
- << id << ", " << descriptor.name();
+ engine->Enable(extension_ime_util::GetEngineIDByInputMethodID(
+ current_input_method_.id()));
+ }
+
+ bool contain = false;
+ for (size_t i = 0; i < descriptors.size(); i++) {
+ const InputMethodDescriptor& descriptor = descriptors[i];
+ const std::string& id = descriptor.id();
+ extra_input_methods_[id] = descriptor;
+ if (Contains(enabled_extension_imes_, id)) {
+ if (!Contains(active_input_method_ids_, id)) {
+ active_input_method_ids_.push_back(id);
+ } else {
+ DVLOG(1) << "AddInputMethodExtension: alread added: "
Seigo Nonaka 2014/08/04 23:29:47 nit: /alread/already/ I'm sorry this is not your m
Shu Chen 2014/08/05 01:23:09 Done.
+ << id << ", " << descriptor.name();
+ }
+ contain = true;
}
+ }
- // Ensure that the input method daemon is running.
+ // Ensure that the input method daemon is running.
+ if (contain)
MaybeInitializeCandidateWindowController();
- }
}
-void InputMethodManagerImpl::RemoveInputMethodExtension(const std::string& id) {
- if (!extension_ime_util::IsExtensionIME(id))
- DVLOG(1) << id << " is not a valid extension input method ID.";
-
- std::vector<std::string>::iterator i = std::find(
- active_input_method_ids_.begin(), active_input_method_ids_.end(), id);
- if (i != active_input_method_ids_.end())
- active_input_method_ids_.erase(i);
- extra_input_methods_.erase(id);
+void InputMethodManagerImpl::RemoveInputMethodExtension(
Shu Chen 2014/08/04 15:59:31 I'm not sure whether the below code to remove thin
Seigo Nonaka 2014/08/04 23:29:47 Maybe true. could you fix? On 2014/08/04 15:59:3
Shu Chen 2014/08/05 01:23:09 Done.
+ const std::string& extension_id) {
+ for (std::vector<std::string>::iterator i = active_input_method_ids_.begin();
+ i != active_input_method_ids_.end();) {
+ if (extension_id ==
+ extension_ime_util::GetExtensionIDFromInputMethodID(*i))
+ active_input_method_ids_.erase(i);
+ else
+ ++i;
+ }
+ for (std::map<std::string, InputMethodDescriptor>::iterator i =
+ extra_input_methods_.begin();
+ i != extra_input_methods_.end();) {
+ if (extension_id ==
+ extension_ime_util::GetExtensionIDFromInputMethodID(i->first))
+ extra_input_methods_.erase(i++);
+ else
+ i++;
+ }
- EngineMap& engine_map = profile_engine_map_[GetProfile()];
- if (IMEBridge::Get()->GetCurrentEngineHandler() == engine_map[id])
+ if (IMEBridge::Get()->GetCurrentEngineHandler() == engine_map_[extension_id])
IMEBridge::Get()->SetCurrentEngineHandler(NULL);
- engine_map.erase(id);
+ engine_map_.erase(extension_id);
// No need to switch input method when terminating.
if (state_ != STATE_TERMINATING) {

Powered by Google App Engine
This is Rietveld 408576698