Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_win_browsertest.cc

Issue 21189003: Change IME conversion status by focusing input element (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Exclude test from aura build Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector>
6
5 #include "base/command_line.h" 7 #include "base/command_line.h"
6 #include "base/win/metro.h" 8 #include "base/win/metro.h"
9 #include "content/browser/renderer_host/render_widget_host_view_win.h"
10 #include "content/public/browser/render_view_host.h"
7 #include "content/public/browser/web_contents.h" 11 #include "content/public/browser/web_contents.h"
8 #include "content/public/common/content_switches.h" 12 #include "content/public/common/content_switches.h"
9 #include "content/public/test/test_utils.h" 13 #include "content/public/test/test_utils.h"
10 #include "content/public/test/browser_test_utils.h" 14 #include "content/public/test/browser_test_utils.h"
11 #include "content/shell/shell.h" 15 #include "content/shell/shell.h"
12 #include "content/test/content_browser_test_utils.h" 16 #include "content/test/content_browser_test_utils.h"
13 #include "content/test/content_browser_test.h" 17 #include "content/test/content_browser_test.h"
18 #include "ui/base/ime/composition_text.h"
14 #include "ui/base/ime/text_input_type.h" 19 #include "ui/base/ime/text_input_type.h"
20 #include "ui/base/ime/win/imm32_manager.h"
15 #include "ui/base/ime/win/mock_tsf_bridge.h" 21 #include "ui/base/ime/win/mock_tsf_bridge.h"
16 #include "ui/base/ime/win/tsf_bridge.h" 22 #include "ui/base/ime/win/tsf_bridge.h"
17 23
18 namespace content { 24 namespace content {
19 class RenderWidgetHostViewWinTest : public ContentBrowserTest { 25 namespace {
26
27 class MockIMM32Manager : public ui::IMM32Manager {
20 public: 28 public:
21 RenderWidgetHostViewWinTest() {} 29 MockIMM32Manager()
30 : window_handle_(NULL),
31 input_mode_(ui::TEXT_INPUT_MODE_DEFAULT),
32 call_count_(0) {
33 }
34 ~MockIMM32Manager() {}
Yohei Yukawa 2013/08/07 14:17:12 virtual ~MockIMM32Manager() {}
yoichio 2013/08/08 02:22:32 Done.
35
36 virtual void SetTextInputMode(HWND window_handle,
37 ui::TextInputMode input_mode) OVERRIDE {
38 ++call_count_;
39 window_handle_ = window_handle;
40 input_mode_ = input_mode;
41 }
42
43 void Reset() {
44 window_handle_ = NULL;
45 input_mode_ = ui::TEXT_INPUT_MODE_DEFAULT;
46 call_count_ = 0;
47 }
48
49 HWND window_handle() const { return window_handle_; }
50 ui::TextInputMode input_mode() const { return input_mode_; }
51 size_t call_count() const { return call_count_; }
52
53 private:
54 HWND window_handle_;
55 ui::TextInputMode input_mode_;
56 size_t call_count_;
57
58 DISALLOW_COPY_AND_ASSIGN(MockIMM32Manager);
59 };
60
61 // Testing class serving initialized RenderWidgetHostViewWin instance;
62 class RenderWidgetHostViewWinBrowserTest : public ContentBrowserTest {
63 public:
64 RenderWidgetHostViewWinBrowserTest() {}
65
66 virtual void SetUpOnMainThread() OVERRIDE {
67 ContentBrowserTest::SetUpOnMainThread();
68
69 NavigateToURL(shell(), GURL("about:blank"));
70
71 view_ = static_cast<RenderWidgetHostViewWin*>(
72 RenderWidgetHostViewPort::FromRWHV(
73 shell()->web_contents()->GetRenderViewHost()->GetView()));
74 CHECK(view_);
75 }
76
77 protected:
78 RenderWidgetHostViewWin* view_;
79 };
80
81 } // namespace
82
83 IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinBrowserTest,
84 TextInputTypeChanged) {
85 ASSERT_TRUE(view_->m_hWnd);
86
87 MockIMM32Manager* mock = new MockIMM32Manager();
88 mock->Reset();
89 view_->imm32_manager_.reset(mock);
90 view_->TextInputTypeChanged(ui::TEXT_INPUT_TYPE_NONE, false,
91 ui::TEXT_INPUT_MODE_EMAIL);
92
93 EXPECT_EQ(1, mock->call_count());
94 EXPECT_EQ(view_->m_hWnd, mock->window_handle());
95 EXPECT_EQ(ui::TEXT_INPUT_MODE_EMAIL, mock->input_mode());
96
97 mock->Reset();
98 view_->TextInputTypeChanged(ui::TEXT_INPUT_TYPE_NONE, false,
99 ui::TEXT_INPUT_MODE_EMAIL);
100 EXPECT_EQ(0, mock->call_count());
101 }
102
103 class RenderWidgetHostViewWinTSFTest : public ContentBrowserTest {
104 public:
105 RenderWidgetHostViewWinTSFTest() {}
22 106
23 virtual void SetUpCommandLine(CommandLine* command_line) { 107 virtual void SetUpCommandLine(CommandLine* command_line) {
24 command_line->AppendSwitch(switches::kEnableTextServicesFramework); 108 command_line->AppendSwitch(switches::kEnableTextServicesFramework);
25 } 109 }
26 }; 110 };
27 111
28 // crbug.com/151798 112 // crbug.com/151798
29 IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, 113 IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTSFTest,
30 DISABLED_SwichToPasswordField) { 114 DISABLED_SwichToPasswordField) {
31 ui::MockTSFBridge mock_bridge; 115 ui::MockTSFBridge mock_bridge;
32 ui::TSFBridge* old_bridge = ui::TSFBridge::ReplaceForTesting(&mock_bridge); 116 ui::TSFBridge* old_bridge = ui::TSFBridge::ReplaceForTesting(&mock_bridge);
33 GURL test_url = GetTestUrl("textinput", "ime_enable_disable_test.html"); 117 GURL test_url = GetTestUrl("textinput", "ime_enable_disable_test.html");
34 118
35 NavigateToURL(shell(), test_url); 119 NavigateToURL(shell(), test_url);
36 WaitForLoadStop(shell()->web_contents()); 120 WaitForLoadStop(shell()->web_contents());
37 RunAllPendingInMessageLoop(); 121 RunAllPendingInMessageLoop();
38 122
39 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, mock_bridge.latest_text_iput_type()); 123 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, mock_bridge.latest_text_iput_type());
(...skipping 17 matching lines...) Expand all
57 &success)); 141 &success));
58 EXPECT_TRUE(success); 142 EXPECT_TRUE(success);
59 WaitForLoadStop(shell()->web_contents()); 143 WaitForLoadStop(shell()->web_contents());
60 RunAllPendingInMessageLoop(); 144 RunAllPendingInMessageLoop();
61 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, mock_bridge.latest_text_iput_type()); 145 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, mock_bridge.latest_text_iput_type());
62 146
63 ui::TSFBridge::ReplaceForTesting(old_bridge); 147 ui::TSFBridge::ReplaceForTesting(old_bridge);
64 } 148 }
65 149
66 // crbug.com/151798 150 // crbug.com/151798
67 IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, 151 IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTSFTest,
68 DISABLED_SwitchToSameField) { 152 DISABLED_SwitchToSameField) {
69 ui::MockTSFBridge mock_bridge; 153 ui::MockTSFBridge mock_bridge;
70 ui::TSFBridge* old_bridge = ui::TSFBridge::ReplaceForTesting(&mock_bridge); 154 ui::TSFBridge* old_bridge = ui::TSFBridge::ReplaceForTesting(&mock_bridge);
71 GURL test_url = GetTestUrl("textinput", "ime_enable_disable_test.html"); 155 GURL test_url = GetTestUrl("textinput", "ime_enable_disable_test.html");
72 156
73 NavigateToURL(shell(), test_url); 157 NavigateToURL(shell(), test_url);
74 WaitForLoadStop(shell()->web_contents()); 158 WaitForLoadStop(shell()->web_contents());
75 RunAllPendingInMessageLoop(); 159 RunAllPendingInMessageLoop();
76 160
77 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, mock_bridge.latest_text_iput_type()); 161 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, mock_bridge.latest_text_iput_type());
(...skipping 17 matching lines...) Expand all
95 &success)); 179 &success));
96 EXPECT_TRUE(success); 180 EXPECT_TRUE(success);
97 WaitForLoadStop(shell()->web_contents()); 181 WaitForLoadStop(shell()->web_contents());
98 RunAllPendingInMessageLoop(); 182 RunAllPendingInMessageLoop();
99 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, mock_bridge.latest_text_iput_type()); 183 EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, mock_bridge.latest_text_iput_type());
100 184
101 ui::TSFBridge::ReplaceForTesting(old_bridge); 185 ui::TSFBridge::ReplaceForTesting(old_bridge);
102 } 186 }
103 187
104 // crbug.com/151798 188 // crbug.com/151798
105 IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTest, 189 IN_PROC_BROWSER_TEST_F(RenderWidgetHostViewWinTSFTest,
106 DISABLED_SwitchToSamePasswordField) { 190 DISABLED_SwitchToSamePasswordField) {
107 ui::MockTSFBridge mock_bridge; 191 ui::MockTSFBridge mock_bridge;
108 ui::TSFBridge* old_bridge = ui::TSFBridge::ReplaceForTesting(&mock_bridge); 192 ui::TSFBridge* old_bridge = ui::TSFBridge::ReplaceForTesting(&mock_bridge);
109 GURL test_url = GetTestUrl("textinput", "ime_enable_disable_test.html"); 193 GURL test_url = GetTestUrl("textinput", "ime_enable_disable_test.html");
110 194
111 NavigateToURL(shell(), test_url); 195 NavigateToURL(shell(), test_url);
112 WaitForLoadStop(shell()->web_contents()); 196 WaitForLoadStop(shell()->web_contents());
113 RunAllPendingInMessageLoop(); 197 RunAllPendingInMessageLoop();
114 198
115 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, mock_bridge.latest_text_iput_type()); 199 EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, mock_bridge.latest_text_iput_type());
(...skipping 17 matching lines...) Expand all
133 &success)); 217 &success));
134 EXPECT_TRUE(success); 218 EXPECT_TRUE(success);
135 WaitForLoadStop(shell()->web_contents()); 219 WaitForLoadStop(shell()->web_contents());
136 RunAllPendingInMessageLoop(); 220 RunAllPendingInMessageLoop();
137 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, mock_bridge.latest_text_iput_type()); 221 EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, mock_bridge.latest_text_iput_type());
138 222
139 ui::TSFBridge::ReplaceForTesting(old_bridge); 223 ui::TSFBridge::ReplaceForTesting(old_bridge);
140 } 224 }
141 225
142 } // namespace content 226 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_win.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698