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..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); |