Index: ui/base/ime/input_method_android.cc |
diff --git a/ui/base/ime/input_method_android.cc b/ui/base/ime/input_method_android.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c3e450138a44855de65c5c1e44fcc2c8daced3f6 |
--- /dev/null |
+++ b/ui/base/ime/input_method_android.cc |
@@ -0,0 +1,72 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "ui/base/ime/input_method_android.h" |
+ |
+#include "ui/base/ime/text_input_client.h" |
+#include "ui/events/event.h" |
+ |
+// TODO(bshe): This is currently very similar to InputMethodMUS. Consider unify |
+// them in the furture if the two have reasonable similarity. |
+ |
+namespace ui { |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// InputMethodAndroid, public: |
+ |
+InputMethodAndroid::InputMethodAndroid( |
+ internal::InputMethodDelegate* delegate) { |
+ SetDelegate(delegate); |
+} |
+ |
+InputMethodAndroid::~InputMethodAndroid() {} |
+ |
+bool InputMethodAndroid::OnUntranslatedIMEMessage( |
+ const base::NativeEvent& event, |
+ NativeEventResult* result) { |
+ return false; |
+} |
+ |
+void InputMethodAndroid::DispatchKeyEvent(ui::KeyEvent* event) { |
+ DCHECK(event->type() == ui::ET_KEY_PRESSED || |
+ event->type() == ui::ET_KEY_RELEASED); |
+ |
+ // If no text input client, do nothing. |
+ if (!GetTextInputClient()) { |
+ ignore_result(DispatchKeyEventPostIME(event)); |
+ return; |
+ } |
+ |
+ // Here is where we change the differ from our base class's logic. Instead of |
+ // always dispatching a key down event, and then sending a synthesized |
+ // character event, we instead check to see if this is a character event and |
+ // send out the key if it is. (We fallback to normal dispatch if it isn't.) |
+ if (event->is_char()) { |
Shu Chen
2015/10/21 01:54:23
Are you sure this is the case for Android? I suppo
bshe
2015/10/21 14:20:25
This is basically a copy of InputMethodMUS. In aur
|
+ GetTextInputClient()->InsertChar(*event); |
+ event->StopPropagation(); |
+ return; |
+ } |
+ |
+ ignore_result(DispatchKeyEventPostIME(event)); |
+} |
+ |
+void InputMethodAndroid::OnCaretBoundsChanged( |
+ const ui::TextInputClient* client) { |
+} |
+ |
+void InputMethodAndroid::CancelComposition( |
+ const ui::TextInputClient* client) { |
+} |
+ |
+void InputMethodAndroid::OnInputLocaleChanged() {} |
+ |
+std::string InputMethodAndroid::GetInputLocale() { |
+ return ""; |
+} |
+ |
+bool InputMethodAndroid::IsCandidatePopupOpen() const { |
+ return false; |
+} |
+ |
+} // namespace ui |