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

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

Issue 433163005: Refactoring for InputMethodEngine and InputMethodEventRouter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: error tolerance for missing background page for key events. 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_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));

Powered by Google App Engine
This is Rietveld 408576698