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

Unified Diff: chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc

Issue 1780523006: Add tests for input.ime.* APIs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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: chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc
diff --git a/chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc b/chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc
index 31de3d9a49e674b43f0fa9f2e0df6f25b13b2c6e..4dd8efb025e884fe09ac270e9952824d430b426b 100644
--- a/chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc
+++ b/chrome/browser/ui/views/ime/input_ime_apitest_nonchromeos.cc
@@ -2,13 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/extensions/extension_apitest.h"
+#include "chrome/browser/ui/input_method/input_method_engine.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/common/chrome_switches.h"
+#include "extensions/test/extension_test_message_listener.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
#include "ui/base/ime/dummy_text_input_client.h"
+#include "ui/base/ime/ime_bridge.h"
#include "ui/base/ime/input_method.h"
+#include "ui/base/ime/mock_ime_input_context_handler.h"
namespace extensions {
@@ -16,29 +21,80 @@ class InputImeApiTest : public ExtensionApiTest {
public:
InputImeApiTest() {}
+ // extensions::ExtensionApiTest
+ void SetUpOnMainThread() override;
+
protected:
void SetUpCommandLine(base::CommandLine* command_line) override {
ExtensionApiTest::SetUpCommandLine(command_line);
command_line->AppendSwitch(switches::kEnableInputImeAPI);
}
+ ui::InputMethod* input_method;
+
private:
DISALLOW_COPY_AND_ASSIGN(InputImeApiTest);
};
+void InputImeApiTest::SetUpOnMainThread() {
+ BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
+ input_method = browser_view->GetNativeWindow()->GetHost()->GetInputMethod();
+}
+
IN_PROC_BROWSER_TEST_F(InputImeApiTest, CreateWindowTest) {
// Manipulates the focused text input client because the follow cursor
// window requires the text input focus.
- BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
- ui::InputMethod* input_method =
- browser_view->GetNativeWindow()->GetHost()->GetInputMethod();
scoped_ptr<ui::DummyTextInputClient> client(
new ui::DummyTextInputClient(ui::TEXT_INPUT_TYPE_TEXT));
input_method->SetFocusedTextInputClient(client.get());
ASSERT_TRUE(RunExtensionTest("input_ime_nonchromeos")) << message_;
-
input_method->DetachTextInputClient(client.get());
}
+IN_PROC_BROWSER_TEST_F(InputImeApiTest, FocusBlurTest) {
Shu Chen 2016/03/11 01:47:25 Please combine all the tests as a single api test.
Azure Wei 2016/03/16 03:07:24 Test for setComposition/onCompositionBoundsChange
+ ExtensionTestMessageListener focus_listener("get_focus_event", false);
+ ExtensionTestMessageListener blur_listener("get_blur_event", false);
+ scoped_ptr<ui::DummyTextInputClient> client1(
+ new ui::DummyTextInputClient(ui::TEXT_INPUT_TYPE_TEXT));
+ scoped_ptr<ui::DummyTextInputClient> client2(
+ new ui::DummyTextInputClient(ui::TEXT_INPUT_TYPE_TEXT));
+ input_method->SetFocusedTextInputClient(client1.get());
+
+ ASSERT_TRUE(RunExtensionTest("input_ime_nonchromeos")) << message_;
+
+ ASSERT_TRUE(focus_listener.WaitUntilSatisfied()) << message_;
+
+ // Focus to the second text input client.
+ input_method->SetFocusedTextInputClient(client2.get());
+ ASSERT_TRUE(blur_listener.WaitUntilSatisfied()) << message_;
+}
+
+IN_PROC_BROWSER_TEST_F(InputImeApiTest, CommitTextAndSetCompositionTest) {
+ scoped_ptr<ui::MockIMEInputContextHandler> mock_input_context(
+ new ui::MockIMEInputContextHandler());
+ ui::IMEBridge::Get()->SetInputContextHandler(mock_input_context.get());
+
+ ASSERT_TRUE(RunExtensionTest("input_ime_nonchromeos")) << message_;
+
+ // Test input.ime.commitText API.
+ ASSERT_EQ(mock_input_context->commit_text_call_count(), 1);
+ ASSERT_EQ(mock_input_context->last_commit_text(), "test_commit_text");
+
+ // Test input.ime.setComposition API.
+ ASSERT_EQ(mock_input_context->update_preedit_text_call_count(), 1);
+ ui::MockIMEInputContextHandler::UpdateCompositionTextArg set_composition_arg =
+ mock_input_context->last_update_composition_arg();
+ ASSERT_EQ(set_composition_arg.composition_text.text,
+ base::UTF8ToUTF16("test_composition_text"));
+ gfx::Range selection(2, 2);
+ ASSERT_EQ(set_composition_arg.composition_text.selection, selection);
+ ASSERT_EQ(set_composition_arg.cursor_pos, 2U);
+ ASSERT_TRUE(set_composition_arg.is_visible);
+}
+
+IN_PROC_BROWSER_TEST_F(InputImeApiTest, CompositionBoundsChangeTest) {
+ ASSERT_TRUE(RunExtensionTest("input_ime_nonchromeos")) << message_;
+}
+
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698