| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/input_method/input_method_engine_ibus.h" | 5 #include "chrome/browser/chromeos/input_method/input_method_engine_ibus.h" |
| 6 | 6 |
| 7 #define XK_MISCELLANY | 7 #define XK_MISCELLANY |
| 8 #include <X11/keysymdef.h> | 8 #include <X11/keysymdef.h> |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
| 14 #include "base/strings/string_util.h" | 14 #include "base/strings/string_util.h" |
| 15 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 16 #include "chromeos/dbus/dbus_thread_manager.h" | 16 #include "chromeos/dbus/dbus_thread_manager.h" |
| 17 #include "chromeos/dbus/ibus/ibus_component.h" | |
| 18 #include "chromeos/dbus/ibus/ibus_engine_factory_service.h" | 17 #include "chromeos/dbus/ibus/ibus_engine_factory_service.h" |
| 19 #include "chromeos/dbus/ibus/ibus_engine_service.h" | 18 #include "chromeos/dbus/ibus/ibus_engine_service.h" |
| 20 #include "chromeos/dbus/ibus/ibus_text.h" | 19 #include "chromeos/dbus/ibus/ibus_text.h" |
| 21 #include "chromeos/ime/candidate_window.h" | 20 #include "chromeos/ime/candidate_window.h" |
| 22 #include "chromeos/ime/component_extension_ime_manager.h" | 21 #include "chromeos/ime/component_extension_ime_manager.h" |
| 23 #include "chromeos/ime/extension_ime_util.h" | 22 #include "chromeos/ime/extension_ime_util.h" |
| 24 #include "chromeos/ime/ibus_keymap.h" | 23 #include "chromeos/ime/ibus_keymap.h" |
| 25 #include "chromeos/ime/input_method_manager.h" | 24 #include "chromeos/ime/input_method_manager.h" |
| 26 #include "dbus/object_path.h" | 25 #include "dbus/object_path.h" |
| 27 | 26 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 42 InputMethodEngineIBus::InputMethodEngineIBus() | 41 InputMethodEngineIBus::InputMethodEngineIBus() |
| 43 : focused_(false), | 42 : focused_(false), |
| 44 active_(false), | 43 active_(false), |
| 45 context_id_(0), | 44 context_id_(0), |
| 46 next_context_id_(1), | 45 next_context_id_(1), |
| 47 aux_text_(new IBusText()), | 46 aux_text_(new IBusText()), |
| 48 aux_text_visible_(false), | 47 aux_text_visible_(false), |
| 49 observer_(NULL), | 48 observer_(NULL), |
| 50 preedit_text_(new IBusText()), | 49 preedit_text_(new IBusText()), |
| 51 preedit_cursor_(0), | 50 preedit_cursor_(0), |
| 52 component_(new IBusComponent()), | |
| 53 candidate_window_(new input_method::CandidateWindow()), | 51 candidate_window_(new input_method::CandidateWindow()), |
| 54 window_visible_(false), | 52 window_visible_(false), |
| 55 ibus_engine_factory_service_(IBusEngineFactoryService::Create()), | 53 ibus_engine_factory_service_(IBusEngineFactoryService::Create()), |
| 56 weak_ptr_factory_(this) {} | 54 weak_ptr_factory_(this) {} |
| 57 | 55 |
| 58 InputMethodEngineIBus::~InputMethodEngineIBus() { | 56 InputMethodEngineIBus::~InputMethodEngineIBus() { |
| 59 input_method::InputMethodManager::Get()->RemoveInputMethodExtension(ibus_id_); | 57 input_method::InputMethodManager::Get()->RemoveInputMethodExtension(ibus_id_); |
| 60 | 58 |
| 61 // Do not unset engine before removing input method extension, above function | 59 // Do not unset engine before removing input method extension, above function |
| 62 // may call reset function of engine object. | 60 // may call reset function of engine object. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 89 ComponentExtensionIMEManager* comp_ext_ime_manager | 87 ComponentExtensionIMEManager* comp_ext_ime_manager |
| 90 = manager->GetComponentExtensionIMEManager(); | 88 = manager->GetComponentExtensionIMEManager(); |
| 91 | 89 |
| 92 if (comp_ext_ime_manager->IsInitialized() && | 90 if (comp_ext_ime_manager->IsInitialized() && |
| 93 comp_ext_ime_manager->IsWhitelistedExtension(extension_id)) { | 91 comp_ext_ime_manager->IsWhitelistedExtension(extension_id)) { |
| 94 ibus_id_ = comp_ext_ime_manager->GetId(extension_id, engine_id); | 92 ibus_id_ = comp_ext_ime_manager->GetId(extension_id, engine_id); |
| 95 } else { | 93 } else { |
| 96 ibus_id_ = extension_ime_util::GetInputMethodID(extension_id, engine_id); | 94 ibus_id_ = extension_ime_util::GetInputMethodID(extension_id, engine_id); |
| 97 } | 95 } |
| 98 | 96 |
| 99 component_.reset(new IBusComponent()); | |
| 100 component_->set_name(std::string(kEngineBusPrefix) + std::string(engine_id)); | |
| 101 component_->set_description(description); | |
| 102 component_->set_author(engine_name); | |
| 103 | |
| 104 // TODO(nona): Remove IBusComponent once ibus is gone. | |
| 105 IBusComponent::EngineDescription engine_desc; | |
| 106 engine_desc.engine_id = ibus_id_; | |
| 107 engine_desc.display_name = description; | |
| 108 engine_desc.description = description; | |
| 109 engine_desc.language_code = (languages.empty()) ? "" : languages[0]; | |
| 110 engine_desc.author = ibus_id_; | |
| 111 | |
| 112 component_->mutable_engine_description()->push_back(engine_desc); | |
| 113 manager->AddInputMethodExtension(ibus_id_, engine_name, layouts, languages, | 97 manager->AddInputMethodExtension(ibus_id_, engine_name, layouts, languages, |
| 114 options_page, input_view, this); | 98 options_page, input_view, this); |
| 115 RegisterComponent(); | 99 RegisterComponent(); |
| 116 } | 100 } |
| 117 | 101 |
| 118 void InputMethodEngineIBus::StartIme() { | 102 void InputMethodEngineIBus::StartIme() { |
| 119 input_method::InputMethodManager* manager = | 103 input_method::InputMethodManager* manager = |
| 120 input_method::InputMethodManager::Get(); | 104 input_method::InputMethodManager::Get(); |
| 121 if (manager && ibus_id_ == manager->GetCurrentInputMethod().id()) | 105 if (manager && ibus_id_ == manager->GetCurrentInputMethod().id()) |
| 122 Enable(); | 106 Enable(); |
| (...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 606 const IBusEngineFactoryService::CreateEngineResponseSender& sender) { | 590 const IBusEngineFactoryService::CreateEngineResponseSender& sender) { |
| 607 GetCurrentService()->UnsetEngine(this); | 591 GetCurrentService()->UnsetEngine(this); |
| 608 ibus_engine_service_.reset(); | 592 ibus_engine_service_.reset(); |
| 609 object_path_ = ibus_engine_factory_service_->GenerateUniqueObjectPath(); | 593 object_path_ = ibus_engine_factory_service_->GenerateUniqueObjectPath(); |
| 610 | 594 |
| 611 GetCurrentService()->SetEngine(this); | 595 GetCurrentService()->SetEngine(this); |
| 612 sender.Run(object_path_); | 596 sender.Run(object_path_); |
| 613 } | 597 } |
| 614 | 598 |
| 615 } // namespace chromeos | 599 } // namespace chromeos |
| OLD | NEW |