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

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

Issue 80583002: [FYI] All-in-one OnCandidateWindow{Show,Update,Hide} (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update Created 7 years 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_imm32.cc » ('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 e065306f23e5c7dd923a4987e0687ed44248c20c..7bc9575bb4efd54a9cbb386268064d310bd85188 100644
--- a/ui/base/ime/input_method_base_unittest.cc
+++ b/ui/base/ime/input_method_base_unittest.cc
@@ -4,6 +4,9 @@
#include "ui/base/ime/input_method_base.h"
+#include "base/gtest_prod_util.h"
+#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "base/scoped_observer.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/ime/dummy_text_input_client.h"
@@ -110,11 +113,21 @@ class ClientChangeVerifier {
DISALLOW_COPY_AND_ASSIGN(ClientChangeVerifier);
};
+class InputMethodBaseTest : public testing::Test {
+ protected:
+ InputMethodBaseTest() : message_loop_(base::MessageLoop::TYPE_UI) {
+ }
+ virtual ~InputMethodBaseTest() {
+ }
+
+ private:
+ base::MessageLoop message_loop_;
+};
+
class MockInputMethodBase : public InputMethodBase {
public:
// Note: this class does not take the ownership of |verifier|.
- MockInputMethodBase(ClientChangeVerifier* verifier)
- : verifier_(verifier) {
+ MockInputMethodBase(ClientChangeVerifier* verifier) : verifier_(verifier) {
}
virtual ~MockInputMethodBase() {
}
@@ -159,6 +172,8 @@ class MockInputMethodBase : public InputMethodBase {
}
ClientChangeVerifier* verifier_;
+
+ FRIEND_TEST_ALL_PREFIXES(InputMethodBaseTest, CandidateWindowEvents);
DISALLOW_COPY_AND_ASSIGN(MockInputMethodBase);
};
@@ -190,10 +205,38 @@ class MockInputMethodObserver : public InputMethodObserver {
DISALLOW_COPY_AND_ASSIGN(MockInputMethodObserver);
};
+class MockTextInputClient : public DummyTextInputClient {
+ public:
+ MockTextInputClient()
+ : shown_event_count_(0), updated_event_count_(0), hidden_event_count_(0) {
+ }
+ virtual ~MockTextInputClient() {
+ }
+
+ virtual void OnCandidateWindowShown() OVERRIDE {
+ ++shown_event_count_;
+ }
+ virtual void OnCandidateWindowUpdated() OVERRIDE {
+ ++updated_event_count_;
+ }
+ virtual void OnCandidateWindowHidden() OVERRIDE {
+ ++hidden_event_count_;
+ }
+
+ int shown_event_count() const { return shown_event_count_; }
+ int updated_event_count() const { return updated_event_count_; }
+ int hidden_event_count() const { return hidden_event_count_; }
+
+ private:
+ int shown_event_count_;
+ int updated_event_count_;
+ int hidden_event_count_;
+};
+
typedef ScopedObserver<InputMethod, InputMethodObserver>
InputMethodScopedObserver;
-TEST(InputMethodBaseTest, SetFocusedTextInputClient) {
+TEST_F(InputMethodBaseTest, SetFocusedTextInputClient) {
DummyTextInputClient text_input_client_1st;
DummyTextInputClient text_input_client_2nd;
@@ -252,7 +295,7 @@ TEST(InputMethodBaseTest, SetFocusedTextInputClient) {
}
}
-TEST(InputMethodBaseTest, DetachTextInputClient) {
+TEST_F(InputMethodBaseTest, DetachTextInputClient) {
DummyTextInputClient text_input_client;
DummyTextInputClient text_input_client_the_other;
@@ -295,5 +338,41 @@ TEST(InputMethodBaseTest, DetachTextInputClient) {
}
}
+TEST_F(InputMethodBaseTest, CandidateWindowEvents) {
+ MockTextInputClient text_input_client;
+
+ ClientChangeVerifier verifier;
+ MockInputMethodBase input_method(&verifier);
+ input_method.OnFocus();
+
+ verifier.ExpectClientChange(NULL, &text_input_client);
+ input_method.SetFocusedTextInputClient(&text_input_client);
+
+ EXPECT_EQ(0, text_input_client.shown_event_count());
+ EXPECT_EQ(0, text_input_client.updated_event_count());
+ EXPECT_EQ(0, text_input_client.hidden_event_count());
+
+ input_method.OnCandidateWindowShown();
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(1, text_input_client.shown_event_count());
+ EXPECT_EQ(0, text_input_client.updated_event_count());
+ EXPECT_EQ(0, text_input_client.hidden_event_count());
+
+ input_method.OnCandidateWindowUpdated();
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(1, text_input_client.shown_event_count());
+ EXPECT_EQ(1, text_input_client.updated_event_count());
+ EXPECT_EQ(0, text_input_client.hidden_event_count());
+
+ input_method.OnCandidateWindowHidden();
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(1, text_input_client.shown_event_count());
+ EXPECT_EQ(1, text_input_client.updated_event_count());
+ EXPECT_EQ(1, text_input_client.hidden_event_count());
+}
+
} // namespace
} // namespace ui
« no previous file with comments | « ui/base/ime/input_method_base.cc ('k') | ui/base/ime/input_method_imm32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698