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 |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..300865fb085d8b0ca3e6b033f72879f0005f02a8 |
| --- /dev/null |
| +++ b/content/browser/renderer_host/render_widget_host_view_win_browsertest.cc |
| @@ -0,0 +1,137 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/command_line.h" |
| +#include "base/win/metro.h" |
| +#include "content/public/browser/web_contents.h" |
| +#include "content/public/common/content_switches.h" |
| +#include "content/public/test/test_utils.h" |
| +#include "content/public/test/browser_test_utils.h" |
| +#include "content/shell/shell.h" |
| +#include "content/test/content_browser_test_utils.h" |
| +#include "content/test/content_browser_test.h" |
| +#include "ui/base/win/mock_tsf_bridge.h" |
| +#include "ui/base/win/tsf_bridge.h" |
| + |
| +namespace { |
| +class RenderWidgetHostViewWinTest : public content::ContentBrowserTest { |
| + public: |
| + RenderWidgetHostViewWinTest() {} |
| + |
| + virtual void SetUpCommandLine(CommandLine* command_line) { |
| + command_line->AppendSwitch("--enable-text-service-framework"); |
|
sky
2012/09/10 16:44:09
Can't you use the constant here?
Seigo Nonaka
2012/09/10 19:04:10
Sorry, I forget using constant.
Fixed.
On 2012/09
|
| + } |
| +}; |
| + |
| +IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, SwichToPasswordField) { |
| + ui::MockTsfBridge mock_bridge; |
| + ui::TsfBridge* old_bridge = ui::TsfBridge::ReplaceForTesting(&mock_bridge); |
| + GURL test_url = content::GetTestUrl("textinput", |
| + "ime_enable_disable_test.html"); |
| + |
| + content::NavigateToURL(shell(), test_url); |
| + content::WaitForLoadStop(shell()->web_contents()); |
| + content::RunAllPendingInMessageLoop(); |
| + |
| + EXPECT_FALSE(mock_bridge.is_ime_enabled()); |
| + |
| + // Focus to the text field, the IME should be enabled. |
| + bool success = false; |
| + EXPECT_TRUE(ExecuteJavaScriptAndExtractBool( |
| + shell()->web_contents()->GetRenderViewHost(), L"", |
| + L"window.domAutomationController.send(text01_focus());", |
| + &success)); |
| + EXPECT_TRUE(success); |
| + content::WaitForLoadStop(shell()->web_contents()); |
| + content::RunAllPendingInMessageLoop(); |
| + EXPECT_TRUE(mock_bridge.is_ime_enabled()); |
| + |
| + // Focus to the password field, the IME should be disabled. |
| + success = false; |
| + EXPECT_TRUE(ExecuteJavaScriptAndExtractBool( |
| + shell()->web_contents()->GetRenderViewHost(), L"", |
| + L"window.domAutomationController.send(password02_focus());", |
| + &success)); |
| + EXPECT_TRUE(success); |
| + content::WaitForLoadStop(shell()->web_contents()); |
| + content::RunAllPendingInMessageLoop(); |
| + EXPECT_FALSE(mock_bridge.is_ime_enabled()); |
| + |
| + ui::TsfBridge::ReplaceForTesting(old_bridge); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, SwitchToSameField) { |
| + ui::MockTsfBridge mock_bridge; |
| + ui::TsfBridge* old_bridge = ui::TsfBridge::ReplaceForTesting(&mock_bridge); |
| + GURL test_url = content::GetTestUrl("textinput", |
| + "ime_enable_disable_test.html"); |
| + |
| + content::NavigateToURL(shell(), test_url); |
| + content::WaitForLoadStop(shell()->web_contents()); |
| + content::RunAllPendingInMessageLoop(); |
| + |
| + EXPECT_FALSE(mock_bridge.is_ime_enabled()); |
| + |
| + // Focus to the text field, the IME should be enabled. |
| + bool success = false; |
| + EXPECT_TRUE(ExecuteJavaScriptAndExtractBool( |
| + shell()->web_contents()->GetRenderViewHost(), L"", |
| + L"window.domAutomationController.send(text01_focus());", |
| + &success)); |
| + EXPECT_TRUE(success); |
| + content::WaitForLoadStop(shell()->web_contents()); |
| + content::RunAllPendingInMessageLoop(); |
| + EXPECT_TRUE(mock_bridge.is_ime_enabled()); |
| + |
| + // Focus to another text field, the IME should be enabled. |
| + success = false; |
| + EXPECT_TRUE(ExecuteJavaScriptAndExtractBool( |
| + shell()->web_contents()->GetRenderViewHost(), L"", |
| + L"window.domAutomationController.send(text02_focus());", |
| + &success)); |
| + EXPECT_TRUE(success); |
| + content::WaitForLoadStop(shell()->web_contents()); |
| + content::RunAllPendingInMessageLoop(); |
| + EXPECT_TRUE(mock_bridge.is_ime_enabled()); |
| + |
| + ui::TsfBridge::ReplaceForTesting(old_bridge); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, SwitchToSamePasswordField) { |
| + ui::MockTsfBridge mock_bridge; |
| + ui::TsfBridge* old_bridge = ui::TsfBridge::ReplaceForTesting(&mock_bridge); |
| + GURL test_url = content::GetTestUrl("textinput", |
| + "ime_enable_disable_test.html"); |
| + |
| + content::NavigateToURL(shell(), test_url); |
| + content::WaitForLoadStop(shell()->web_contents()); |
| + content::RunAllPendingInMessageLoop(); |
| + |
| + EXPECT_FALSE(mock_bridge.is_ime_enabled()); |
| + |
| + // Focus to the password field, the IME should be disabled. |
| + bool success = false; |
| + EXPECT_TRUE(ExecuteJavaScriptAndExtractBool( |
| + shell()->web_contents()->GetRenderViewHost(), L"", |
| + L"window.domAutomationController.send(password01_focus());", |
| + &success)); |
| + EXPECT_TRUE(success); |
| + content::WaitForLoadStop(shell()->web_contents()); |
| + content::RunAllPendingInMessageLoop(); |
| + EXPECT_FALSE(mock_bridge.is_ime_enabled()); |
| + |
| + // Focus to the another password field, the IME should be disabled. |
| + success = false; |
| + EXPECT_TRUE(ExecuteJavaScriptAndExtractBool( |
| + shell()->web_contents()->GetRenderViewHost(), L"", |
| + L"window.domAutomationController.send(password02_focus());", |
| + &success)); |
| + EXPECT_TRUE(success); |
| + content::WaitForLoadStop(shell()->web_contents()); |
| + content::RunAllPendingInMessageLoop(); |
| + EXPECT_FALSE(mock_bridge.is_ime_enabled()); |
| + |
| + ui::TsfBridge::ReplaceForTesting(old_bridge); |
| +} |
| +} // namespace |