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

Unified Diff: ui/base/ime/input_method_auralinux.h

Issue 1068093002: Refactoring for InputMethodAuraLinux. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add more tests and support verify event sequence. Created 5 years, 8 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: ui/base/ime/input_method_auralinux.h
diff --git a/ui/base/ime/input_method_auralinux.h b/ui/base/ime/input_method_auralinux.h
index fbba625f8342b31b211b145df1f3dcbbbaa52642..c1076b6d218e81c36cc3ef4e684ffcbb7605f059 100644
--- a/ui/base/ime/input_method_auralinux.h
+++ b/ui/base/ime/input_method_auralinux.h
@@ -6,6 +6,7 @@
#define UI_BASE_IME_INPUT_METHOD_AURALINUX_H_
#include "base/memory/scoped_ptr.h"
+#include "ui/base/ime/composition_text.h"
#include "ui/base/ime/input_method_base.h"
#include "ui/base/ime/linux/linux_input_method_context.h"
@@ -21,6 +22,8 @@ class UI_BASE_IME_EXPORT InputMethodAuraLinux
explicit InputMethodAuraLinux(internal::InputMethodDelegate* delegate);
~InputMethodAuraLinux() override;
+ LinuxInputMethodContext* GetContextForTesting(bool is_simple);
+
// Overriden from InputMethod.
void Init(bool focused) override;
bool OnUntranslatedIMEMessage(const base::NativeEvent& event,
@@ -33,47 +36,51 @@ class UI_BASE_IME_EXPORT InputMethodAuraLinux
std::string GetInputLocale() override;
bool IsActive() override;
bool IsCandidatePopupOpen() const override;
+ void OnFocus() override;
+ void OnBlur() override;
// Overriden from ui::LinuxInputMethodContextDelegate
void OnCommit(const base::string16& text) override;
void OnPreeditChanged(const CompositionText& composition_text) override;
void OnPreeditEnd() override;
- void OnPreeditStart() override;
+ void OnPreeditStart() override{};
protected:
// Overridden from InputMethodBase.
+ void OnWillChangeFocusedClient(TextInputClient* focused_before,
+ TextInputClient* focused) override;
void OnDidChangeFocusedClient(TextInputClient* focused_before,
TextInputClient* focused) override;
private:
- // Allows to fire a VKEY_PROCESSKEY key event.
- void AllowToFireProcessKey(const ui::KeyEvent& event);
- // Fires a VKEY_PROCESSKEY key event if allowed.
- void MaybeFireProcessKey();
- // Stops firing VKEY_PROCESSKEY key events.
- void StopFiringProcessKey();
-
- scoped_ptr<LinuxInputMethodContext> input_method_context_;
-
- // IBus in async mode eagerly consumes all the key events first regardless of
- // whether the underlying IME consumes the key event or not, and makes
- // gtk_im_context_filter_keypress() always return true, and later pushes
- // the key event back to the GDK event queue when it turns out that the
- // underlying IME doesn't consume the key event.
- //
- // Thus we have to defer a decision whether or not to dispatch a
- // VKEY_PROCESSKEY key event. Unlike other InputMethod's subclasses,
- // DispatchKeyEvent() in this class does not directly dispatch a
- // VKEY_PROCESSKEY event, OnCommit or OnPreedit{Start,Changed,End} dispatch
- // a VKEY_PROCESSKEY event instead.
- //
- // Because of this hack, there could be chances that we accidentally dispatch
- // VKEY_PROCESSKEY events and other key events in out of order.
- //
- // |allowed_to_fire_vkey_process_key_| is used not to dispatch a
- // VKEY_PROCESSKEY event twice for a single key event.
- bool allowed_to_fire_vkey_process_key_;
- int vkey_processkey_flags_;
+ bool HasInputMethodResult();
+ bool NeedInsertChar() const;
+ void SendFakeProcessKeyEvent(int flags) const;
+ void ConfirmCompositionText();
+ void UpdateContextFocusState();
+ void ResetContext();
+
+ scoped_ptr<LinuxInputMethodContext> context_;
+ scoped_ptr<LinuxInputMethodContext> context_simple_;
+
+ base::string16 result_text_;
+
+ ui::CompositionText composition_;
+
+ // The current text input type used to indicates if |context_| and
+ // |context_simple_| are focused or not.
+ TextInputType text_input_type_;
+
+ // Indicates if currently in sync mode when handling a key event.
+ // This is used in OnXXX callbacks from GTK IM module.
+ bool is_sync_mode_;
+
+ // Indicates if the composition text is changed or deleted.
+ bool composition_changed_;
+
+ // If it's true then all input method result received before the next key
+ // event will be discarded.
+ bool suppress_next_result_;
DISALLOW_COPY_AND_ASSIGN(InputMethodAuraLinux);
};

Powered by Google App Engine
This is Rietveld 408576698