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

Unified Diff: ui/base/ime/input_method_base_unittest.cc

Issue 48393003: Add InputMethodObserver support into InputMethodBase (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix -Werror=sign-compare Created 7 years, 2 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
« no previous file with comments | « ui/base/ime/input_method_base.cc ('k') | ui/base/ime/input_method_ibus.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/ime/input_method_base_unittest.cc
diff --git a/ui/base/ime/input_method_base_unittest.cc b/ui/base/ime/input_method_base_unittest.cc
index 3d06a1a32030f83f2f70f11cbdc06b8f22a16e93..4c24949fdacaee6caeeffcca64373eaf55a984cf 100644
--- a/ui/base/ime/input_method_base_unittest.cc
+++ b/ui/base/ime/input_method_base_unittest.cc
@@ -110,13 +110,11 @@ class ClientChangeVerifier {
DISALLOW_COPY_AND_ASSIGN(ClientChangeVerifier);
};
-class MockInputMethodBase : public InputMethodBase {
+class SimpleMockInputMethodBase : public InputMethodBase {
public:
- // Note: this class does not take the ownership of |verifier|.
- explicit MockInputMethodBase(ClientChangeVerifier* verifier)
- : verifier_(verifier) {
+ SimpleMockInputMethodBase() {
}
- virtual ~MockInputMethodBase() {
+ virtual ~SimpleMockInputMethodBase() {
}
private:
@@ -132,13 +130,9 @@ class MockInputMethodBase : public InputMethodBase {
virtual bool DispatchFabricatedKeyEvent(const ui::KeyEvent&) OVERRIDE {
return false;
}
- virtual void OnCaretBoundsChanged(const TextInputClient* clien) OVERRIDE {
- }
- virtual void CancelComposition(const TextInputClient* clien) OVERRIDE {
+ virtual void CancelComposition(const TextInputClient* client) OVERRIDE {
}
- virtual void OnInputLocaleChanged() OVERRIDE {
- }
- virtual std::string GetInputLocale() OVERRIDE {
+ virtual std::string GetInputLocale() OVERRIDE{
return "";
}
virtual base::i18n::TextDirection GetInputTextDirection() OVERRIDE {
@@ -150,7 +144,19 @@ class MockInputMethodBase : public InputMethodBase {
virtual bool IsCandidatePopupOpen() const OVERRIDE {
return false;
}
+ DISALLOW_COPY_AND_ASSIGN(SimpleMockInputMethodBase);
+};
+
+class MockInputMethodBase : public SimpleMockInputMethodBase {
+ public:
+ // Note: this class does not take the ownership of |verifier|.
+ explicit MockInputMethodBase(ClientChangeVerifier* verifier)
+ : verifier_(verifier) {
+ }
+ virtual ~MockInputMethodBase() {
+ }
+ private:
// Overriden from InputMethodBase.
virtual void OnWillChangeFocusedClient(TextInputClient* focused_before,
TextInputClient* focused) OVERRIDE {
@@ -166,33 +172,65 @@ class MockInputMethodBase : public InputMethodBase {
DISALLOW_COPY_AND_ASSIGN(MockInputMethodBase);
};
-class MockInputMethodObserver : public InputMethodObserver {
+class SimpleMockInputMethodObserver : public InputMethodObserver {
public:
- // Note: this class does not take the ownership of |verifier|.
- explicit MockInputMethodObserver(ClientChangeVerifier* verifier)
- : verifier_(verifier) {
+ SimpleMockInputMethodObserver()
+ : on_caret_bounds_changed_(0),
+ on_input_locale_changed_(0) {
}
- virtual ~MockInputMethodObserver() {
+ virtual ~SimpleMockInputMethodObserver() {
+ }
+ void Reset() {
+ on_caret_bounds_changed_ = 0;
+ on_input_locale_changed_ = 0;
+ }
+ size_t on_caret_bounds_changed() const {
+ return on_caret_bounds_changed_;
+ }
+ size_t on_input_locale_changed() const {
+ return on_input_locale_changed_;
}
private:
- virtual void OnTextInputTypeChanged(const TextInputClient* client) OVERRIDE {
+ // Overriden from InputMethodObserver.
+ virtual void OnTextInputTypeChanged(const TextInputClient* client) OVERRIDE{
}
- virtual void OnFocus() OVERRIDE {
+ virtual void OnFocus() OVERRIDE{
}
- virtual void OnBlur() OVERRIDE {
+ virtual void OnBlur() OVERRIDE{
}
virtual void OnUntranslatedIMEMessage(
- const base::NativeEvent& event) OVERRIDE {
+ const base::NativeEvent& event) OVERRIDE{
}
- virtual void OnCaretBoundsChanged(const TextInputClient* client) OVERRIDE {
+ virtual void OnCaretBoundsChanged(const TextInputClient* client) OVERRIDE{
+ ++on_caret_bounds_changed_;
}
- virtual void OnInputLocaleChanged() OVERRIDE {
+ virtual void OnInputLocaleChanged() OVERRIDE{
+ ++on_input_locale_changed_;
}
- virtual void OnTextInputStateChanged(const TextInputClient* client) OVERRIDE {
- verifier_->OnTextInputStateChanged(client);
+ virtual void OnTextInputStateChanged(const TextInputClient* client) OVERRIDE{
}
- virtual void OnInputMethodDestroyed(const InputMethod* client) OVERRIDE {
+ virtual void OnInputMethodDestroyed(const InputMethod* client) OVERRIDE{
+ }
+
+ size_t on_caret_bounds_changed_;
+ size_t on_input_locale_changed_;
+ DISALLOW_COPY_AND_ASSIGN(SimpleMockInputMethodObserver);
+};
+
+class MockInputMethodObserver : public SimpleMockInputMethodObserver {
+ public:
+ // Note: this class does not take the ownership of |verifier|.
+ explicit MockInputMethodObserver(ClientChangeVerifier* verifier)
+ : verifier_(verifier) {
+ }
+ virtual ~MockInputMethodObserver() {
+ }
+
+ private:
+ // Overriden from SimpleMockInputMethodObserver.
+ virtual void OnTextInputStateChanged(const TextInputClient* client) OVERRIDE{
+ verifier_->OnTextInputStateChanged(client);
}
ClientChangeVerifier* verifier_;
@@ -392,5 +430,80 @@ TEST(InputMethodBaseTest, SetStickyFocusedTextInputClient) {
}
}
+TEST(InputMethodBaseTest, OnCaretBoundsChanged) {
+ DummyTextInputClient text_input_client;
+ DummyTextInputClient text_input_client_the_other;
+
+ SimpleMockInputMethodBase input_method;
+ SimpleMockInputMethodObserver input_method_observer;
+ InputMethodScopedObserver scoped_observer(&input_method_observer);
+ scoped_observer.Add(&input_method);
+
+ // Assume that the top-level-widget gains focus.
+ input_method.OnFocus();
+
+ {
+ SCOPED_TRACE("OnCaretBoundsChanged callback must not be fired when no text "
+ "input client is focused");
+ ASSERT_EQ(NULL, input_method.GetTextInputClient());
+
+ input_method_observer.Reset();
+ input_method.OnCaretBoundsChanged(&text_input_client);
+ EXPECT_EQ(0u, input_method_observer.on_caret_bounds_changed());
+ input_method.OnCaretBoundsChanged(NULL);
+ EXPECT_EQ(0u, input_method_observer.on_caret_bounds_changed());
+ }
+
+ {
+ SCOPED_TRACE("OnCaretBoundsChanged callback must be fired when and only "
+ "the event is notified from the focused text input client");
+
+ input_method.SetFocusedTextInputClient(&text_input_client);
+ ASSERT_EQ(&text_input_client, input_method.GetTextInputClient());
+
+ // Must fire the event
+ input_method_observer.Reset();
+ input_method.OnCaretBoundsChanged(&text_input_client);
+ EXPECT_EQ(1u, input_method_observer.on_caret_bounds_changed());
+
+ // Must not fire the event
+ input_method_observer.Reset();
+ input_method.OnCaretBoundsChanged(NULL);
+ EXPECT_EQ(0u, input_method_observer.on_caret_bounds_changed());
+
+ // Must not fire the event
+ input_method_observer.Reset();
+ input_method.OnCaretBoundsChanged(&text_input_client_the_other);
+ EXPECT_EQ(0u, input_method_observer.on_caret_bounds_changed());
+ }
+}
+
+TEST(InputMethodBaseTest, OnInputLocaleChanged) {
+ DummyTextInputClient text_input_client;
+
+ SimpleMockInputMethodBase input_method;
+ SimpleMockInputMethodObserver input_method_observer;
+ InputMethodScopedObserver scoped_observer(&input_method_observer);
+ scoped_observer.Add(&input_method);
+
+ // Assume that the top-level-widget gains focus.
+ input_method.OnFocus();
+
+ {
+ SCOPED_TRACE("OnInputLocaleChanged callback can be fired even when no text "
+ "input client is focused");
+ ASSERT_EQ(NULL, input_method.GetTextInputClient());
+
+ input_method_observer.Reset();
+ input_method.OnInputLocaleChanged();
+ EXPECT_EQ(1u, input_method_observer.on_input_locale_changed());
+
+ input_method.SetFocusedTextInputClient(&text_input_client);
+ input_method_observer.Reset();
+ input_method.OnInputLocaleChanged();
+ EXPECT_EQ(1u, input_method_observer.on_input_locale_changed());
+ }
+}
+
} // namespace
} // namespace ui
« no previous file with comments | « ui/base/ime/input_method_base.cc ('k') | ui/base/ime/input_method_ibus.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698