Index: content/browser/renderer_host/render_widget_host_view_win_browsertest.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_win_browsertest.cc b/content/browser/renderer_host/render_widget_host_view_win_browsertest.cc |
index 77763ab97ceeca3d622776f5878becdfb736a77f..a68f53cd1c71f8a48d5672d0f3b8b4cc1a339e7b 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_win_browsertest.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_win_browsertest.cc |
@@ -2,8 +2,12 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include <vector> |
+ |
#include "base/command_line.h" |
#include "base/win/metro.h" |
+#include "content/browser/renderer_host/render_widget_host_view_win.h" |
+#include "content/public/browser/render_view_host.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/common/content_switches.h" |
#include "content/public/test/test_utils.h" |
@@ -11,14 +15,77 @@ |
#include "content/shell/shell.h" |
#include "content/test/content_browser_test_utils.h" |
#include "content/test/content_browser_test.h" |
+#include "ui/base/ime/composition_text.h" |
#include "ui/base/ime/text_input_type.h" |
+#include "ui/base/ime/win/imm32_manager.h" |
#include "ui/base/ime/win/mock_tsf_bridge.h" |
#include "ui/base/ime/win/tsf_bridge.h" |
namespace content { |
-class RenderWidgetHostViewWinTest : public ContentBrowserTest { |
+namespace { |
+ |
+class MockIMM32Manager : public ui::IMM32Manager { |
+ public: |
+ virtual void SetTextInputMode(HWND window_handle, |
+ ui::TextInputMode input_mode) OVERRIDE { |
+ ++call_count_; |
+ window_handle_ = window_handle; |
+ input_mode_ = input_mode; |
+ } |
+ |
+ void Reset() { |
+ call_count_ = 0; |
+ } |
+ |
+ HWND window_handle_; |
Yohei Yukawa
2013/08/07 02:42:14
please initialize these fields in the constructor.
Yohei Yukawa
2013/08/07 02:42:14
please put private:
yoichio
2013/08/07 03:33:55
Done.
|
+ ui::TextInputMode input_mode_; |
+ size_t call_count_; |
+}; |
Yohei Yukawa
2013/08/07 02:42:14
Can we put this?
DISALLOW_COPY_AND_ASSIGN(MockIM
yoichio
2013/08/07 03:33:55
Done.
|
+ |
+// Testing class serving initialized RenderWidgetHostViewWin instance; |
+class RenderWidgetHostViewWinBrowserTest : public ContentBrowserTest { |
+ public: |
+ RenderWidgetHostViewWinBrowserTest() {} |
+ |
+ virtual void SetUpOnMainThread() OVERRIDE { |
+ ContentBrowserTest::SetUpOnMainThread(); |
+ |
+ NavigateToURL(shell(), GURL("about:blank")); |
+ |
+ view_ = static_cast<RenderWidgetHostViewWin*>( |
+ RenderWidgetHostViewPort::FromRWHV( |
+ shell()->web_contents()->GetRenderViewHost()->GetView())); |
Yohei Yukawa
2013/08/07 02:42:14
Please make sure this indent is correct in the sty
yoichio
2013/08/07 03:33:55
Done.
|
+ CHECK(view_); |
+ } |
+ |
+ protected: |
+ RenderWidgetHostViewWin* view_; |
+}; |
+ |
+} // namespace |
+ |
+IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinBrowserTest, TextInputTypeChanged) { |
+ ASSERT_TRUE(view_->m_hWnd); |
+ |
+ MockIMM32Manager* mock = new MockIMM32Manager(); |
+ mock->Reset(); |
+ view_->imm32_manager_.reset(mock); |
+ view_->TextInputTypeChanged(ui::TEXT_INPUT_TYPE_NONE, false, |
+ ui::TEXT_INPUT_MODE_EMAIL); |
+ |
+ EXPECT_EQ(1, mock->call_count_); |
+ EXPECT_EQ(view_->m_hWnd, mock->window_handle_); |
+ EXPECT_EQ(ui::TEXT_INPUT_MODE_EMAIL, mock->input_mode_); |
+ |
+ mock->Reset(); |
+ view_->TextInputTypeChanged(ui::TEXT_INPUT_TYPE_NONE, false, |
+ ui::TEXT_INPUT_MODE_EMAIL); |
+ EXPECT_EQ(0, mock->call_count_); |
+} |
+ |
+class RenderWidgetHostViewWinTSFTest : public ContentBrowserTest { |
public: |
- RenderWidgetHostViewWinTest() {} |
+ RenderWidgetHostViewWinTSFTest() {} |
virtual void SetUpCommandLine(CommandLine* command_line) { |
command_line->AppendSwitch(switches::kEnableTextServicesFramework); |
@@ -26,7 +93,7 @@ class RenderWidgetHostViewWinTest : public ContentBrowserTest { |
}; |
// crbug.com/151798 |
-IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, |
+IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTSFTest, |
DISABLED_SwichToPasswordField) { |
ui::MockTSFBridge mock_bridge; |
ui::TSFBridge* old_bridge = ui::TSFBridge::ReplaceForTesting(&mock_bridge); |
@@ -64,7 +131,7 @@ IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, |
} |
// crbug.com/151798 |
-IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, |
+IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTSFTest, |
DISABLED_SwitchToSameField) { |
ui::MockTSFBridge mock_bridge; |
ui::TSFBridge* old_bridge = ui::TSFBridge::ReplaceForTesting(&mock_bridge); |
@@ -102,7 +169,7 @@ IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, |
} |
// crbug.com/151798 |
-IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, |
+IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTSFTest, |
DISABLED_SwitchToSamePasswordField) { |
ui::MockTSFBridge mock_bridge; |
ui::TSFBridge* old_bridge = ui::TSFBridge::ReplaceForTesting(&mock_bridge); |