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

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

Issue 85063002: Add OnCompositionChanged and OnTextCommitted to RemoteInputMethodPrivateWin (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 1 month 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/remote_input_method_win.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/ime/remote_input_method_win_unittest.cc
diff --git a/ui/base/ime/remote_input_method_win_unittest.cc b/ui/base/ime/remote_input_method_win_unittest.cc
index c0dbf1d9231df1cefda0183d39ece8580a5097be..2b4f2c9604e9a292be510537437fdd6c99727b1f 100644
--- a/ui/base/ime/remote_input_method_win_unittest.cc
+++ b/ui/base/ime/remote_input_method_win_unittest.cc
@@ -12,6 +12,7 @@
#include "base/scoped_observer.h"
#include "base/strings/string16.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/ime/composition_text.h"
#include "ui/base/ime/dummy_text_input_client.h"
#include "ui/base/ime/input_method.h"
#include "ui/base/ime/input_method_delegate.h"
@@ -26,16 +27,31 @@ class MockTextInputClient : public DummyTextInputClient {
public:
MockTextInputClient()
: text_input_type_(TEXT_INPUT_TYPE_NONE),
- text_input_mode_(TEXT_INPUT_MODE_DEFAULT) {
+ text_input_mode_(TEXT_INPUT_MODE_DEFAULT),
+ call_count_set_composition_text_(0),
+ call_count_insert_char_(0),
+ call_count_insert_text_(0) {
}
+ size_t call_count_set_composition_text() const {
+ return call_count_set_composition_text_;
+ }
const base::string16& inserted_text() const {
return inserted_text_;
}
+ size_t call_count_insert_char() const {
+ return call_count_insert_char_;
+ }
+ size_t call_count_insert_text() const {
+ return call_count_insert_text_;
+ }
void Reset() {
- inserted_text_.clear();
text_input_type_ = TEXT_INPUT_TYPE_NONE;
text_input_mode_ = TEXT_INPUT_MODE_DEFAULT;
+ call_count_set_composition_text_ = 0;
+ inserted_text_.clear();
+ call_count_insert_char_ = 0;
+ call_count_insert_text_ = 0;
caret_bounds_ = gfx::Rect();
composition_character_bounds_.clear();
}
@@ -54,11 +70,18 @@ class MockTextInputClient : public DummyTextInputClient {
}
private:
+ // Overriden from DummyTextInputClient.
+ virtual void SetCompositionText(
+ const ui::CompositionText& composition) OVERRIDE {
+ ++call_count_set_composition_text_;
+ }
virtual void InsertChar(char16 ch, int flags) OVERRIDE{
inserted_text_.append(1, ch);
+ ++call_count_insert_char_;
}
virtual void InsertText(const string16& text) OVERRIDE{
- EXPECT_TRUE(false) << "RemoteInputMethodWin does not use this method";
+ inserted_text_.append(text);
+ ++call_count_insert_text_;
}
virtual ui::TextInputType GetTextInputType() const OVERRIDE {
return text_input_type_;
@@ -85,6 +108,9 @@ class MockTextInputClient : public DummyTextInputClient {
gfx::Rect caret_bounds_;
std::vector<gfx::Rect> composition_character_bounds_;
base::string16 inserted_text_;
+ size_t call_count_set_composition_text_;
+ size_t call_count_insert_char_;
+ size_t call_count_insert_text_;
DISALLOW_COPY_AND_ASSIGN(MockTextInputClient);
};
@@ -633,6 +659,83 @@ TEST(RemoteInputMethodWinTest, DispatchKeyEvent_FabricatedChar) {
mock_text_input_client.Reset();
}
+TEST(RemoteInputMethodWinTest, OnCompositionChanged) {
+ MockInputMethodDelegate delegate_;
+ MockTextInputClient mock_text_input_client;
+ scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_));
+
+ RemoteInputMethodPrivateWin* private_ptr =
+ RemoteInputMethodPrivateWin::Get(input_method.get());
+ ASSERT_TRUE(private_ptr != NULL);
+ MockRemoteInputMethodDelegateWin mock_remote_delegate;
+ private_ptr->SetRemoteDelegate(&mock_remote_delegate);
+
+ CompositionText composition_text;
+
+ // TextInputClient is not focused yet here.
+
+ private_ptr->OnCompositionChanged(composition_text);
+ EXPECT_EQ(0, mock_text_input_client.call_count_set_composition_text());
+ delegate_.Reset();
+ mock_text_input_client.Reset();
+
+ input_method->SetFocusedTextInputClient(&mock_text_input_client);
+
+ // TextInputClient is now focused here.
+
+ private_ptr->OnCompositionChanged(composition_text);
+ EXPECT_EQ(1, mock_text_input_client.call_count_set_composition_text());
+ delegate_.Reset();
+ mock_text_input_client.Reset();
+}
+
+TEST(RemoteInputMethodWinTest, OnTextCommitted) {
+ MockInputMethodDelegate delegate_;
+ MockTextInputClient mock_text_input_client;
+ scoped_ptr<InputMethod> input_method(CreateRemoteInputMethodWin(&delegate_));
+
+ RemoteInputMethodPrivateWin* private_ptr =
+ RemoteInputMethodPrivateWin::Get(input_method.get());
+ ASSERT_TRUE(private_ptr != NULL);
+ MockRemoteInputMethodDelegateWin mock_remote_delegate;
+ private_ptr->SetRemoteDelegate(&mock_remote_delegate);
+
+ base::string16 committed_text = L"Hello";
+
+ // TextInputClient is not focused yet here.
+
+ mock_text_input_client.set_text_input_type(TEXT_INPUT_TYPE_TEXT);
+ private_ptr->OnTextCommitted(committed_text);
+ EXPECT_EQ(0, mock_text_input_client.call_count_insert_char());
+ EXPECT_EQ(0, mock_text_input_client.call_count_insert_text());
+ EXPECT_EQ(L"", mock_text_input_client.inserted_text());
+ delegate_.Reset();
+ mock_text_input_client.Reset();
+
+ input_method->SetFocusedTextInputClient(&mock_text_input_client);
+
+ // TextInputClient is now focused here.
+
+ mock_text_input_client.set_text_input_type(TEXT_INPUT_TYPE_TEXT);
+ private_ptr->OnTextCommitted(committed_text);
+ EXPECT_EQ(0, mock_text_input_client.call_count_insert_char());
+ EXPECT_EQ(1, mock_text_input_client.call_count_insert_text());
+ EXPECT_EQ(committed_text, mock_text_input_client.inserted_text());
+ delegate_.Reset();
+ mock_text_input_client.Reset();
+
+ // When TextInputType is TEXT_INPUT_TYPE_NONE, TextInputClient::InsertText
+ // should not be used.
+ mock_text_input_client.set_text_input_type(TEXT_INPUT_TYPE_NONE);
+ private_ptr->OnTextCommitted(committed_text);
+ EXPECT_EQ(committed_text.size(),
+ mock_text_input_client.call_count_insert_char());
+ EXPECT_EQ(0, mock_text_input_client.call_count_insert_text());
+ EXPECT_EQ(committed_text, mock_text_input_client.inserted_text());
+ delegate_.Reset();
+ mock_text_input_client.Reset();
+}
+
TEST(RemoteInputMethodWinTest, OnTextInputStateChanged_Observer) {
DummyTextInputClient text_input_client;
DummyTextInputClient text_input_client_the_other;
« no previous file with comments | « ui/base/ime/remote_input_method_win.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698