Chromium Code Reviews| Index: chrome/browser/chromeos/input_method/input_method_engine.cc |
| diff --git a/chrome/browser/chromeos/input_method/input_method_engine.cc b/chrome/browser/chromeos/input_method/input_method_engine.cc |
| index 271f095c7410c62c1910f17a0549ddd32cab1be0..087974b7d9f1e8a60f39272400fb51e3a027c9b2 100644 |
| --- a/chrome/browser/chromeos/input_method/input_method_engine.cc |
| +++ b/chrome/browser/chromeos/input_method/input_method_engine.cc |
| @@ -112,90 +112,41 @@ void GetExtensionKeyboardEventFromKeyEvent( |
| InputMethodEngine::InputMethodEngine() |
| : current_input_type_(ui::TEXT_INPUT_TYPE_NONE), |
| - active_(false), |
| context_id_(0), |
| next_context_id_(1), |
| composition_text_(new CompositionText()), |
| composition_cursor_(0), |
| candidate_window_(new ui::CandidateWindow()), |
| window_visible_(false), |
| - sent_key_event_(NULL), |
| - profile_(NULL) { |
| + sent_key_event_(NULL) { |
| } |
| InputMethodEngine::~InputMethodEngine() { |
| if (start_time_.ToInternalValue()) |
| RecordHistogram("WorkingTime", (end_time_ - start_time_).InSeconds()); |
| - input_method::InputMethodManager::Get()->RemoveInputMethodExtension(profile_, |
| - imm_id_); |
| } |
| void InputMethodEngine::Initialize( |
| - Profile* profile, |
| scoped_ptr<InputMethodEngineInterface::Observer> observer, |
| - const char* engine_name, |
| - const char* extension_id, |
| - const char* engine_id, |
| - const std::vector<std::string>& languages, |
| - const std::vector<std::string>& layouts, |
| - const GURL& options_page, |
| - const GURL& input_view) { |
| + const char* extension_id) { |
| DCHECK(observer) << "Observer must not be null."; |
| - profile_ = profile; |
| - |
| // TODO(komatsu): It is probably better to set observer out of Initialize. |
| observer_ = observer.Pass(); |
| - engine_id_ = engine_id; |
| extension_id_ = extension_id; |
| - |
| - input_method::InputMethodManager* manager = |
| - input_method::InputMethodManager::Get(); |
| - ComponentExtensionIMEManager* comp_ext_ime_manager = |
| - manager->GetComponentExtensionIMEManager(); |
| - |
| - if (comp_ext_ime_manager->IsWhitelistedExtension(extension_id)) { |
| - imm_id_ = comp_ext_ime_manager->GetId(extension_id, engine_id); |
| - } else { |
| - imm_id_ = extension_ime_util::GetInputMethodID(extension_id, engine_id); |
| - } |
| - |
| - input_view_url_ = input_view; |
| - descriptor_ = input_method::InputMethodDescriptor( |
| - imm_id_, |
| - engine_name, |
| - std::string(), // TODO(uekawa): Set short name. |
| - layouts, |
| - languages, |
| - extension_ime_util::IsKeyboardLayoutExtension( |
| - imm_id_), // is_login_keyboard |
| - options_page, |
| - input_view); |
| - |
| - // TODO(komatsu): It is probably better to call AddInputMethodExtension |
| - // out of Initialize. |
| - manager->AddInputMethodExtension(profile, imm_id_, this); |
| -} |
| - |
| -const input_method::InputMethodDescriptor& InputMethodEngine::GetDescriptor() |
| - const { |
| - return descriptor_; |
| } |
| void InputMethodEngine::RecordHistogram(const char* name, int count) { |
| - std::string histo_name = |
| - base::StringPrintf("InputMethod.%s.%s", name, engine_id_.c_str()); |
| + std::string histo_name = base::StringPrintf( |
| + "InputMethod.%s.%s", name, active_component_id_.c_str()); |
| base::HistogramBase* counter = base::Histogram::FactoryGet( |
| histo_name, 0, 1000000, 50, base::HistogramBase::kNoFlags); |
| if (counter) |
| counter->Add(count); |
| } |
| -void InputMethodEngine::NotifyImeReady() { |
| - input_method::InputMethodManager* manager = |
| - input_method::InputMethodManager::Get(); |
| - if (manager && imm_id_ == manager->GetCurrentInputMethod().id()) |
| - Enable(); |
| +const std::string& InputMethodEngine::GetActiveComponentId() const { |
| + return active_component_id_; |
| } |
| bool InputMethodEngine::SetComposition( |
| @@ -206,7 +157,7 @@ bool InputMethodEngine::SetComposition( |
| int cursor, |
| const std::vector<SegmentInfo>& segments, |
| std::string* error) { |
| - if (!active_) { |
| + if (!IsActive()) { |
| *error = kErrorNotActive; |
| return false; |
| } |
| @@ -250,7 +201,7 @@ bool InputMethodEngine::SetComposition( |
| bool InputMethodEngine::ClearComposition(int context_id, |
| std::string* error) { |
| - if (!active_) { |
| + if (!IsActive()) { |
| *error = kErrorNotActive; |
| return false; |
| } |
| @@ -267,7 +218,7 @@ bool InputMethodEngine::ClearComposition(int context_id, |
| bool InputMethodEngine::CommitText(int context_id, const char* text, |
| std::string* error) { |
| - if (!active_) { |
| + if (!IsActive()) { |
| // TODO: Commit the text anyways. |
| *error = kErrorNotActive; |
| return false; |
| @@ -292,7 +243,7 @@ bool InputMethodEngine::CommitText(int context_id, const char* text, |
| bool InputMethodEngine::SendKeyEvents( |
| int context_id, |
| const std::vector<KeyboardEvent>& events) { |
| - if (!active_) { |
| + if (!IsActive()) { |
| return false; |
| } |
| // context_id == 0, means sending key events to non-input field. |
| @@ -361,7 +312,7 @@ void InputMethodEngine::SetCandidateWindowProperty( |
| candidate_window_->SetProperty(dest_property); |
| candidate_window_property_ = property; |
| - if (active_) { |
| + if (IsActive()) { |
| IMECandidateWindowHandlerInterface* cw_handler = |
| IMEBridge::Get()->GetCandidateWindowHandler(); |
| if (cw_handler) |
| @@ -371,7 +322,7 @@ void InputMethodEngine::SetCandidateWindowProperty( |
| bool InputMethodEngine::SetCandidateWindowVisible(bool visible, |
| std::string* error) { |
| - if (!active_) { |
| + if (!IsActive()) { |
| *error = kErrorNotActive; |
| return false; |
| } |
| @@ -388,7 +339,7 @@ bool InputMethodEngine::SetCandidates( |
| int context_id, |
| const std::vector<Candidate>& candidates, |
| std::string* error) { |
| - if (!active_) { |
| + if (!IsActive()) { |
| *error = kErrorNotActive; |
| return false; |
| } |
| @@ -416,7 +367,7 @@ bool InputMethodEngine::SetCandidates( |
| candidate_window_->mutable_candidates()->push_back(entry); |
| } |
| - if (active_) { |
| + if (IsActive()) { |
| IMECandidateWindowHandlerInterface* cw_handler = |
| IMEBridge::Get()->GetCandidateWindowHandler(); |
| if (cw_handler) |
| @@ -427,7 +378,7 @@ bool InputMethodEngine::SetCandidates( |
| bool InputMethodEngine::SetCursorPosition(int context_id, int candidate_id, |
| std::string* error) { |
| - if (!active_) { |
| + if (!IsActive()) { |
| *error = kErrorNotActive; |
| return false; |
| } |
| @@ -457,7 +408,7 @@ bool InputMethodEngine::SetMenuItems(const std::vector<MenuItem>& items) { |
| bool InputMethodEngine::UpdateMenuItems( |
| const std::vector<MenuItem>& items) { |
| - if (!active_) |
| + if (!IsActive()) |
| return false; |
| ash::ime::InputMethodMenuItemList menu_item_list; |
| @@ -475,14 +426,14 @@ bool InputMethodEngine::UpdateMenuItems( |
| } |
| bool InputMethodEngine::IsActive() const { |
| - return active_; |
| + return !active_component_id_.empty(); |
| } |
| bool InputMethodEngine::DeleteSurroundingText(int context_id, |
| int offset, |
| size_t number_of_chars, |
| std::string* error) { |
| - if (!active_) { |
| + if (!IsActive()) { |
| *error = kErrorNotActive; |
| return false; |
| } |
| @@ -513,9 +464,10 @@ void InputMethodEngine::HideInputView() { |
| } |
| } |
| -void InputMethodEngine::EnableInputView(bool enabled) { |
| - const GURL& url = enabled ? input_view_url_ : GURL(); |
| - keyboard::SetOverrideContentUrl(url); |
| +void InputMethodEngine::EnableInputView() { |
| + keyboard::SetOverrideContentUrl(input_method::InputMethodManager::Get() |
| + ->GetCurrentInputMethod() |
| + .input_view_url()); |
| keyboard::KeyboardController* keyboard_controller = |
| keyboard::KeyboardController::GetInstance(); |
| if (keyboard_controller) |
| @@ -526,7 +478,7 @@ void InputMethodEngine::FocusIn( |
| const IMEEngineHandlerInterface::InputContext& input_context) { |
| current_input_type_ = input_context.type; |
| - if (!active_ || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE) |
| + if (!IsActive() || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE) |
| return; |
| context_id_ = next_context_id_; |
| @@ -562,7 +514,7 @@ void InputMethodEngine::FocusIn( |
| } |
| void InputMethodEngine::FocusOut() { |
| - if (!active_ || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE) |
| + if (!IsActive() || current_input_type_ == ui::TEXT_INPUT_TYPE_NONE) |
| return; |
| current_input_type_ = ui::TEXT_INPUT_TYPE_NONE; |
| @@ -572,13 +524,14 @@ void InputMethodEngine::FocusOut() { |
| observer_->OnBlur(context_id); |
| } |
| -void InputMethodEngine::Enable() { |
| - active_ = true; |
| - observer_->OnActivate(engine_id_); |
| +void InputMethodEngine::Enable(const std::string& component_id) { |
| + DCHECK(!component_id.empty()); |
| + active_component_id_ = component_id; |
| + observer_->OnActivate(component_id); |
| current_input_type_ = IMEBridge::Get()->GetCurrentTextInputType(); |
| FocusIn(IMEEngineHandlerInterface::InputContext( |
| current_input_type_, ui::TEXT_INPUT_MODE_DEFAULT)); |
| - EnableInputView(true); |
| + EnableInputView(); |
| start_time_ = base::Time(); |
| end_time_ = base::Time(); |
| @@ -586,19 +539,19 @@ void InputMethodEngine::Enable() { |
| } |
| void InputMethodEngine::Disable() { |
| - active_ = false; |
| - observer_->OnDeactivated(engine_id_); |
| + active_component_id_ = ""; |
|
Yuki
2014/08/06 04:42:23
active_component_id_.clear() could be slightly bet
Shu Chen
2014/08/06 05:45:03
Done.
|
| + observer_->OnDeactivated(active_component_id_); |
| if (start_time_.ToInternalValue()) |
| RecordHistogram("WorkingTime", (end_time_ - start_time_).InSeconds()); |
| } |
| void InputMethodEngine::PropertyActivate(const std::string& property_name) { |
| - observer_->OnMenuItemActivated(engine_id_, property_name); |
| + observer_->OnMenuItemActivated(active_component_id_, property_name); |
| } |
| void InputMethodEngine::Reset() { |
| - observer_->OnReset(engine_id_); |
| + observer_->OnReset(active_component_id_); |
| } |
| void InputMethodEngine::ProcessKeyEvent( |
| @@ -619,7 +572,7 @@ void InputMethodEngine::ProcessKeyEvent( |
| ext_event.extension_id = extension_id_; |
| observer_->OnKeyEvent( |
| - engine_id_, |
| + active_component_id_, |
| ext_event, |
| reinterpret_cast<input_method::KeyEventHandle*>(handler)); |
| } |
| @@ -631,13 +584,13 @@ void InputMethodEngine::CandidateClicked(uint32 index) { |
| // Only left button click is supported at this moment. |
| observer_->OnCandidateClicked( |
| - engine_id_, candidate_ids_.at(index), MOUSE_BUTTON_LEFT); |
| + active_component_id_, candidate_ids_.at(index), MOUSE_BUTTON_LEFT); |
| } |
| void InputMethodEngine::SetSurroundingText(const std::string& text, |
| uint32 cursor_pos, |
| uint32 anchor_pos) { |
| - observer_->OnSurroundingTextChanged(engine_id_, |
| + observer_->OnSurroundingTextChanged(active_component_id_, |
| text, |
| static_cast<int>(cursor_pos), |
| static_cast<int>(anchor_pos)); |