Chromium Code Reviews| 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); |