| 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..76070bc70e5accb2ba3603a9441bc2df81284799 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) {
|
| + }
|
| + virtual ~MockIMM32Manager() {}
|
| +
|
| + 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);
|
|
|