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..0804cb662a6280d59832dc17e8787c1ecde16f9a 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,94 @@ |
#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: |
+ MockIMM32Manager() |
+ : window_handle_(NULL), |
+ input_mode_(ui::TEXT_INPUT_MODE_DEFAULT), |
+ call_count_(0) { |
+ } |
+ ~MockIMM32Manager() {} |
Yohei Yukawa
2013/08/07 14:17:12
virtual ~MockIMM32Manager() {}
yoichio
2013/08/08 02:22:32
Done.
|
+ |
+ virtual void SetTextInputMode(HWND window_handle, |
+ ui::TextInputMode input_mode) OVERRIDE { |
+ ++call_count_; |
+ window_handle_ = window_handle; |
+ input_mode_ = input_mode; |
+ } |
+ |
+ void Reset() { |
+ window_handle_ = NULL; |
+ input_mode_ = ui::TEXT_INPUT_MODE_DEFAULT; |
+ call_count_ = 0; |
+ } |
+ |
+ HWND window_handle() const { return window_handle_; } |
+ ui::TextInputMode input_mode() const { return input_mode_; } |
+ size_t call_count() const { return call_count_; } |
+ |
+ private: |
+ HWND window_handle_; |
+ ui::TextInputMode input_mode_; |
+ size_t call_count_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MockIMM32Manager); |
+}; |
+ |
+// 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())); |
+ 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 +110,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 +148,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 +186,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); |