| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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.h" | 5 #include "chrome/browser/chromeos/input_method/input_method_engine.h" |
| 6 | 6 |
| 7 #define XK_MISCELLANY | 7 #define XK_MISCELLANY |
| 8 #include <X11/keysymdef.h> | 8 #include <X11/keysymdef.h> |
| 9 #include <X11/X.h> | 9 #include <X11/X.h> |
| 10 #include <X11/Xlib.h> | 10 #include <X11/Xlib.h> |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 active_(false), | 58 active_(false), |
| 59 context_id_(0), | 59 context_id_(0), |
| 60 next_context_id_(1), | 60 next_context_id_(1), |
| 61 observer_(NULL), | 61 observer_(NULL), |
| 62 preedit_text_(new IBusText()), | 62 preedit_text_(new IBusText()), |
| 63 preedit_cursor_(0), | 63 preedit_cursor_(0), |
| 64 candidate_window_(new input_method::CandidateWindow()), | 64 candidate_window_(new input_method::CandidateWindow()), |
| 65 window_visible_(false) {} | 65 window_visible_(false) {} |
| 66 | 66 |
| 67 InputMethodEngine::~InputMethodEngine() { | 67 InputMethodEngine::~InputMethodEngine() { |
| 68 input_method::InputMethodManager::Get()->RemoveInputMethodExtension(ibus_id_); | 68 input_method::InputMethodManager::Get()->RemoveInputMethodExtension(imm_id_); |
| 69 } | 69 } |
| 70 | 70 |
| 71 void InputMethodEngine::Initialize( | 71 void InputMethodEngine::Initialize( |
| 72 InputMethodEngineInterface::Observer* observer, | 72 InputMethodEngineInterface::Observer* observer, |
| 73 const char* engine_name, | 73 const char* engine_name, |
| 74 const char* extension_id, | 74 const char* extension_id, |
| 75 const char* engine_id, | 75 const char* engine_id, |
| 76 const std::vector<std::string>& languages, | 76 const std::vector<std::string>& languages, |
| 77 const std::vector<std::string>& layouts, | 77 const std::vector<std::string>& layouts, |
| 78 const GURL& options_page, | 78 const GURL& options_page, |
| 79 const GURL& input_view) { | 79 const GURL& input_view) { |
| 80 DCHECK(observer) << "Observer must not be null."; | 80 DCHECK(observer) << "Observer must not be null."; |
| 81 | 81 |
| 82 // TODO(komatsu): It is probably better to set observer out of Initialize. |
| 82 observer_ = observer; | 83 observer_ = observer; |
| 83 engine_id_ = engine_id; | 84 engine_id_ = engine_id; |
| 84 | 85 |
| 85 input_method::InputMethodManager* manager = | 86 input_method::InputMethodManager* manager = |
| 86 input_method::InputMethodManager::Get(); | 87 input_method::InputMethodManager::Get(); |
| 87 ComponentExtensionIMEManager* comp_ext_ime_manager | 88 ComponentExtensionIMEManager* comp_ext_ime_manager = |
| 88 = manager->GetComponentExtensionIMEManager(); | 89 manager->GetComponentExtensionIMEManager(); |
| 89 | 90 |
| 90 if (comp_ext_ime_manager->IsInitialized() && | 91 if (comp_ext_ime_manager->IsInitialized() && |
| 91 comp_ext_ime_manager->IsWhitelistedExtension(extension_id)) { | 92 comp_ext_ime_manager->IsWhitelistedExtension(extension_id)) { |
| 92 ibus_id_ = comp_ext_ime_manager->GetId(extension_id, engine_id); | 93 imm_id_ = comp_ext_ime_manager->GetId(extension_id, engine_id); |
| 93 } else { | 94 } else { |
| 94 ibus_id_ = extension_ime_util::GetInputMethodID(extension_id, engine_id); | 95 imm_id_ = extension_ime_util::GetInputMethodID(extension_id, engine_id); |
| 95 } | 96 } |
| 96 | 97 |
| 97 input_view_url_ = input_view; | 98 input_view_url_ = input_view; |
| 99 descriptor_ = input_method::InputMethodDescriptor(imm_id_, |
| 100 engine_name, |
| 101 layouts, |
| 102 languages, |
| 103 false, // is_login_keyboard |
| 104 options_page, |
| 105 input_view); |
| 98 | 106 |
| 99 manager->AddInputMethodExtension(ibus_id_, engine_name, layouts, languages, | 107 // TODO(komatsu): It is probably better to call AddInputMethodExtension |
| 100 options_page, input_view, this); | 108 // out of Initialize. |
| 109 manager->AddInputMethodExtension(imm_id_, this); |
| 110 } |
| 111 |
| 112 const input_method::InputMethodDescriptor& InputMethodEngine::GetDescriptor() |
| 113 const { |
| 114 return descriptor_; |
| 101 } | 115 } |
| 102 | 116 |
| 103 void InputMethodEngine::StartIme() { | 117 void InputMethodEngine::StartIme() { |
| 104 input_method::InputMethodManager* manager = | 118 input_method::InputMethodManager* manager = |
| 105 input_method::InputMethodManager::Get(); | 119 input_method::InputMethodManager::Get(); |
| 106 if (manager && ibus_id_ == manager->GetCurrentInputMethod().id()) | 120 if (manager && imm_id_ == manager->GetCurrentInputMethod().id()) |
| 107 Enable(); | 121 Enable(); |
| 108 } | 122 } |
| 109 | 123 |
| 110 bool InputMethodEngine::SetComposition( | 124 bool InputMethodEngine::SetComposition( |
| 111 int context_id, | 125 int context_id, |
| 112 const char* text, | 126 const char* text, |
| 113 int selection_start, | 127 int selection_start, |
| 114 int selection_end, | 128 int selection_end, |
| 115 int cursor, | 129 int cursor, |
| 116 const std::vector<SegmentInfo>& segments, | 130 const std::vector<SegmentInfo>& segments, |
| (...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 600 // TODO(nona): Implement it. | 614 // TODO(nona): Implement it. |
| 601 break; | 615 break; |
| 602 } | 616 } |
| 603 } | 617 } |
| 604 } | 618 } |
| 605 | 619 |
| 606 // TODO(nona): Support item.children. | 620 // TODO(nona): Support item.children. |
| 607 } | 621 } |
| 608 | 622 |
| 609 } // namespace chromeos | 623 } // namespace chromeos |
| OLD | NEW |