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

Side by Side Diff: trunk/src/chrome/browser/chromeos/events/event_rewriter_unittest.cc

Issue 297783003: Revert 271762 "Add native event testing to chromeos::EventRewrit..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/chromeos/events/event_rewriter.h" 5 #include "chrome/browser/chromeos/events/event_rewriter.h"
6 6
7 #include <X11/keysym.h> 7 #include <X11/keysym.h>
8 #include <X11/XF86keysym.h> 8 #include <X11/XF86keysym.h>
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 #undef Bool 10 #undef Bool
(...skipping 20 matching lines...) Expand all
31 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
32 #include "ui/aura/window.h" 32 #include "ui/aura/window.h"
33 #include "ui/events/event.h" 33 #include "ui/events/event.h"
34 #include "ui/events/event_rewriter.h" 34 #include "ui/events/event_rewriter.h"
35 #include "ui/events/test/events_test_utils_x11.h" 35 #include "ui/events/test/events_test_utils_x11.h"
36 #include "ui/events/x/touch_factory_x11.h" 36 #include "ui/events/x/touch_factory_x11.h"
37 #include "ui/gfx/x/x11_types.h" 37 #include "ui/gfx/x/x11_types.h"
38 38
39 namespace { 39 namespace {
40 40
41 std::string GetExpectedResultAsString(ui::KeyboardCode ui_keycode, 41 std::string GetKeyEventAsString(const ui::KeyEvent& keyevent) {
42 int ui_flags,
43 ui::EventType ui_type) {
44 return base::StringPrintf("ui_keycode=0x%X ui_flags=0x%X ui_type=%d", 42 return base::StringPrintf("ui_keycode=0x%X ui_flags=0x%X ui_type=%d",
45 ui_keycode, 43 keyevent.key_code(),
46 ui_flags, 44 keyevent.flags(),
47 ui_type); 45 keyevent.type());
48 }
49
50 std::string GetKeyEventAsString(const ui::KeyEvent& keyevent) {
51 return GetExpectedResultAsString(
52 keyevent.key_code(), keyevent.flags(), keyevent.type());
53 } 46 }
54 47
55 std::string GetRewrittenEventAsString(chromeos::EventRewriter* rewriter, 48 std::string GetRewrittenEventAsString(chromeos::EventRewriter* rewriter,
56 ui::KeyboardCode ui_keycode, 49 ui::KeyboardCode ui_keycode,
57 int ui_flags, 50 int ui_flags,
58 ui::EventType ui_type) { 51 ui::EventType ui_type) {
59 const ui::KeyEvent event(ui_type, ui_keycode, ui_flags, false); 52 const ui::KeyEvent event(ui_type, ui_keycode, ui_flags, false);
60 scoped_ptr<ui::Event> new_event; 53 scoped_ptr<ui::Event> new_event;
61 rewriter->RewriteEvent(event, &new_event); 54 rewriter->RewriteEvent(event, &new_event);
62 if (new_event) 55 if (new_event)
63 return GetKeyEventAsString( 56 return GetKeyEventAsString(
64 static_cast<const ui::KeyEvent&>(*new_event.get())); 57 static_cast<const ui::KeyEvent&>(*new_event.get()));
65 return GetKeyEventAsString(event); 58 return GetKeyEventAsString(event);
66 } 59 }
67 60
68 // Table entry for simple single key event rewriting tests. 61 std::string GetExpectedResultAsString(ui::KeyboardCode ui_keycode,
69 struct KeyTestCase { 62 int ui_flags,
70 enum { 63 ui::EventType ui_type) {
71 // Test types: 64 return base::StringPrintf("ui_keycode=0x%X ui_flags=0x%X ui_type=%d",
72 TEST_VKEY = 1 << 0, // Test ui::KeyEvent with no native event 65 ui_keycode,
73 TEST_X11 = 1 << 1, // Test ui::KeyEvent with native XKeyEvent 66 ui_flags,
74 TEST_ALL = TEST_VKEY|TEST_X11, 67 ui_type);
75 // Special test flags: 68 }
76 NUMPAD = 1 << 8, // Set EF_NUMPAD_KEY on native-based event, because
77 // |XKeysymForWindowsKeyCode()| can not distinguish
78 // between pairs like XK_Insert and XK_KP_Insert.
79 };
80 int test;
81 ui::EventType type;
82 struct {
83 ui::KeyboardCode key_code;
84 int flags;
85 } input, expected;
86 };
87 69
88 // Tests a single stateless key rewrite operation. 70 std::string GetRewrittenEventNumbered(size_t i,
89 // |i| is a an identifying number to locate failing tests in the tables. 71 chromeos::EventRewriter* rewriter,
90 void CheckKeyTestCase(size_t i, 72 ui::KeyboardCode ui_keycode,
91 chromeos::EventRewriter* rewriter, 73 int ui_flags,
92 const KeyTestCase& test) { 74 ui::EventType ui_type) {
93 std::string id = base::StringPrintf("(%zu) ", i); 75 return base::StringPrintf("(%zu) ", i) +
94 std::string expected = 76 GetRewrittenEventAsString(rewriter, ui_keycode, ui_flags, ui_type);
95 id + GetExpectedResultAsString( 77 }
96 test.expected.key_code, test.expected.flags, test.type);
97 78
98 if (test.test & KeyTestCase::TEST_VKEY) { 79 std::string GetExpectedResultNumbered(size_t i,
99 // Check rewriting of a non-native-based key event. 80 ui::KeyboardCode ui_keycode,
100 EXPECT_EQ( 81 int ui_flags,
101 expected, 82 ui::EventType ui_type) {
102 id + GetRewrittenEventAsString( 83 return base::StringPrintf("(%zu) ", i) +
103 rewriter, test.input.key_code, test.input.flags, test.type)); 84 GetExpectedResultAsString(ui_keycode, ui_flags, ui_type);
104 }
105
106 #if defined(USE_X11)
107 if (test.test & KeyTestCase::TEST_X11) {
108 ui::ScopedXI2Event xev;
109 xev.InitKeyEvent(test.type, test.input.key_code, test.input.flags);
110 XEvent* xevent = xev;
111 if (xevent->xkey.keycode) {
112 ui::KeyEvent xkey_event(xevent, false);
113 if (test.test & KeyTestCase::NUMPAD)
114 xkey_event.set_flags(xkey_event.flags() | ui::EF_NUMPAD_KEY);
115 // Verify that the X11-based key event is as expected.
116 EXPECT_EQ(id + GetExpectedResultAsString(
117 test.input.key_code, test.input.flags, test.type),
118 id + GetKeyEventAsString(xkey_event));
119 // Rewrite the event and check the result.
120 scoped_ptr<ui::Event> new_event;
121 rewriter->RewriteEvent(xkey_event, &new_event);
122 ui::KeyEvent& rewritten_key_event =
123 new_event ? *static_cast<ui::KeyEvent*>(new_event.get()) : xkey_event;
124 EXPECT_EQ(expected, id + GetKeyEventAsString(rewritten_key_event));
125 // Build a new ui::KeyEvent from the rewritten native component,
126 // and check that it also matches the rewritten event.
127 ui::KeyEvent from_native_event(rewritten_key_event.native_event(), false);
128 EXPECT_EQ(expected, id + GetKeyEventAsString(from_native_event));
129 }
130 }
131 #endif
132 } 85 }
133 86
134 } // namespace 87 } // namespace
135 88
136 namespace chromeos { 89 namespace chromeos {
137 90
138 class EventRewriterTest : public ash::test::AshTestBase { 91 class EventRewriterTest : public ash::test::AshTestBase {
139 public: 92 public:
140 EventRewriterTest() 93 EventRewriterTest()
141 : display_(gfx::GetXDisplay()), 94 : display_(gfx::GetXDisplay()),
142 mock_user_manager_(new chromeos::MockUserManager), 95 mock_user_manager_(new chromeos::MockUserManager),
143 user_manager_enabler_(mock_user_manager_), 96 user_manager_enabler_(mock_user_manager_),
144 input_method_manager_mock_(NULL) {} 97 input_method_manager_mock_(NULL) {
98 }
145 virtual ~EventRewriterTest() {} 99 virtual ~EventRewriterTest() {}
146 100
147 virtual void SetUp() { 101 virtual void SetUp() {
148 // Mocking user manager because the real one needs to be called on UI thread 102 // Mocking user manager because the real one needs to be called on UI thread
149 EXPECT_CALL(*mock_user_manager_, IsLoggedInAsGuest()) 103 EXPECT_CALL(*mock_user_manager_, IsLoggedInAsGuest())
150 .WillRepeatedly(testing::Return(false)); 104 .WillRepeatedly(testing::Return(false));
151 input_method_manager_mock_ = 105 input_method_manager_mock_ =
152 new chromeos::input_method::MockInputMethodManager; 106 new chromeos::input_method::MockInputMethodManager;
153 chromeos::input_method::InitializeForTesting( 107 chromeos::input_method::InitializeForTesting(
154 input_method_manager_mock_); // pass ownership 108 input_method_manager_mock_); // pass ownership
(...skipping 25 matching lines...) Expand all
180 }; 134 };
181 135
182 TEST_F(EventRewriterTest, TestRewriteCommandToControl) { 136 TEST_F(EventRewriterTest, TestRewriteCommandToControl) {
183 // First, test with a PC keyboard. 137 // First, test with a PC keyboard.
184 TestingPrefServiceSyncable prefs; 138 TestingPrefServiceSyncable prefs;
185 EventRewriter rewriter; 139 EventRewriter rewriter;
186 rewriter.DeviceAddedForTesting(0, "PC Keyboard"); 140 rewriter.DeviceAddedForTesting(0, "PC Keyboard");
187 rewriter.set_last_device_id_for_testing(0); 141 rewriter.set_last_device_id_for_testing(0);
188 rewriter.set_pref_service_for_testing(&prefs); 142 rewriter.set_pref_service_for_testing(&prefs);
189 143
190 KeyTestCase pc_keyboard_tests[] = { 144 // VKEY_A, Alt modifier.
191 // VKEY_A, Alt modifier. 145 EXPECT_EQ(GetExpectedResultAsString(
192 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 146 ui::VKEY_A, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
193 {ui::VKEY_A, ui::EF_ALT_DOWN}, 147 GetRewrittenEventAsString(
194 {ui::VKEY_A, ui::EF_ALT_DOWN}}, 148 &rewriter, ui::VKEY_A, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED));
195 149
196 // VKEY_A, Win modifier. 150 // VKEY_A, Win modifier.
197 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 151 EXPECT_EQ(
198 {ui::VKEY_A, ui::EF_COMMAND_DOWN}, 152 GetExpectedResultAsString(
199 {ui::VKEY_A, ui::EF_COMMAND_DOWN}}, 153 ui::VKEY_A, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED),
154 GetRewrittenEventAsString(
155 &rewriter, ui::VKEY_A, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED));
200 156
201 // VKEY_A, Alt+Win modifier. 157 // VKEY_A, Alt+Win modifier.
202 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 158 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A,
203 {ui::VKEY_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 159 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
204 {ui::VKEY_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}}, 160 ui::ET_KEY_PRESSED),
161 GetRewrittenEventAsString(&rewriter,
162 ui::VKEY_A,
163 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
164 ui::ET_KEY_PRESSED));
205 165
206 // VKEY_LWIN (left Windows key), Alt modifier. 166 // VKEY_LWIN (left Windows key), Alt modifier.
207 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 167 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_LWIN,
208 {ui::VKEY_LWIN, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 168 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
209 {ui::VKEY_LWIN, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}}, 169 ui::ET_KEY_PRESSED),
170 GetRewrittenEventAsString(&rewriter,
171 ui::VKEY_LWIN,
172 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
173 ui::ET_KEY_PRESSED));
210 174
211 // VKEY_RWIN (right Windows key), Alt modifier. 175 // VKEY_RWIN (right Windows key), Alt modifier.
212 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 176 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_RWIN,
213 {ui::VKEY_RWIN, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 177 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
214 {ui::VKEY_RWIN, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}}, 178 ui::ET_KEY_PRESSED),
215 }; 179 GetRewrittenEventAsString(&rewriter,
216 180 ui::VKEY_RWIN,
217 for (size_t i = 0; i < arraysize(pc_keyboard_tests); ++i) { 181 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
218 CheckKeyTestCase(1000 + i, &rewriter, pc_keyboard_tests[i]); 182 ui::ET_KEY_PRESSED));
219 }
220 183
221 // An Apple keyboard reusing the ID, zero. 184 // An Apple keyboard reusing the ID, zero.
222 rewriter.DeviceAddedForTesting(0, "Apple Keyboard"); 185 rewriter.DeviceAddedForTesting(0, "Apple Keyboard");
223 rewriter.set_last_device_id_for_testing(0); 186 rewriter.set_last_device_id_for_testing(0);
224 187
225 KeyTestCase apple_keyboard_tests[] = { 188 // VKEY_A, Alt modifier.
226 // VKEY_A, Alt modifier. 189 EXPECT_EQ(GetExpectedResultAsString(
227 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 190 ui::VKEY_A, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
228 {ui::VKEY_A, ui::EF_ALT_DOWN}, 191 GetRewrittenEventAsString(
229 {ui::VKEY_A, ui::EF_ALT_DOWN}}, 192 &rewriter, ui::VKEY_A, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED));
230 193
231 // VKEY_A, Win modifier. 194 // VKEY_A, Win modifier.
232 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 195 EXPECT_EQ(
233 {ui::VKEY_A, ui::EF_COMMAND_DOWN}, 196 GetExpectedResultAsString(
234 {ui::VKEY_A, ui::EF_CONTROL_DOWN}}, 197 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
198 GetRewrittenEventAsString(
199 &rewriter, ui::VKEY_A, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED));
235 200
236 // VKEY_A, Alt+Win modifier. 201 // VKEY_A, Alt+Win modifier.
237 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 202 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A,
238 {ui::VKEY_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 203 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
239 {ui::VKEY_A, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}}, 204 ui::ET_KEY_PRESSED),
205 GetRewrittenEventAsString(&rewriter,
206 ui::VKEY_A,
207 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
208 ui::ET_KEY_PRESSED));
240 209
241 // VKEY_LWIN (left Windows key), Alt modifier. 210 // VKEY_LWIN (left Windows key), Alt modifier.
242 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 211 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL,
243 {ui::VKEY_LWIN, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN}, 212 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
244 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN}}, 213 ui::ET_KEY_PRESSED),
214 GetRewrittenEventAsString(&rewriter,
215 ui::VKEY_LWIN,
216 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN,
217 ui::ET_KEY_PRESSED));
245 218
246 // VKEY_RWIN (right Windows key), Alt modifier. 219 // VKEY_RWIN (right Windows key), Alt modifier.
247 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 220 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL,
248 {ui::VKEY_RWIN, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN}, 221 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
249 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN}}, 222 ui::ET_KEY_PRESSED),
250 }; 223 GetRewrittenEventAsString(&rewriter,
251 224 ui::VKEY_RWIN,
252 for (size_t i = 0; i < arraysize(apple_keyboard_tests); ++i) { 225 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN,
253 CheckKeyTestCase(2000 + i, &rewriter, apple_keyboard_tests[i]); 226 ui::ET_KEY_PRESSED));
254 }
255 } 227 }
256 228
257 // For crbug.com/133896. 229 // For crbug.com/133896.
258 TEST_F(EventRewriterTest, TestRewriteCommandToControlWithControlRemapped) { 230 TEST_F(EventRewriterTest, TestRewriteCommandToControlWithControlRemapped) {
259 // Remap Control to Alt. 231 // Remap Control to Alt.
260 TestingPrefServiceSyncable prefs; 232 TestingPrefServiceSyncable prefs;
261 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 233 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
262 IntegerPrefMember control; 234 IntegerPrefMember control;
263 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); 235 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs);
264 control.SetValue(chromeos::input_method::kAltKey); 236 control.SetValue(chromeos::input_method::kAltKey);
265 237
266 EventRewriter rewriter; 238 EventRewriter rewriter;
267 rewriter.set_pref_service_for_testing(&prefs); 239 rewriter.set_pref_service_for_testing(&prefs);
268 rewriter.DeviceAddedForTesting(0, "PC Keyboard"); 240 rewriter.DeviceAddedForTesting(0, "PC Keyboard");
269 rewriter.set_last_device_id_for_testing(0); 241 rewriter.set_last_device_id_for_testing(0);
270 242
271 KeyTestCase pc_keyboard_tests[] = {// Control should be remapped to Alt. 243 // Control should be remapped to Alt.
272 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 244 EXPECT_EQ(GetExpectedResultAsString(
273 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}, 245 ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
274 {ui::VKEY_MENU, ui::EF_ALT_DOWN}}, 246 GetRewrittenEventAsString(&rewriter,
275 }; 247 ui::VKEY_CONTROL,
276 248 ui::EF_CONTROL_DOWN,
277 for (size_t i = 0; i < arraysize(pc_keyboard_tests); ++i) { 249 ui::ET_KEY_PRESSED));
278 CheckKeyTestCase(1000 + i, &rewriter, pc_keyboard_tests[i]);
279 }
280 250
281 // An Apple keyboard reusing the ID, zero. 251 // An Apple keyboard reusing the ID, zero.
282 rewriter.DeviceAddedForTesting(0, "Apple Keyboard"); 252 rewriter.DeviceAddedForTesting(0, "Apple Keyboard");
283 rewriter.set_last_device_id_for_testing(0); 253 rewriter.set_last_device_id_for_testing(0);
284 254
285 KeyTestCase apple_keyboard_tests[] = { 255 // VKEY_LWIN (left Command key) with Alt modifier. The remapped Command key
286 // VKEY_LWIN (left Command key) with Alt modifier. The remapped Command 256 // should never be re-remapped to Alt.
287 // key should never be re-remapped to Alt. 257 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL,
288 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 258 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
289 {ui::VKEY_LWIN, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN}, 259 ui::ET_KEY_PRESSED),
290 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN}}, 260 GetRewrittenEventAsString(&rewriter,
261 ui::VKEY_LWIN,
262 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN,
263 ui::ET_KEY_PRESSED));
291 264
292 // VKEY_RWIN (right Command key) with Alt modifier. The remapped Command 265 // VKEY_RWIN (right Command key) with Alt modifier. The remapped Command key
293 // key should never be re-remapped to Alt. 266 // should never be re-remapped to Alt.
294 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 267 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL,
295 {ui::VKEY_RWIN, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN}, 268 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
296 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN}}, 269 ui::ET_KEY_PRESSED),
297 }; 270 GetRewrittenEventAsString(&rewriter,
298 271 ui::VKEY_RWIN,
299 for (size_t i = 0; i < arraysize(apple_keyboard_tests); ++i) { 272 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN,
300 CheckKeyTestCase(2000 + i, &rewriter, apple_keyboard_tests[i]); 273 ui::ET_KEY_PRESSED));
301 }
302 } 274 }
303 275
304 void EventRewriterTest::TestRewriteNumPadKeys() { 276 void EventRewriterTest::TestRewriteNumPadKeys() {
305 TestingPrefServiceSyncable prefs; 277 TestingPrefServiceSyncable prefs;
306 EventRewriter rewriter; 278 EventRewriter rewriter;
307 rewriter.set_pref_service_for_testing(&prefs); 279 rewriter.set_pref_service_for_testing(&prefs);
308 280
309 KeyTestCase tests[] = { 281 // XK_KP_Insert (= NumPad 0 without Num Lock), no modifier.
310 // XK_KP_Insert (= NumPad 0 without Num Lock), no modifier. 282 EXPECT_EQ(
311 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 283 GetExpectedResultAsString(
312 {ui::VKEY_INSERT, ui::EF_NUMPAD_KEY}, 284 ui::VKEY_NUMPAD0, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
313 {ui::VKEY_NUMPAD0, ui::EF_NUMPAD_KEY}}, 285 GetRewrittenEventAsString(
286 &rewriter, ui::VKEY_INSERT, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
314 287
315 // XK_KP_Insert (= NumPad 0 without Num Lock), Alt modifier. 288 // XK_KP_Insert (= NumPad 0 without Num Lock), Alt modifier.
316 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 289 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD0,
317 {ui::VKEY_INSERT, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 290 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
318 {ui::VKEY_NUMPAD0, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 291 ui::ET_KEY_PRESSED),
292 GetRewrittenEventAsString(&rewriter,
293 ui::VKEY_INSERT,
294 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
295 ui::ET_KEY_PRESSED));
319 296
320 // XK_KP_Delete (= NumPad . without Num Lock), Alt modifier. 297 // XK_KP_Delete (= NumPad . without Num Lock), Alt modifier.
321 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 298 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_DECIMAL,
322 {ui::VKEY_DELETE, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 299 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
323 {ui::VKEY_DECIMAL, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 300 ui::ET_KEY_PRESSED),
301 GetRewrittenEventAsString(&rewriter,
302 ui::VKEY_DELETE,
303 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
304 ui::ET_KEY_PRESSED));
324 305
325 // XK_KP_End (= NumPad 1 without Num Lock), Alt modifier. 306 // XK_KP_End (= NumPad 1 without Num Lock), Alt modifier.
326 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 307 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD1,
327 {ui::VKEY_END, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 308 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
328 {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 309 ui::ET_KEY_PRESSED),
310 GetRewrittenEventAsString(&rewriter,
311 ui::VKEY_END,
312 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
313 ui::ET_KEY_PRESSED));
329 314
330 // XK_KP_Down (= NumPad 2 without Num Lock), Alt modifier. 315 // XK_KP_Down (= NumPad 2 without Num Lock), Alt modifier.
331 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 316 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD2,
332 {ui::VKEY_DOWN, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 317 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
333 {ui::VKEY_NUMPAD2, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 318 ui::ET_KEY_PRESSED),
319 GetRewrittenEventAsString(&rewriter,
320 ui::VKEY_DOWN,
321 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
322 ui::ET_KEY_PRESSED));
334 323
335 // XK_KP_Next (= NumPad 3 without Num Lock), Alt modifier. 324 // XK_KP_Next (= NumPad 3 without Num Lock), Alt modifier.
336 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 325 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD3,
337 {ui::VKEY_NEXT, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 326 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
338 {ui::VKEY_NUMPAD3, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 327 ui::ET_KEY_PRESSED),
328 GetRewrittenEventAsString(&rewriter,
329 ui::VKEY_NEXT,
330 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
331 ui::ET_KEY_PRESSED));
339 332
340 // XK_KP_Left (= NumPad 4 without Num Lock), Alt modifier. 333 // XK_KP_Left (= NumPad 4 without Num Lock), Alt modifier.
341 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 334 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD4,
342 {ui::VKEY_LEFT, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 335 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
343 {ui::VKEY_NUMPAD4, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 336 ui::ET_KEY_PRESSED),
337 GetRewrittenEventAsString(&rewriter,
338 ui::VKEY_LEFT,
339 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
340 ui::ET_KEY_PRESSED));
344 341
345 // XK_KP_Begin (= NumPad 5 without Num Lock), Alt modifier. 342 // XK_KP_Begin (= NumPad 5 without Num Lock), Alt modifier.
346 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 343 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD5,
347 {ui::VKEY_CLEAR, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 344 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
348 {ui::VKEY_NUMPAD5, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 345 ui::ET_KEY_PRESSED),
346 GetRewrittenEventAsString(&rewriter,
347 ui::VKEY_CLEAR,
348 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
349 ui::ET_KEY_PRESSED));
349 350
350 // XK_KP_Right (= NumPad 6 without Num Lock), Alt modifier. 351 // XK_KP_Right (= NumPad 6 without Num Lock), Alt modifier.
351 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 352 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD6,
352 {ui::VKEY_RIGHT, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 353 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
353 {ui::VKEY_NUMPAD6, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 354 ui::ET_KEY_PRESSED),
355 GetRewrittenEventAsString(&rewriter,
356 ui::VKEY_RIGHT,
357 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
358 ui::ET_KEY_PRESSED));
354 359
355 // XK_KP_Home (= NumPad 7 without Num Lock), Alt modifier. 360 // XK_KP_Home (= NumPad 7 without Num Lock), Alt modifier.
356 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 361 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD7,
357 {ui::VKEY_HOME, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 362 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
358 {ui::VKEY_NUMPAD7, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 363 ui::ET_KEY_PRESSED),
364 GetRewrittenEventAsString(&rewriter,
365 ui::VKEY_HOME,
366 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
367 ui::ET_KEY_PRESSED));
359 368
360 // XK_KP_Up (= NumPad 8 without Num Lock), Alt modifier. 369 // XK_KP_Up (= NumPad 8 without Num Lock), Alt modifier.
361 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 370 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD8,
362 {ui::VKEY_UP, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 371 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
363 {ui::VKEY_NUMPAD8, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 372 ui::ET_KEY_PRESSED),
373 GetRewrittenEventAsString(&rewriter,
374 ui::VKEY_UP,
375 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
376 ui::ET_KEY_PRESSED));
364 377
365 // XK_KP_Prior (= NumPad 9 without Num Lock), Alt modifier. 378 // XK_KP_Prior (= NumPad 9 without Num Lock), Alt modifier.
366 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 379 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD9,
367 {ui::VKEY_PRIOR, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}, 380 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
368 {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY}}, 381 ui::ET_KEY_PRESSED),
382 GetRewrittenEventAsString(&rewriter,
383 ui::VKEY_PRIOR,
384 ui::EF_ALT_DOWN | ui::EF_NUMPAD_KEY,
385 ui::ET_KEY_PRESSED));
369 386
370 // XK_KP_0 (= NumPad 0 with Num Lock), Num Lock modifier. 387 // XK_KP_0 (= NumPad 0 with Num Lock), Num Lock modifier.
371 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 388 EXPECT_EQ(
372 {ui::VKEY_NUMPAD0, ui::EF_NUMPAD_KEY}, 389 GetExpectedResultAsString(
373 {ui::VKEY_NUMPAD0, ui::EF_NUMPAD_KEY}}, 390 ui::VKEY_NUMPAD0, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
391 GetRewrittenEventAsString(
392 &rewriter, ui::VKEY_NUMPAD0, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
374 393
375 // XK_KP_DECIMAL (= NumPad . with Num Lock), Num Lock modifier. 394 // XK_KP_DECIMAL (= NumPad . with Num Lock), Num Lock modifier.
376 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 395 EXPECT_EQ(
377 {ui::VKEY_DECIMAL, ui::EF_NUMPAD_KEY}, 396 GetExpectedResultAsString(
378 {ui::VKEY_DECIMAL, ui::EF_NUMPAD_KEY}}, 397 ui::VKEY_DECIMAL, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
398 GetRewrittenEventAsString(
399 &rewriter, ui::VKEY_DECIMAL, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
379 400
380 // XK_KP_1 (= NumPad 1 with Num Lock), Num Lock modifier. 401 // XK_KP_1 (= NumPad 1 with Num Lock), Num Lock modifier.
381 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 402 EXPECT_EQ(
382 {ui::VKEY_NUMPAD1, ui::EF_NUMPAD_KEY}, 403 GetExpectedResultAsString(
383 {ui::VKEY_NUMPAD1, ui::EF_NUMPAD_KEY}}, 404 ui::VKEY_NUMPAD1, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
405 GetRewrittenEventAsString(
406 &rewriter, ui::VKEY_NUMPAD1, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
384 407
385 // XK_KP_2 (= NumPad 2 with Num Lock), Num Lock modifier. 408 // XK_KP_2 (= NumPad 2 with Num Lock), Num Lock modifier.
386 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 409 EXPECT_EQ(
387 {ui::VKEY_NUMPAD2, ui::EF_NUMPAD_KEY}, 410 GetExpectedResultAsString(
388 {ui::VKEY_NUMPAD2, ui::EF_NUMPAD_KEY}}, 411 ui::VKEY_NUMPAD2, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
412 GetRewrittenEventAsString(
413 &rewriter, ui::VKEY_NUMPAD2, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
389 414
390 // XK_KP_3 (= NumPad 3 with Num Lock), Num Lock modifier. 415 // XK_KP_3 (= NumPad 3 with Num Lock), Num Lock modifier.
391 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 416 EXPECT_EQ(
392 {ui::VKEY_NUMPAD3, ui::EF_NUMPAD_KEY}, 417 GetExpectedResultAsString(
393 {ui::VKEY_NUMPAD3, ui::EF_NUMPAD_KEY}}, 418 ui::VKEY_NUMPAD3, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
419 GetRewrittenEventAsString(
420 &rewriter, ui::VKEY_NUMPAD3, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
394 421
395 // XK_KP_4 (= NumPad 4 with Num Lock), Num Lock modifier. 422 // XK_KP_4 (= NumPad 4 with Num Lock), Num Lock modifier.
396 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 423 EXPECT_EQ(
397 {ui::VKEY_NUMPAD4, ui::EF_NUMPAD_KEY}, 424 GetExpectedResultAsString(
398 {ui::VKEY_NUMPAD4, ui::EF_NUMPAD_KEY}}, 425 ui::VKEY_NUMPAD4, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
426 GetRewrittenEventAsString(
427 &rewriter, ui::VKEY_NUMPAD4, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
399 428
400 // XK_KP_5 (= NumPad 5 with Num Lock), Num Lock modifier. 429 // XK_KP_5 (= NumPad 5 with Num Lock), Num Lock modifier.
401 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 430 EXPECT_EQ(
402 {ui::VKEY_NUMPAD5, ui::EF_NUMPAD_KEY}, 431 GetExpectedResultAsString(
403 {ui::VKEY_NUMPAD5, ui::EF_NUMPAD_KEY}}, 432 ui::VKEY_NUMPAD5, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
433 GetRewrittenEventAsString(
434 &rewriter, ui::VKEY_NUMPAD5, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
404 435
405 // XK_KP_6 (= NumPad 6 with Num Lock), Num Lock modifier. 436 // XK_KP_6 (= NumPad 6 with Num Lock), Num Lock modifier.
406 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 437 EXPECT_EQ(
407 {ui::VKEY_NUMPAD6, ui::EF_NUMPAD_KEY}, 438 GetExpectedResultAsString(
408 {ui::VKEY_NUMPAD6, ui::EF_NUMPAD_KEY}}, 439 ui::VKEY_NUMPAD6, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
440 GetRewrittenEventAsString(
441 &rewriter, ui::VKEY_NUMPAD6, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
409 442
410 // XK_KP_7 (= NumPad 7 with Num Lock), Num Lock modifier. 443 // XK_KP_7 (= NumPad 7 with Num Lock), Num Lock modifier.
411 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 444 EXPECT_EQ(
412 {ui::VKEY_NUMPAD7, ui::EF_NUMPAD_KEY}, 445 GetExpectedResultAsString(
413 {ui::VKEY_NUMPAD7, ui::EF_NUMPAD_KEY}}, 446 ui::VKEY_NUMPAD7, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
447 GetRewrittenEventAsString(
448 &rewriter, ui::VKEY_NUMPAD7, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
414 449
415 // XK_KP_8 (= NumPad 8 with Num Lock), Num Lock modifier. 450 // XK_KP_8 (= NumPad 8 with Num Lock), Num Lock modifier.
416 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 451 EXPECT_EQ(
417 {ui::VKEY_NUMPAD8, ui::EF_NUMPAD_KEY}, 452 GetExpectedResultAsString(
418 {ui::VKEY_NUMPAD8, ui::EF_NUMPAD_KEY}}, 453 ui::VKEY_NUMPAD8, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
454 GetRewrittenEventAsString(
455 &rewriter, ui::VKEY_NUMPAD8, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
419 456
420 // XK_KP_9 (= NumPad 9 with Num Lock), Num Lock modifier. 457 // XK_KP_9 (= NumPad 9 with Num Lock), Num Lock modifier.
421 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 458 EXPECT_EQ(
422 {ui::VKEY_NUMPAD9, ui::EF_NUMPAD_KEY}, 459 GetExpectedResultAsString(
423 {ui::VKEY_NUMPAD9, ui::EF_NUMPAD_KEY}}, 460 ui::VKEY_NUMPAD9, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED),
424 }; 461 GetRewrittenEventAsString(
425 462 &rewriter, ui::VKEY_NUMPAD9, ui::EF_NUMPAD_KEY, ui::ET_KEY_PRESSED));
426 for (size_t i = 0; i < arraysize(tests); ++i) {
427 CheckKeyTestCase(1000 + i, &rewriter, tests[i]);
428 }
429 } 463 }
430 464
431 TEST_F(EventRewriterTest, TestRewriteNumPadKeys) { 465 TEST_F(EventRewriterTest, TestRewriteNumPadKeys) {
432 TestRewriteNumPadKeys(); 466 TestRewriteNumPadKeys();
433 } 467 }
434 468
435 TEST_F(EventRewriterTest, TestRewriteNumPadKeysWithDiamondKeyFlag) { 469 TEST_F(EventRewriterTest, TestRewriteNumPadKeysWithDiamondKeyFlag) {
436 // Make sure the num lock works correctly even when Diamond key exists. 470 // Make sure the num lock works correctly even when Diamond key exists.
437 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); 471 const CommandLine original_cl(*CommandLine::ForCurrentProcess());
438 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 472 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
439 chromeos::switches::kHasChromeOSDiamondKey, ""); 473 chromeos::switches::kHasChromeOSDiamondKey, "");
440 474
441 TestRewriteNumPadKeys(); 475 TestRewriteNumPadKeys();
442 *CommandLine::ForCurrentProcess() = original_cl; 476 *CommandLine::ForCurrentProcess() = original_cl;
443 } 477 }
444 478
445 // Tests if the rewriter can handle a Command + Num Pad event. 479 // Tests if the rewriter can handle a Command + Num Pad event.
446 void EventRewriterTest::TestRewriteNumPadKeysOnAppleKeyboard() { 480 void EventRewriterTest::TestRewriteNumPadKeysOnAppleKeyboard() {
447 TestingPrefServiceSyncable prefs; 481 TestingPrefServiceSyncable prefs;
448 EventRewriter rewriter; 482 EventRewriter rewriter;
449 rewriter.DeviceAddedForTesting(0, "Apple Keyboard"); 483 rewriter.DeviceAddedForTesting(0, "Apple Keyboard");
450 rewriter.set_last_device_id_for_testing(0); 484 rewriter.set_last_device_id_for_testing(0);
451 rewriter.set_pref_service_for_testing(&prefs); 485 rewriter.set_pref_service_for_testing(&prefs);
452 486
453 KeyTestCase tests[] = { 487 // XK_KP_End (= NumPad 1 without Num Lock), Win modifier.
454 // XK_KP_End (= NumPad 1 without Num Lock), Win modifier. 488 // The result should be "Num Pad 1 with Control + Num Lock modifiers".
455 // The result should be "Num Pad 1 with Control + Num Lock modifiers". 489 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD1,
456 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 490 ui::EF_CONTROL_DOWN | ui::EF_NUMPAD_KEY,
457 {ui::VKEY_END, ui::EF_COMMAND_DOWN | ui::EF_NUMPAD_KEY}, 491 ui::ET_KEY_PRESSED),
458 {ui::VKEY_NUMPAD1, ui::EF_CONTROL_DOWN | ui::EF_NUMPAD_KEY}}, 492 GetRewrittenEventAsString(&rewriter,
493 ui::VKEY_END,
494 ui::EF_COMMAND_DOWN | ui::EF_NUMPAD_KEY,
495 ui::ET_KEY_PRESSED));
459 496
460 // XK_KP_1 (= NumPad 1 with Num Lock), Win modifier. 497 // XK_KP_1 (= NumPad 1 with Num Lock), Win modifier.
461 // The result should also be "Num Pad 1 with Control + Num Lock 498 // The result should also be "Num Pad 1 with Control + Num Lock modifiers".
462 // modifiers". 499 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_NUMPAD1,
463 {KeyTestCase::TEST_ALL|KeyTestCase::NUMPAD, ui::ET_KEY_PRESSED, 500 ui::EF_CONTROL_DOWN | ui::EF_NUMPAD_KEY,
464 {ui::VKEY_NUMPAD1, ui::EF_COMMAND_DOWN | ui::EF_NUMPAD_KEY}, 501 ui::ET_KEY_PRESSED),
465 {ui::VKEY_NUMPAD1, ui::EF_CONTROL_DOWN | ui::EF_NUMPAD_KEY}}, 502 GetRewrittenEventAsString(&rewriter,
466 }; 503 ui::VKEY_NUMPAD1,
467 504 ui::EF_COMMAND_DOWN | ui::EF_NUMPAD_KEY,
468 for (size_t i = 0; i < arraysize(tests); ++i) { 505 ui::ET_KEY_PRESSED));
469 CheckKeyTestCase(1000 + i, &rewriter, tests[i]);
470 }
471 } 506 }
472 507
473 TEST_F(EventRewriterTest, TestRewriteNumPadKeysOnAppleKeyboard) { 508 TEST_F(EventRewriterTest, TestRewriteNumPadKeysOnAppleKeyboard) {
474 TestRewriteNumPadKeysOnAppleKeyboard(); 509 TestRewriteNumPadKeysOnAppleKeyboard();
475 } 510 }
476 511
477 TEST_F(EventRewriterTest, 512 TEST_F(EventRewriterTest,
478 TestRewriteNumPadKeysOnAppleKeyboardWithDiamondKeyFlag) { 513 TestRewriteNumPadKeysOnAppleKeyboardWithDiamondKeyFlag) {
479 // Makes sure the num lock works correctly even when Diamond key exists. 514 // Makes sure the num lock works correctly even when Diamond key exists.
480 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); 515 const CommandLine original_cl(*CommandLine::ForCurrentProcess());
481 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 516 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
482 chromeos::switches::kHasChromeOSDiamondKey, ""); 517 chromeos::switches::kHasChromeOSDiamondKey, "");
483 518
484 TestRewriteNumPadKeysOnAppleKeyboard(); 519 TestRewriteNumPadKeysOnAppleKeyboard();
485 *CommandLine::ForCurrentProcess() = original_cl; 520 *CommandLine::ForCurrentProcess() = original_cl;
486 } 521 }
487 522
488 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemap) { 523 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemap) {
489 TestingPrefServiceSyncable prefs; 524 TestingPrefServiceSyncable prefs;
490 EventRewriter rewriter; 525 EventRewriter rewriter;
491 rewriter.set_pref_service_for_testing(&prefs); 526 rewriter.set_pref_service_for_testing(&prefs);
492 527
493 KeyTestCase tests[] = { 528 // Press Search. Confirm the event is not rewritten.
494 // Press Search. Confirm the event is not rewritten. 529 EXPECT_EQ(GetExpectedResultAsString(
495 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 530 ui::VKEY_LWIN, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED),
496 {ui::VKEY_LWIN, ui::EF_NONE}, 531 GetRewrittenEventAsString(
497 {ui::VKEY_LWIN, ui::EF_COMMAND_DOWN}}, 532 &rewriter, ui::VKEY_LWIN, ui::EF_NONE, ui::ET_KEY_PRESSED));
498 533
499 // Press left Control. Confirm the event is not rewritten. 534 // Press left Control. Confirm the event is not rewritten.
500 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 535 EXPECT_EQ(GetExpectedResultAsString(
501 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}, 536 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
502 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}}, 537 GetRewrittenEventAsString(&rewriter,
538 ui::VKEY_CONTROL,
539 ui::EF_CONTROL_DOWN,
540 ui::ET_KEY_PRESSED));
503 541
504 // Press right Control. Confirm the event is not rewritten. 542 // Press right Control. Confirm the event is not rewritten.
505 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 543 EXPECT_EQ(GetExpectedResultAsString(
506 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}, 544 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
507 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}}, 545 GetRewrittenEventAsString(&rewriter,
546 ui::VKEY_CONTROL,
547 ui::EF_CONTROL_DOWN,
548 ui::ET_KEY_PRESSED));
508 549
509 // Press left Alt. Confirm the event is not rewritten. 550 // Press left Alt. Confirm the event is not rewritten.
510 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 551 EXPECT_EQ(GetExpectedResultAsString(
511 {ui::VKEY_MENU, ui::EF_ALT_DOWN}, 552 ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
512 {ui::VKEY_MENU, ui::EF_ALT_DOWN}}, 553 GetRewrittenEventAsString(
554 &rewriter, ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED));
513 555
514 // Press right Alt. Confirm the event is not rewritten. 556 // Press right Alt. Confirm the event is not rewritten.
515 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 557 EXPECT_EQ(GetExpectedResultAsString(
516 {ui::VKEY_MENU, ui::EF_ALT_DOWN}, 558 ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
517 {ui::VKEY_MENU, ui::EF_ALT_DOWN}}, 559 GetRewrittenEventAsString(
560 &rewriter, ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED));
518 561
519 // Test KeyRelease event, just in case. 562 // Test KeyRelease event, just in case.
520 // Release Search. Confirm the release event is not rewritten. 563 // Release Search. Confirm the release event is not rewritten.
521 {KeyTestCase::TEST_ALL, ui::ET_KEY_RELEASED, 564 EXPECT_EQ(GetExpectedResultAsString(
522 {ui::VKEY_LWIN, ui::EF_NONE}, 565 ui::VKEY_LWIN, ui::EF_NONE, ui::ET_KEY_RELEASED),
523 {ui::VKEY_LWIN, ui::EF_NONE}}, 566 GetRewrittenEventAsString(
524 }; 567 &rewriter, ui::VKEY_LWIN, ui::EF_NONE, ui::ET_KEY_RELEASED));
525
526 for (size_t i = 0; i < arraysize(tests); ++i) {
527 CheckKeyTestCase(1000 + i, &rewriter, tests[i]);
528 }
529 } 568 }
530 569
531 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemapMultipleKeys) { 570 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemapMultipleKeys) {
532 TestingPrefServiceSyncable prefs; 571 TestingPrefServiceSyncable prefs;
533 EventRewriter rewriter; 572 EventRewriter rewriter;
534 rewriter.set_pref_service_for_testing(&prefs); 573 rewriter.set_pref_service_for_testing(&prefs);
535 574
536 KeyTestCase tests[] = { 575 // Press Alt with Shift. Confirm the event is not rewritten.
537 // Press Alt with Shift. Confirm the event is not rewritten. 576 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_MENU,
538 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 577 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
539 {ui::VKEY_MENU, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN}, 578 ui::ET_KEY_PRESSED),
540 {ui::VKEY_MENU, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN}}, 579 GetRewrittenEventAsString(&rewriter,
580 ui::VKEY_MENU,
581 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
582 ui::ET_KEY_PRESSED));
541 583
542 // Press Search with Caps Lock mask. Confirm the event is not rewritten. 584 // Press Search with Caps Lock mask. Confirm the event is not rewritten.
543 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 585 EXPECT_EQ(
544 {ui::VKEY_LWIN, ui::EF_CAPS_LOCK_DOWN | ui::EF_COMMAND_DOWN}, 586 GetExpectedResultAsString(ui::VKEY_LWIN,
545 {ui::VKEY_LWIN, ui::EF_CAPS_LOCK_DOWN | ui::EF_COMMAND_DOWN}}, 587 ui::EF_CAPS_LOCK_DOWN | ui::EF_COMMAND_DOWN,
588 ui::ET_KEY_PRESSED),
589 GetRewrittenEventAsString(&rewriter,
590 ui::VKEY_LWIN,
591 ui::EF_CAPS_LOCK_DOWN | ui::EF_COMMAND_DOWN,
592 ui::ET_KEY_PRESSED));
546 593
547 // Release Search with Caps Lock mask. Confirm the event is not rewritten. 594 // Release Search with Caps Lock mask. Confirm the event is not rewritten.
548 {KeyTestCase::TEST_ALL, ui::ET_KEY_RELEASED, 595 EXPECT_EQ(GetExpectedResultAsString(
549 {ui::VKEY_LWIN, ui::EF_CAPS_LOCK_DOWN}, 596 ui::VKEY_LWIN, ui::EF_CAPS_LOCK_DOWN, ui::ET_KEY_RELEASED),
550 {ui::VKEY_LWIN, ui::EF_CAPS_LOCK_DOWN}}, 597 GetRewrittenEventAsString(&rewriter,
598 ui::VKEY_LWIN,
599 ui::EF_CAPS_LOCK_DOWN,
600 ui::ET_KEY_RELEASED));
551 601
552 // Press Shift+Ctrl+Alt+Search+A. Confirm the event is not rewritten. 602 // Press Shift+Ctrl+Alt+Search+A. Confirm the event is not rewritten.
553 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 603 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_B,
554 {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 604 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
555 ui::EF_COMMAND_DOWN}, 605 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
556 {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 606 ui::ET_KEY_PRESSED),
557 ui::EF_COMMAND_DOWN}}, 607 GetRewrittenEventAsString(&rewriter,
558 }; 608 ui::VKEY_B,
559 609 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
560 for (size_t i = 0; i < arraysize(tests); ++i) { 610 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
561 CheckKeyTestCase(1000 + i, &rewriter, tests[i]); 611 ui::ET_KEY_PRESSED));
562 }
563 } 612 }
564 613
565 TEST_F(EventRewriterTest, TestRewriteModifiersDisableSome) { 614 TEST_F(EventRewriterTest, TestRewriteModifiersDisableSome) {
566 // Disable Search and Control keys. 615 // Disable Search and Control keys.
567 TestingPrefServiceSyncable prefs; 616 TestingPrefServiceSyncable prefs;
568 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 617 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
569 IntegerPrefMember search; 618 IntegerPrefMember search;
570 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 619 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
571 search.SetValue(chromeos::input_method::kVoidKey); 620 search.SetValue(chromeos::input_method::kVoidKey);
572 IntegerPrefMember control; 621 IntegerPrefMember control;
573 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); 622 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs);
574 control.SetValue(chromeos::input_method::kVoidKey); 623 control.SetValue(chromeos::input_method::kVoidKey);
575 624
576 EventRewriter rewriter; 625 EventRewriter rewriter;
577 rewriter.set_pref_service_for_testing(&prefs); 626 rewriter.set_pref_service_for_testing(&prefs);
578 627
579 KeyTestCase disabled_modifier_tests[] = { 628 // Press Alt with Shift. This key press shouldn't be affected by the
580 // Press Alt with Shift. This key press shouldn't be affected by the 629 // pref. Confirm the event is not rewritten.
581 // pref. Confirm the event is not rewritten. 630 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_MENU,
582 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 631 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
583 {ui::VKEY_MENU, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN}, 632 ui::ET_KEY_PRESSED),
584 {ui::VKEY_MENU, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN}}, 633 GetRewrittenEventAsString(&rewriter,
634 ui::VKEY_MENU,
635 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN,
636 ui::ET_KEY_PRESSED));
585 637
586 // Press Search. Confirm the event is now VKEY_UNKNOWN. 638 // Press Search. Confirm the event is now VKEY_UNKNOWN.
587 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 639 EXPECT_EQ(GetExpectedResultAsString(
588 {ui::VKEY_LWIN, ui::EF_NONE}, 640 ui::VKEY_UNKNOWN, ui::EF_NONE, ui::ET_KEY_PRESSED),
589 {ui::VKEY_UNKNOWN, ui::EF_NONE}}, 641 GetRewrittenEventAsString(
642 &rewriter, ui::VKEY_LWIN, ui::EF_NONE, ui::ET_KEY_PRESSED));
590 643
591 // Press Control. Confirm the event is now VKEY_UNKNOWN. 644 // Press Control. Confirm the event is now VKEY_UNKNOWN.
592 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 645 EXPECT_EQ(GetExpectedResultAsString(
593 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}, 646 ui::VKEY_UNKNOWN, ui::EF_NONE, ui::ET_KEY_PRESSED),
594 {ui::VKEY_UNKNOWN, ui::EF_NONE}}, 647 GetRewrittenEventAsString(
648 &rewriter, ui::VKEY_CONTROL, ui::EF_NONE, ui::ET_KEY_PRESSED));
595 649
596 // Press Control+Search. Confirm the event is now VKEY_UNKNOWN 650 // Press Control+Search. Confirm the event is now VKEY_UNKNOWN
597 // without any modifiers. 651 // without any modifiers.
598 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 652 EXPECT_EQ(
599 {ui::VKEY_LWIN, ui::EF_CONTROL_DOWN}, 653 GetExpectedResultAsString(
600 {ui::VKEY_UNKNOWN, ui::EF_NONE}}, 654 ui::VKEY_UNKNOWN, ui::EF_NONE, ui::ET_KEY_PRESSED),
655 GetRewrittenEventAsString(
656 &rewriter, ui::VKEY_LWIN, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED));
601 657
602 // Press Control+Search+a. Confirm the event is now VKEY_A without any 658 // Press Control+Search+a. Confirm the event is now VKEY_A without any
603 // modifiers. 659 // modifiers.
604 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 660 EXPECT_EQ(
605 {ui::VKEY_A, ui::EF_CONTROL_DOWN}, 661 GetExpectedResultAsString(ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED),
606 {ui::VKEY_A, ui::EF_NONE}}, 662 GetRewrittenEventAsString(
663 &rewriter, ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED));
607 664
608 // Press Control+Search+Alt+a. Confirm the event is now VKEY_A only with 665 // Press Control+Search+Alt+a. Confirm the event is now VKEY_A only with
609 // the Alt modifier. 666 // the Alt modifier.
610 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 667 EXPECT_EQ(GetExpectedResultAsString(
611 {ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN}, 668 ui::VKEY_A, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
612 {ui::VKEY_A, ui::EF_ALT_DOWN}}, 669 GetRewrittenEventAsString(&rewriter,
613 }; 670 ui::VKEY_A,
614 671 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN,
615 for (size_t i = 0; i < arraysize(disabled_modifier_tests); ++i) { 672 ui::ET_KEY_PRESSED));
616 CheckKeyTestCase(1000 + i, &rewriter, disabled_modifier_tests[i]);
617 }
618 673
619 // Remap Alt to Control. 674 // Remap Alt to Control.
620 IntegerPrefMember alt; 675 IntegerPrefMember alt;
621 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); 676 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs);
622 alt.SetValue(chromeos::input_method::kControlKey); 677 alt.SetValue(chromeos::input_method::kControlKey);
623 678
624 KeyTestCase tests[] = { 679 // Press left Alt. Confirm the event is now VKEY_CONTROL
625 // Press left Alt. Confirm the event is now VKEY_CONTROL 680 // even though the Control key itself is disabled.
626 // even though the Control key itself is disabled. 681 EXPECT_EQ(GetExpectedResultAsString(
627 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 682 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
628 {ui::VKEY_MENU, ui::EF_ALT_DOWN}, 683 GetRewrittenEventAsString(
629 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}}, 684 &rewriter, ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED));
630 685
631 // Press Alt+a. Confirm the event is now Control+a even though the Control 686 // Press Alt+a. Confirm the event is now Control+a even though the Control
632 // key itself is disabled. 687 // key itself is disabled.
633 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 688 EXPECT_EQ(GetExpectedResultAsString(
634 {ui::VKEY_A, ui::EF_ALT_DOWN}, 689 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
635 {ui::VKEY_A, ui::EF_CONTROL_DOWN}}, 690 GetRewrittenEventAsString(
636 }; 691 &rewriter, ui::VKEY_A, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED));
637
638 for (size_t i = 0; i < arraysize(tests); ++i) {
639 CheckKeyTestCase(2000 + i, &rewriter, tests[i]);
640 }
641 } 692 }
642 693
643 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToControl) { 694 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToControl) {
644 // Remap Search to Control. 695 // Remap Search to Control.
645 TestingPrefServiceSyncable prefs; 696 TestingPrefServiceSyncable prefs;
646 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 697 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
647 IntegerPrefMember search; 698 IntegerPrefMember search;
648 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 699 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
649 search.SetValue(chromeos::input_method::kControlKey); 700 search.SetValue(chromeos::input_method::kControlKey);
650 701
651 EventRewriter rewriter; 702 EventRewriter rewriter;
652 rewriter.set_pref_service_for_testing(&prefs); 703 rewriter.set_pref_service_for_testing(&prefs);
653 704
654 KeyTestCase s_tests[] = { 705 // Press Search. Confirm the event is now VKEY_CONTROL.
655 // Press Search. Confirm the event is now VKEY_CONTROL. 706 EXPECT_EQ(
656 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 707 GetExpectedResultAsString(
657 {ui::VKEY_LWIN, ui::EF_COMMAND_DOWN}, 708 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
658 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}}, 709 GetRewrittenEventAsString(
659 }; 710 &rewriter, ui::VKEY_LWIN, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED));
660
661 for (size_t i = 0; i < arraysize(s_tests); ++i) {
662 CheckKeyTestCase(1000 + i, &rewriter, s_tests[i]);
663 }
664 711
665 // Remap Alt to Control too. 712 // Remap Alt to Control too.
666 IntegerPrefMember alt; 713 IntegerPrefMember alt;
667 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); 714 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs);
668 alt.SetValue(chromeos::input_method::kControlKey); 715 alt.SetValue(chromeos::input_method::kControlKey);
669 716
670 KeyTestCase sa_tests[] = { 717 // Press Alt. Confirm the event is now VKEY_CONTROL.
671 // Press Alt. Confirm the event is now VKEY_CONTROL. 718 EXPECT_EQ(GetExpectedResultAsString(
672 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 719 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
673 {ui::VKEY_MENU, ui::EF_ALT_DOWN}, 720 GetRewrittenEventAsString(
674 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}}, 721 &rewriter, ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED));
675 722
676 // Press Alt+Search. Confirm the event is now VKEY_CONTROL. 723 // Press Alt+Search. Confirm the event is now VKEY_CONTROL.
677 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 724 EXPECT_EQ(GetExpectedResultAsString(
678 {ui::VKEY_LWIN, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 725 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
679 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}}, 726 GetRewrittenEventAsString(&rewriter,
727 ui::VKEY_LWIN,
728 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
729 ui::ET_KEY_PRESSED));
680 730
681 // Press Control+Alt+Search. Confirm the event is now VKEY_CONTROL. 731 // Press Control+Alt+Search. Confirm the event is now VKEY_CONTROL.
682 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 732 EXPECT_EQ(GetExpectedResultAsString(
683 {ui::VKEY_LWIN, 733 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
684 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 734 GetRewrittenEventAsString(
685 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}}, 735 &rewriter,
736 ui::VKEY_LWIN,
737 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
738 ui::ET_KEY_PRESSED));
686 739
687 // Press Shift+Control+Alt+Search. Confirm the event is now Control with 740 // Press Shift+Control+Alt+Search. Confirm the event is now Control with
688 // Shift and Control modifiers. 741 // Shift and Control modifiers.
689 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 742 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_CONTROL,
690 {ui::VKEY_LWIN, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | 743 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN,
691 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 744 ui::ET_KEY_PRESSED),
692 {ui::VKEY_CONTROL, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN}}, 745 GetRewrittenEventAsString(&rewriter,
746 ui::VKEY_LWIN,
747 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
748 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
749 ui::ET_KEY_PRESSED));
693 750
694 // Press Shift+Control+Alt+Search+B. Confirm the event is now B with Shift 751 // Press Shift+Control+Alt+Search+B. Confirm the event is now B with Shift
695 // and Control modifiers. 752 // and Control modifiers.
696 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 753 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_B,
697 {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 754 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN,
698 ui::EF_COMMAND_DOWN}, 755 ui::ET_KEY_PRESSED),
699 {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN}}, 756 GetRewrittenEventAsString(&rewriter,
700 }; 757 ui::VKEY_B,
701 758 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
702 for (size_t i = 0; i < arraysize(sa_tests); ++i) { 759 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
703 CheckKeyTestCase(2000 + i, &rewriter, sa_tests[i]); 760 ui::ET_KEY_PRESSED));
704 }
705 } 761 }
706 762
707 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToEscape) { 763 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToEscape) {
708 // Remap Search to ESC. 764 // Remap Search to ESC.
709 TestingPrefServiceSyncable prefs; 765 TestingPrefServiceSyncable prefs;
710 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 766 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
711 IntegerPrefMember search; 767 IntegerPrefMember search;
712 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 768 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
713 search.SetValue(chromeos::input_method::kEscapeKey); 769 search.SetValue(chromeos::input_method::kEscapeKey);
714 770
715 EventRewriter rewriter; 771 EventRewriter rewriter;
716 rewriter.set_pref_service_for_testing(&prefs); 772 rewriter.set_pref_service_for_testing(&prefs);
717 773
718 KeyTestCase tests[] = {// Press Search. Confirm the event is now VKEY_ESCAPE. 774 // Press Search. Confirm the event is now VKEY_ESCAPE.
719 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 775 EXPECT_EQ(
720 {ui::VKEY_LWIN, ui::EF_COMMAND_DOWN}, 776 GetExpectedResultAsString(
721 {ui::VKEY_ESCAPE, ui::EF_NONE}}, 777 ui::VKEY_ESCAPE, ui::EF_NONE, ui::ET_KEY_PRESSED),
722 }; 778 GetRewrittenEventAsString(
723 779 &rewriter, ui::VKEY_LWIN, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED));
724 for (size_t i = 0; i < arraysize(tests); ++i) {
725 CheckKeyTestCase(1000 + i, &rewriter, tests[i]);
726 }
727 } 780 }
728 781
729 TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) { 782 TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) {
730 // Remap Search to Alt. 783 // Remap Search to Alt.
731 TestingPrefServiceSyncable prefs; 784 TestingPrefServiceSyncable prefs;
732 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 785 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
733 IntegerPrefMember search; 786 IntegerPrefMember search;
734 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 787 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
735 search.SetValue(chromeos::input_method::kAltKey); 788 search.SetValue(chromeos::input_method::kAltKey);
736 789
737 EventRewriter rewriter; 790 EventRewriter rewriter;
738 rewriter.set_pref_service_for_testing(&prefs); 791 rewriter.set_pref_service_for_testing(&prefs);
739 792
740 KeyTestCase s2a_tests[] = { 793 // Press Search. Confirm the event is now VKEY_MENU.
741 // Press Search. Confirm the event is now VKEY_MENU. 794 EXPECT_EQ(
742 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 795 GetExpectedResultAsString(
743 {ui::VKEY_LWIN, ui::EF_COMMAND_DOWN}, 796 ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED),
744 {ui::VKEY_MENU, ui::EF_ALT_DOWN}}, 797 GetRewrittenEventAsString(
745 }; 798 &rewriter, ui::VKEY_LWIN, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED));
746
747 for (size_t i = 0; i < arraysize(s2a_tests); ++i) {
748 CheckKeyTestCase(1000 + i, &rewriter, s2a_tests[i]);
749 }
750 799
751 // Remap Alt to Control. 800 // Remap Alt to Control.
752 IntegerPrefMember alt; 801 IntegerPrefMember alt;
753 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); 802 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs);
754 alt.SetValue(chromeos::input_method::kControlKey); 803 alt.SetValue(chromeos::input_method::kControlKey);
755 804
756 KeyTestCase a2c_tests[] = { 805 // Press left Alt. Confirm the event is now VKEY_CONTROL.
757 // Press left Alt. Confirm the event is now VKEY_CONTROL. 806 EXPECT_EQ(GetExpectedResultAsString(
758 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 807 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
759 {ui::VKEY_MENU, ui::EF_ALT_DOWN}, 808 GetRewrittenEventAsString(
760 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}}, 809 &rewriter, ui::VKEY_MENU, ui::EF_ALT_DOWN, ui::ET_KEY_PRESSED));
761 };
762
763 for (size_t i = 0; i < arraysize(a2c_tests); ++i) {
764 CheckKeyTestCase(2000 + i, &rewriter, a2c_tests[i]);
765 }
766 810
767 // Remap Control to Search. 811 // Remap Control to Search.
768 IntegerPrefMember control; 812 IntegerPrefMember control;
769 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); 813 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs);
770 control.SetValue(chromeos::input_method::kSearchKey); 814 control.SetValue(chromeos::input_method::kSearchKey);
771 815
772 KeyTestCase c2s_tests[] = { 816 // Press left Control. Confirm the event is now VKEY_LWIN.
773 // Press left Control. Confirm the event is now VKEY_LWIN. 817 EXPECT_EQ(GetExpectedResultAsString(
774 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 818 ui::VKEY_LWIN, ui::EF_COMMAND_DOWN, ui::ET_KEY_PRESSED),
775 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}, 819 GetRewrittenEventAsString(&rewriter,
776 {ui::VKEY_LWIN, ui::EF_COMMAND_DOWN}}, 820 ui::VKEY_CONTROL,
821 ui::EF_CONTROL_DOWN,
822 ui::ET_KEY_PRESSED));
777 823
778 // Then, press all of the three, Control+Alt+Search. 824 // Then, press all of the three, Control+Alt+Search.
779 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 825 EXPECT_EQ(GetExpectedResultAsString(
780 {ui::VKEY_LWIN, 826 ui::VKEY_MENU,
781 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 827 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
782 {ui::VKEY_MENU, 828 ui::ET_KEY_PRESSED),
783 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}}, 829 GetRewrittenEventAsString(
830 &rewriter,
831 ui::VKEY_LWIN,
832 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
833 ui::ET_KEY_PRESSED));
784 834
785 // Press Shift+Control+Alt+Search. 835 // Press Shift+Control+Alt+Search.
786 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 836 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_MENU,
787 {ui::VKEY_LWIN, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | 837 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
788 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 838 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
789 {ui::VKEY_MENU, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | 839 ui::ET_KEY_PRESSED),
790 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}}, 840 GetRewrittenEventAsString(&rewriter,
841 ui::VKEY_LWIN,
842 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
843 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
844 ui::ET_KEY_PRESSED));
791 845
792 // Press Shift+Control+Alt+Search+B 846 // Press Shift+Control+Alt+Search+B
793 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 847 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_B,
794 {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 848 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
795 ui::EF_COMMAND_DOWN}, 849 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
796 {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | 850 ui::ET_KEY_PRESSED),
797 ui::EF_COMMAND_DOWN}}, 851 GetRewrittenEventAsString(&rewriter,
798 }; 852 ui::VKEY_B,
799 853 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN |
800 for (size_t i = 0; i < arraysize(c2s_tests); ++i) { 854 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
801 CheckKeyTestCase(3000 + i, &rewriter, c2s_tests[i]); 855 ui::ET_KEY_PRESSED));
802 }
803 } 856 }
804 857
805 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToCapsLock) { 858 TEST_F(EventRewriterTest, TestRewriteModifiersRemapToCapsLock) {
806 // Remap Search to Caps Lock. 859 // Remap Search to Caps Lock.
807 TestingPrefServiceSyncable prefs; 860 TestingPrefServiceSyncable prefs;
808 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 861 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
809 IntegerPrefMember search; 862 IntegerPrefMember search;
810 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 863 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
811 search.SetValue(chromeos::input_method::kCapsLockKey); 864 search.SetValue(chromeos::input_method::kCapsLockKey);
812 865
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
897 950
898 TEST_F(EventRewriterTest, TestRewriteDiamondKey) { 951 TEST_F(EventRewriterTest, TestRewriteDiamondKey) {
899 TestingPrefServiceSyncable prefs; 952 TestingPrefServiceSyncable prefs;
900 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 953 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
901 954
902 chromeos::input_method::FakeImeKeyboard ime_keyboard; 955 chromeos::input_method::FakeImeKeyboard ime_keyboard;
903 EventRewriter rewriter; 956 EventRewriter rewriter;
904 rewriter.set_pref_service_for_testing(&prefs); 957 rewriter.set_pref_service_for_testing(&prefs);
905 rewriter.set_ime_keyboard_for_testing(&ime_keyboard); 958 rewriter.set_ime_keyboard_for_testing(&ime_keyboard);
906 959
907 KeyTestCase tests[] = { 960 // F15 should work as Ctrl when --has-chromeos-diamond-key is not specified.
908 // F15 should work as Ctrl when --has-chromeos-diamond-key is not 961 EXPECT_EQ(GetExpectedResultAsString(
909 // specified. 962 ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
910 {KeyTestCase::TEST_VKEY, 963 GetRewrittenEventAsString(
911 ui::ET_KEY_PRESSED, 964 &rewriter, ui::VKEY_F15, ui::EF_NONE, ui::ET_KEY_PRESSED));
912 {ui::VKEY_F15, ui::EF_NONE},
913 {ui::VKEY_CONTROL, ui::EF_CONTROL_DOWN}},
914 965
915 // However, Mod2Mask should not be rewritten to CtrlMask when 966 // However, Mod2Mask should not be rewritten to CtrlMask when
916 // --has-chromeos-diamond-key is not specified. 967 // --has-chromeos-diamond-key is not specified.
917 {KeyTestCase::TEST_VKEY, 968 EXPECT_EQ(
918 ui::ET_KEY_PRESSED, 969 GetExpectedResultAsString(ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED),
919 {ui::VKEY_A, ui::EF_NONE}, 970 GetRewrittenEventAsString(
920 {ui::VKEY_A, ui::EF_NONE}}, 971 &rewriter, ui::VKEY_A, ui::EF_NONE, ui::ET_KEY_PRESSED));
921 }; 972 }
922 973
923 for (size_t i = 0; i < arraysize(tests); ++i) {
924 CheckKeyTestCase(1000 + i, &rewriter, tests[i]);
925 }
926 }
927 TEST_F(EventRewriterTest, TestRewriteDiamondKeyWithFlag) { 974 TEST_F(EventRewriterTest, TestRewriteDiamondKeyWithFlag) {
928 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); 975 const CommandLine original_cl(*CommandLine::ForCurrentProcess());
929 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 976 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
930 chromeos::switches::kHasChromeOSDiamondKey, ""); 977 chromeos::switches::kHasChromeOSDiamondKey, "");
931 978
932 TestingPrefServiceSyncable prefs; 979 TestingPrefServiceSyncable prefs;
933 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 980 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
934 981
935 chromeos::input_method::FakeImeKeyboard ime_keyboard; 982 chromeos::input_method::FakeImeKeyboard ime_keyboard;
936 EventRewriter rewriter; 983 EventRewriter rewriter;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 // Remap CapsLock to Control. 1028 // Remap CapsLock to Control.
982 TestingPrefServiceSyncable prefs; 1029 TestingPrefServiceSyncable prefs;
983 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1030 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
984 IntegerPrefMember control; 1031 IntegerPrefMember control;
985 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); 1032 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs);
986 control.SetValue(chromeos::input_method::kControlKey); 1033 control.SetValue(chromeos::input_method::kControlKey);
987 1034
988 EventRewriter rewriter; 1035 EventRewriter rewriter;
989 rewriter.set_pref_service_for_testing(&prefs); 1036 rewriter.set_pref_service_for_testing(&prefs);
990 1037
991 KeyTestCase tests[] = { 1038 // Press CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask.
992 // Press CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask. 1039 // On Chrome OS, CapsLock works as a Mod3 modifier.
993 // On Chrome OS, CapsLock works as a Mod3 modifier. 1040 EXPECT_EQ(
994 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1041 GetExpectedResultAsString(
995 {ui::VKEY_A, ui::EF_MOD3_DOWN}, 1042 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
996 {ui::VKEY_A, ui::EF_CONTROL_DOWN}}, 1043 GetRewrittenEventAsString(
1044 &rewriter, ui::VKEY_A, ui::EF_MOD3_DOWN, ui::ET_KEY_PRESSED));
997 1045
998 // Press Control+CapsLock+a. Confirm that Mod3Mask is rewritten to 1046 // Press Control+CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask
999 // ControlMask 1047 EXPECT_EQ(
1000 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1048 GetExpectedResultAsString(
1001 {ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_MOD3_DOWN}, 1049 ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED),
1002 {ui::VKEY_A, ui::EF_CONTROL_DOWN}}, 1050 GetRewrittenEventAsString(
1051 &rewriter, ui::VKEY_A, ui::EF_CONTROL_DOWN, ui::ET_KEY_PRESSED));
1003 1052
1004 // Press Alt+CapsLock+a. Confirm that Mod3Mask is rewritten to 1053 // Press Alt+CapsLock+a. Confirm that Mod3Mask is rewritten to ControlMask.
1005 // ControlMask. 1054 EXPECT_EQ(GetExpectedResultAsString(ui::VKEY_A,
1006 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1055 ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
1007 {ui::VKEY_A, ui::EF_ALT_DOWN | ui::EF_MOD3_DOWN}, 1056 ui::ET_KEY_PRESSED),
1008 {ui::VKEY_A, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}}, 1057 GetRewrittenEventAsString(&rewriter,
1009 }; 1058 ui::VKEY_A,
1010 1059 ui::EF_ALT_DOWN | ui::EF_MOD3_DOWN,
1011 for (size_t i = 0; i < arraysize(tests); ++i) { 1060 ui::ET_KEY_PRESSED));
1012 CheckKeyTestCase(1000 + i, &rewriter, tests[i]);
1013 }
1014 } 1061 }
1015 1062
1016 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) { 1063 TEST_F(EventRewriterTest, TestRewriteCapsLockMod3InUse) {
1017 // Remap CapsLock to Control. 1064 // Remap CapsLock to Control.
1018 TestingPrefServiceSyncable prefs; 1065 TestingPrefServiceSyncable prefs;
1019 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1066 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1020 IntegerPrefMember control; 1067 IntegerPrefMember control;
1021 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs); 1068 control.Init(prefs::kLanguageRemapCapsLockKeyTo, &prefs);
1022 control.SetValue(chromeos::input_method::kControlKey); 1069 control.SetValue(chromeos::input_method::kControlKey);
1023 1070
(...skipping 12 matching lines...) Expand all
1036 } 1083 }
1037 1084
1038 TEST_F(EventRewriterTest, TestRewriteExtendedKeys) { 1085 TEST_F(EventRewriterTest, TestRewriteExtendedKeys) {
1039 TestingPrefServiceSyncable prefs; 1086 TestingPrefServiceSyncable prefs;
1040 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1087 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1041 EventRewriter rewriter; 1088 EventRewriter rewriter;
1042 rewriter.DeviceAddedForTesting(0, "PC Keyboard"); 1089 rewriter.DeviceAddedForTesting(0, "PC Keyboard");
1043 rewriter.set_last_device_id_for_testing(0); 1090 rewriter.set_last_device_id_for_testing(0);
1044 rewriter.set_pref_service_for_testing(&prefs); 1091 rewriter.set_pref_service_for_testing(&prefs);
1045 1092
1046 KeyTestCase tests[] = { 1093 struct {
1047 // Alt+Backspace -> Delete 1094 ui::KeyboardCode input;
1048 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1095 unsigned int input_mods;
1049 {ui::VKEY_BACK, ui::EF_ALT_DOWN}, 1096 ui::KeyboardCode output;
1050 {ui::VKEY_DELETE, ui::EF_NONE}}, 1097 unsigned int output_mods;
1051 // Control+Alt+Backspace -> Control+Delete 1098 } chromeos_tests[] = {
1052 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1099 // Alt+Backspace -> Delete
1053 {ui::VKEY_BACK, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}, 1100 {ui::VKEY_BACK, ui::EF_ALT_DOWN, ui::VKEY_DELETE, ui::EF_NONE},
1054 {ui::VKEY_DELETE, ui::EF_CONTROL_DOWN}}, 1101 // Control+Alt+Backspace -> Control+Delete
1055 // Search+Alt+Backspace -> Alt+Backspace 1102 {ui::VKEY_BACK, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, ui::VKEY_DELETE,
1056 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1103 ui::EF_CONTROL_DOWN},
1057 {ui::VKEY_BACK, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN}, 1104 // Search+Alt+Backspace -> Alt+Backspace
1058 {ui::VKEY_BACK, ui::EF_ALT_DOWN}}, 1105 {ui::VKEY_BACK, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::VKEY_BACK,
1059 // Search+Control+Alt+Backspace -> Control+Alt+Backspace 1106 ui::EF_ALT_DOWN},
1060 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1107 // Search+Control+Alt+Backspace -> Control+Alt+Backspace
1061 {ui::VKEY_BACK, 1108 {ui::VKEY_BACK,
1062 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}, 1109 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
1063 {ui::VKEY_BACK, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}}, 1110 ui::VKEY_BACK, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN},
1064 // Alt+Up -> Prior 1111 // Alt+Up -> Prior
1065 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1112 {ui::VKEY_UP, ui::EF_ALT_DOWN, ui::VKEY_PRIOR, ui::EF_NONE},
1066 {ui::VKEY_UP, ui::EF_ALT_DOWN}, 1113 // Alt+Down -> Next
1067 {ui::VKEY_PRIOR, ui::EF_NONE}}, 1114 {ui::VKEY_DOWN, ui::EF_ALT_DOWN, ui::VKEY_NEXT, ui::EF_NONE},
1068 // Alt+Down -> Next 1115 // Ctrl+Alt+Up -> Home
1069 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1116 {ui::VKEY_UP, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, ui::VKEY_HOME,
1070 {ui::VKEY_DOWN, ui::EF_ALT_DOWN}, 1117 ui::EF_NONE},
1071 {ui::VKEY_NEXT, ui::EF_NONE}}, 1118 // Ctrl+Alt+Down -> End
1072 // Ctrl+Alt+Up -> Home 1119 {ui::VKEY_DOWN, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, ui::VKEY_END,
1073 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1120 ui::EF_NONE},
1074 {ui::VKEY_UP, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN},
1075 {ui::VKEY_HOME, ui::EF_NONE}},
1076 // Ctrl+Alt+Down -> End
1077 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1078 {ui::VKEY_DOWN, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN},
1079 {ui::VKEY_END, ui::EF_NONE}},
1080 1121
1081 // Search+Alt+Up -> Alt+Up 1122 // Search+Alt+Up -> Alt+Up
1082 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1123 {ui::VKEY_UP, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::VKEY_UP,
1083 {ui::VKEY_UP, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN}, 1124 ui::EF_ALT_DOWN},
1084 {ui::VKEY_UP, ui::EF_ALT_DOWN}}, 1125 // Search+Alt+Down -> Alt+Down
1085 // Search+Alt+Down -> Alt+Down 1126 {ui::VKEY_DOWN, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::VKEY_DOWN,
1086 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1127 ui::EF_ALT_DOWN},
1087 {ui::VKEY_DOWN, ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN}, 1128 // Search+Ctrl+Alt+Up -> Search+Ctrl+Alt+Up
1088 {ui::VKEY_DOWN, ui::EF_ALT_DOWN}}, 1129 {ui::VKEY_UP,
1089 // Search+Ctrl+Alt+Up -> Search+Ctrl+Alt+Up 1130 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
1090 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1131 ui::VKEY_UP, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN},
1091 {ui::VKEY_UP, 1132 // Search+Ctrl+Alt+Down -> Ctrl+Alt+Down
1092 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}, 1133 {ui::VKEY_DOWN,
1093 {ui::VKEY_UP, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}}, 1134 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN,
1094 // Search+Ctrl+Alt+Down -> Ctrl+Alt+Down 1135 ui::VKEY_DOWN, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN},
1095 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1096 {ui::VKEY_DOWN,
1097 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN},
1098 {ui::VKEY_DOWN, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN}},
1099 1136
1100 // Period -> Period 1137 // Period -> Period
1101 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1138 {ui::VKEY_OEM_PERIOD, ui::EF_NONE, ui::VKEY_OEM_PERIOD, ui::EF_NONE},
1102 {ui::VKEY_OEM_PERIOD, ui::EF_NONE},
1103 {ui::VKEY_OEM_PERIOD, ui::EF_NONE}},
1104 1139
1105 // Search+Backspace -> Delete 1140 // Search+Backspace -> Delete
1106 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1141 {ui::VKEY_BACK, ui::EF_COMMAND_DOWN, ui::VKEY_DELETE, ui::EF_NONE},
1107 {ui::VKEY_BACK, ui::EF_COMMAND_DOWN}, 1142 // Search+Up -> Prior
1108 {ui::VKEY_DELETE, ui::EF_NONE}}, 1143 {ui::VKEY_UP, ui::EF_COMMAND_DOWN, ui::VKEY_PRIOR, ui::EF_NONE},
1109 // Search+Up -> Prior 1144 // Search+Down -> Next
1110 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1145 {ui::VKEY_DOWN, ui::EF_COMMAND_DOWN, ui::VKEY_NEXT, ui::EF_NONE},
1111 {ui::VKEY_UP, ui::EF_COMMAND_DOWN}, 1146 // Search+Left -> Home
1112 {ui::VKEY_PRIOR, ui::EF_NONE}}, 1147 {ui::VKEY_LEFT, ui::EF_COMMAND_DOWN, ui::VKEY_HOME, ui::EF_NONE},
1113 // Search+Down -> Next 1148 // Control+Search+Left -> Home
1114 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1149 {ui::VKEY_LEFT, ui::EF_COMMAND_DOWN | ui::EF_CONTROL_DOWN,
1115 {ui::VKEY_DOWN, ui::EF_COMMAND_DOWN}, 1150 ui::VKEY_HOME, ui::EF_CONTROL_DOWN},
1116 {ui::VKEY_NEXT, ui::EF_NONE}}, 1151 // Search+Right -> End
1117 // Search+Left -> Home 1152 {ui::VKEY_RIGHT, ui::EF_COMMAND_DOWN, ui::VKEY_END, ui::EF_NONE},
1118 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1153 // Control+Search+Right -> End
1119 {ui::VKEY_LEFT, ui::EF_COMMAND_DOWN}, 1154 {ui::VKEY_RIGHT, ui::EF_COMMAND_DOWN | ui::EF_CONTROL_DOWN,
1120 {ui::VKEY_HOME, ui::EF_NONE}}, 1155 ui::VKEY_END, ui::EF_CONTROL_DOWN},
1121 // Control+Search+Left -> Home 1156 // Search+Period -> Insert
1122 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1157 {ui::VKEY_OEM_PERIOD, ui::EF_COMMAND_DOWN, ui::VKEY_INSERT,
1123 {ui::VKEY_LEFT, ui::EF_COMMAND_DOWN | ui::EF_CONTROL_DOWN}, 1158 ui::EF_NONE},
1124 {ui::VKEY_HOME, ui::EF_CONTROL_DOWN}}, 1159 // Control+Search+Period -> Control+Insert
1125 // Search+Right -> End 1160 {ui::VKEY_OEM_PERIOD, ui::EF_COMMAND_DOWN | ui::EF_CONTROL_DOWN,
1126 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1161 ui::VKEY_INSERT, ui::EF_CONTROL_DOWN}};
1127 {ui::VKEY_RIGHT, ui::EF_COMMAND_DOWN},
1128 {ui::VKEY_END, ui::EF_NONE}},
1129 // Control+Search+Right -> End
1130 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1131 {ui::VKEY_RIGHT, ui::EF_COMMAND_DOWN | ui::EF_CONTROL_DOWN},
1132 {ui::VKEY_END, ui::EF_CONTROL_DOWN}},
1133 // Search+Period -> Insert
1134 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1135 {ui::VKEY_OEM_PERIOD, ui::EF_COMMAND_DOWN},
1136 {ui::VKEY_INSERT, ui::EF_NONE}},
1137 // Control+Search+Period -> Control+Insert
1138 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1139 {ui::VKEY_OEM_PERIOD, ui::EF_COMMAND_DOWN | ui::EF_CONTROL_DOWN},
1140 {ui::VKEY_INSERT, ui::EF_CONTROL_DOWN}}};
1141 1162
1142 for (size_t i = 0; i < arraysize(tests); ++i) { 1163 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(chromeos_tests); ++i) {
1143 CheckKeyTestCase(1000 + i, &rewriter, tests[i]); 1164 EXPECT_EQ(GetExpectedResultNumbered(i,
1165 chromeos_tests[i].output,
1166 chromeos_tests[i].output_mods,
1167 ui::ET_KEY_PRESSED),
1168 GetRewrittenEventNumbered(i,
1169 &rewriter,
1170 chromeos_tests[i].input,
1171 chromeos_tests[i].input_mods,
1172 ui::ET_KEY_PRESSED));
1144 } 1173 }
1145 } 1174 }
1146 1175
1147 TEST_F(EventRewriterTest, TestRewriteFunctionKeys) { 1176 TEST_F(EventRewriterTest, TestRewriteFunctionKeys) {
1148 TestingPrefServiceSyncable prefs; 1177 TestingPrefServiceSyncable prefs;
1149 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1178 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1150 EventRewriter rewriter; 1179 EventRewriter rewriter;
1151 rewriter.set_pref_service_for_testing(&prefs); 1180 rewriter.set_pref_service_for_testing(&prefs);
1152 1181
1153 KeyTestCase tests[] = { 1182 struct {
1154 // F1 -> Back 1183 ui::KeyboardCode input;
1155 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1184 unsigned int input_mods;
1156 {ui::VKEY_F1, ui::EF_NONE}, 1185 ui::KeyboardCode output;
1157 {ui::VKEY_BROWSER_BACK, ui::EF_NONE}}, 1186 unsigned int output_mods;
1158 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1187 } tests[] = {
1159 {ui::VKEY_F1, ui::EF_CONTROL_DOWN}, 1188 // F1 -> Back
1160 {ui::VKEY_BROWSER_BACK, ui::EF_CONTROL_DOWN}}, 1189 {ui::VKEY_F1, ui::EF_NONE, ui::VKEY_BROWSER_BACK, ui::EF_NONE},
1161 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1190 {ui::VKEY_F1, ui::EF_CONTROL_DOWN, ui::VKEY_BROWSER_BACK,
1162 {ui::VKEY_F1, ui::EF_ALT_DOWN}, 1191 ui::EF_CONTROL_DOWN},
1163 {ui::VKEY_BROWSER_BACK, ui::EF_ALT_DOWN}}, 1192 {ui::VKEY_F1, ui::EF_ALT_DOWN, ui::VKEY_BROWSER_BACK, ui::EF_ALT_DOWN},
1164 // F2 -> Forward 1193 // F2 -> Forward
1165 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1194 {ui::VKEY_F2, ui::EF_NONE, ui::VKEY_BROWSER_FORWARD, ui::EF_NONE},
1166 {ui::VKEY_F2, ui::EF_NONE}, 1195 {ui::VKEY_F2, ui::EF_CONTROL_DOWN, ui::VKEY_BROWSER_FORWARD,
1167 {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE}}, 1196 ui::EF_CONTROL_DOWN},
1168 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1197 {ui::VKEY_F2, ui::EF_ALT_DOWN, ui::VKEY_BROWSER_FORWARD,
1169 {ui::VKEY_F2, ui::EF_CONTROL_DOWN}, 1198 ui::EF_ALT_DOWN},
1170 {ui::VKEY_BROWSER_FORWARD, ui::EF_CONTROL_DOWN}}, 1199 // F3 -> Refresh
1171 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1200 {ui::VKEY_F3, ui::EF_NONE, ui::VKEY_BROWSER_REFRESH, ui::EF_NONE},
1172 {ui::VKEY_F2, ui::EF_ALT_DOWN}, 1201 {ui::VKEY_F3, ui::EF_CONTROL_DOWN, ui::VKEY_BROWSER_REFRESH,
1173 {ui::VKEY_BROWSER_FORWARD, ui::EF_ALT_DOWN}}, 1202 ui::EF_CONTROL_DOWN},
1174 // F3 -> Refresh 1203 {ui::VKEY_F3, ui::EF_ALT_DOWN, ui::VKEY_BROWSER_REFRESH,
1175 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1204 ui::EF_ALT_DOWN},
1176 {ui::VKEY_F3, ui::EF_NONE}, 1205 // F4 -> Launch App 2
1177 {ui::VKEY_BROWSER_REFRESH, ui::EF_NONE}}, 1206 {ui::VKEY_F4, ui::EF_NONE, ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_NONE},
1178 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1207 {ui::VKEY_F4, ui::EF_CONTROL_DOWN, ui::VKEY_MEDIA_LAUNCH_APP2,
1179 {ui::VKEY_F3, ui::EF_CONTROL_DOWN}, 1208 ui::EF_CONTROL_DOWN},
1180 {ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN}}, 1209 {ui::VKEY_F4, ui::EF_ALT_DOWN, ui::VKEY_MEDIA_LAUNCH_APP2,
1181 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1210 ui::EF_ALT_DOWN},
1182 {ui::VKEY_F3, ui::EF_ALT_DOWN}, 1211 // F5 -> Launch App 1
1183 {ui::VKEY_BROWSER_REFRESH, ui::EF_ALT_DOWN}}, 1212 {ui::VKEY_F5, ui::EF_NONE, ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE},
1184 // F4 -> Launch App 2 1213 {ui::VKEY_F5, ui::EF_CONTROL_DOWN, ui::VKEY_MEDIA_LAUNCH_APP1,
1185 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1214 ui::EF_CONTROL_DOWN},
1186 {ui::VKEY_F4, ui::EF_NONE}, 1215 {ui::VKEY_F5, ui::EF_ALT_DOWN, ui::VKEY_MEDIA_LAUNCH_APP1,
1187 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_NONE}}, 1216 ui::EF_ALT_DOWN},
1188 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1217 // F6 -> Brightness down
1189 {ui::VKEY_F4, ui::EF_CONTROL_DOWN}, 1218 {ui::VKEY_F6, ui::EF_NONE, ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE},
1190 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_CONTROL_DOWN}}, 1219 {ui::VKEY_F6, ui::EF_CONTROL_DOWN, ui::VKEY_BRIGHTNESS_DOWN,
1191 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1220 ui::EF_CONTROL_DOWN},
1192 {ui::VKEY_F4, ui::EF_ALT_DOWN}, 1221 {ui::VKEY_F6, ui::EF_ALT_DOWN, ui::VKEY_BRIGHTNESS_DOWN,
1193 {ui::VKEY_MEDIA_LAUNCH_APP2, ui::EF_ALT_DOWN}}, 1222 ui::EF_ALT_DOWN},
1194 // F5 -> Launch App 1 1223 // F7 -> Brightness up
1195 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1224 {ui::VKEY_F7, ui::EF_NONE, ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE},
1196 {ui::VKEY_F5, ui::EF_NONE}, 1225 {ui::VKEY_F7, ui::EF_CONTROL_DOWN, ui::VKEY_BRIGHTNESS_UP,
1197 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE}}, 1226 ui::EF_CONTROL_DOWN},
1198 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1227 {ui::VKEY_F7, ui::EF_ALT_DOWN, ui::VKEY_BRIGHTNESS_UP, ui::EF_ALT_DOWN},
1199 {ui::VKEY_F5, ui::EF_CONTROL_DOWN}, 1228 // F8 -> Volume Mute
1200 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN}}, 1229 {ui::VKEY_F8, ui::EF_NONE, ui::VKEY_VOLUME_MUTE, ui::EF_NONE},
1201 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1230 {ui::VKEY_F8, ui::EF_CONTROL_DOWN, ui::VKEY_VOLUME_MUTE,
1202 {ui::VKEY_F5, ui::EF_ALT_DOWN}, 1231 ui::EF_CONTROL_DOWN},
1203 {ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_ALT_DOWN}}, 1232 {ui::VKEY_F8, ui::EF_ALT_DOWN, ui::VKEY_VOLUME_MUTE, ui::EF_ALT_DOWN},
1204 // F6 -> Brightness down 1233 // F9 -> Volume Down
1205 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1234 {ui::VKEY_F9, ui::EF_NONE, ui::VKEY_VOLUME_DOWN, ui::EF_NONE},
1206 {ui::VKEY_F6, ui::EF_NONE}, 1235 {ui::VKEY_F9, ui::EF_CONTROL_DOWN, ui::VKEY_VOLUME_DOWN,
1207 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE}}, 1236 ui::EF_CONTROL_DOWN},
1208 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1237 {ui::VKEY_F9, ui::EF_ALT_DOWN, ui::VKEY_VOLUME_DOWN, ui::EF_ALT_DOWN},
1209 {ui::VKEY_F6, ui::EF_CONTROL_DOWN}, 1238 // F10 -> Volume Up
1210 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_CONTROL_DOWN}}, 1239 {ui::VKEY_F10, ui::EF_NONE, ui::VKEY_VOLUME_UP, ui::EF_NONE},
1211 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1240 {ui::VKEY_F10, ui::EF_CONTROL_DOWN, ui::VKEY_VOLUME_UP,
1212 {ui::VKEY_F6, ui::EF_ALT_DOWN}, 1241 ui::EF_CONTROL_DOWN},
1213 {ui::VKEY_BRIGHTNESS_DOWN, ui::EF_ALT_DOWN}}, 1242 {ui::VKEY_F10, ui::EF_ALT_DOWN, ui::VKEY_VOLUME_UP, ui::EF_ALT_DOWN},
1214 // F7 -> Brightness up 1243 // F11 -> F11
1215 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1244 {ui::VKEY_F11, ui::EF_NONE, ui::VKEY_F11, ui::EF_NONE},
1216 {ui::VKEY_F7, ui::EF_NONE}, 1245 {ui::VKEY_F11, ui::EF_CONTROL_DOWN, ui::VKEY_F11, ui::EF_CONTROL_DOWN},
1217 {ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE}}, 1246 {ui::VKEY_F11, ui::EF_ALT_DOWN, ui::VKEY_F11, ui::EF_ALT_DOWN},
1218 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1247 // F12 -> F12
1219 {ui::VKEY_F7, ui::EF_CONTROL_DOWN}, 1248 {ui::VKEY_F12, ui::EF_NONE, ui::VKEY_F12, ui::EF_NONE},
1220 {ui::VKEY_BRIGHTNESS_UP, ui::EF_CONTROL_DOWN}}, 1249 {ui::VKEY_F12, ui::EF_CONTROL_DOWN, ui::VKEY_F12, ui::EF_CONTROL_DOWN},
1221 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1250 {ui::VKEY_F12, ui::EF_ALT_DOWN, ui::VKEY_F12, ui::EF_ALT_DOWN},
1222 {ui::VKEY_F7, ui::EF_ALT_DOWN},
1223 {ui::VKEY_BRIGHTNESS_UP, ui::EF_ALT_DOWN}},
1224 // F8 -> Volume Mute
1225 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1226 {ui::VKEY_F8, ui::EF_NONE},
1227 {ui::VKEY_VOLUME_MUTE, ui::EF_NONE}},
1228 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1229 {ui::VKEY_F8, ui::EF_CONTROL_DOWN},
1230 {ui::VKEY_VOLUME_MUTE, ui::EF_CONTROL_DOWN}},
1231 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1232 {ui::VKEY_F8, ui::EF_ALT_DOWN},
1233 {ui::VKEY_VOLUME_MUTE, ui::EF_ALT_DOWN}},
1234 // F9 -> Volume Down
1235 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1236 {ui::VKEY_F9, ui::EF_NONE},
1237 {ui::VKEY_VOLUME_DOWN, ui::EF_NONE}},
1238 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1239 {ui::VKEY_F9, ui::EF_CONTROL_DOWN},
1240 {ui::VKEY_VOLUME_DOWN, ui::EF_CONTROL_DOWN}},
1241 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1242 {ui::VKEY_F9, ui::EF_ALT_DOWN},
1243 {ui::VKEY_VOLUME_DOWN, ui::EF_ALT_DOWN}},
1244 // F10 -> Volume Up
1245 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1246 {ui::VKEY_F10, ui::EF_NONE},
1247 {ui::VKEY_VOLUME_UP, ui::EF_NONE}},
1248 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1249 {ui::VKEY_F10, ui::EF_CONTROL_DOWN},
1250 {ui::VKEY_VOLUME_UP, ui::EF_CONTROL_DOWN}},
1251 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1252 {ui::VKEY_F10, ui::EF_ALT_DOWN},
1253 {ui::VKEY_VOLUME_UP, ui::EF_ALT_DOWN}},
1254 // F11 -> F11
1255 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1256 {ui::VKEY_F11, ui::EF_NONE},
1257 {ui::VKEY_F11, ui::EF_NONE}},
1258 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1259 {ui::VKEY_F11, ui::EF_CONTROL_DOWN},
1260 {ui::VKEY_F11, ui::EF_CONTROL_DOWN}},
1261 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1262 {ui::VKEY_F11, ui::EF_ALT_DOWN},
1263 {ui::VKEY_F11, ui::EF_ALT_DOWN}},
1264 // F12 -> F12
1265 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1266 {ui::VKEY_F12, ui::EF_NONE},
1267 {ui::VKEY_F12, ui::EF_NONE}},
1268 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1269 {ui::VKEY_F12, ui::EF_CONTROL_DOWN},
1270 {ui::VKEY_F12, ui::EF_CONTROL_DOWN}},
1271 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1272 {ui::VKEY_F12, ui::EF_ALT_DOWN},
1273 {ui::VKEY_F12, ui::EF_ALT_DOWN}},
1274 1251
1275 // The number row should not be rewritten without Search key. 1252 // The number row should not be rewritten without Search key.
1276 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1253 {ui::VKEY_1, ui::EF_NONE, ui::VKEY_1, ui::EF_NONE},
1277 {ui::VKEY_1, ui::EF_NONE}, 1254 {ui::VKEY_2, ui::EF_NONE, ui::VKEY_2, ui::EF_NONE},
1278 {ui::VKEY_1, ui::EF_NONE}}, 1255 {ui::VKEY_3, ui::EF_NONE, ui::VKEY_3, ui::EF_NONE},
1279 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1256 {ui::VKEY_4, ui::EF_NONE, ui::VKEY_4, ui::EF_NONE},
1280 {ui::VKEY_2, ui::EF_NONE}, 1257 {ui::VKEY_5, ui::EF_NONE, ui::VKEY_5, ui::EF_NONE},
1281 {ui::VKEY_2, ui::EF_NONE}}, 1258 {ui::VKEY_6, ui::EF_NONE, ui::VKEY_6, ui::EF_NONE},
1282 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1259 {ui::VKEY_7, ui::EF_NONE, ui::VKEY_7, ui::EF_NONE},
1283 {ui::VKEY_3, ui::EF_NONE}, 1260 {ui::VKEY_8, ui::EF_NONE, ui::VKEY_8, ui::EF_NONE},
1284 {ui::VKEY_3, ui::EF_NONE}}, 1261 {ui::VKEY_9, ui::EF_NONE, ui::VKEY_9, ui::EF_NONE},
1285 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1262 {ui::VKEY_0, ui::EF_NONE, ui::VKEY_0, ui::EF_NONE},
1286 {ui::VKEY_4, ui::EF_NONE}, 1263 {ui::VKEY_OEM_MINUS, ui::EF_NONE, ui::VKEY_OEM_MINUS, ui::EF_NONE},
1287 {ui::VKEY_4, ui::EF_NONE}}, 1264 {ui::VKEY_OEM_PLUS, ui::EF_NONE, ui::VKEY_OEM_PLUS, ui::EF_NONE},
1288 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1289 {ui::VKEY_5, ui::EF_NONE},
1290 {ui::VKEY_5, ui::EF_NONE}},
1291 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1292 {ui::VKEY_6, ui::EF_NONE},
1293 {ui::VKEY_6, ui::EF_NONE}},
1294 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1295 {ui::VKEY_7, ui::EF_NONE},
1296 {ui::VKEY_7, ui::EF_NONE}},
1297 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1298 {ui::VKEY_8, ui::EF_NONE},
1299 {ui::VKEY_8, ui::EF_NONE}},
1300 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1301 {ui::VKEY_9, ui::EF_NONE},
1302 {ui::VKEY_9, ui::EF_NONE}},
1303 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1304 {ui::VKEY_0, ui::EF_NONE},
1305 {ui::VKEY_0, ui::EF_NONE}},
1306 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1307 {ui::VKEY_OEM_MINUS, ui::EF_NONE},
1308 {ui::VKEY_OEM_MINUS, ui::EF_NONE}},
1309 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1310 {ui::VKEY_OEM_PLUS, ui::EF_NONE},
1311 {ui::VKEY_OEM_PLUS, ui::EF_NONE}},
1312 1265
1313 // The number row should be rewritten as the F<number> row with Search 1266 // The number row should be rewritten as the F<number> row with Search
1314 // key. 1267 // key.
1315 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1268 {ui::VKEY_1, ui::EF_COMMAND_DOWN, ui::VKEY_F1, ui::EF_NONE},
1316 {ui::VKEY_1, ui::EF_COMMAND_DOWN}, 1269 {ui::VKEY_2, ui::EF_COMMAND_DOWN, ui::VKEY_F2, ui::EF_NONE},
1317 {ui::VKEY_F1, ui::EF_NONE}}, 1270 {ui::VKEY_3, ui::EF_COMMAND_DOWN, ui::VKEY_F3, ui::EF_NONE},
1318 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1271 {ui::VKEY_4, ui::EF_COMMAND_DOWN, ui::VKEY_F4, ui::EF_NONE},
1319 {ui::VKEY_2, ui::EF_COMMAND_DOWN}, 1272 {ui::VKEY_5, ui::EF_COMMAND_DOWN, ui::VKEY_F5, ui::EF_NONE},
1320 {ui::VKEY_F2, ui::EF_NONE}}, 1273 {ui::VKEY_6, ui::EF_COMMAND_DOWN, ui::VKEY_F6, ui::EF_NONE},
1321 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1274 {ui::VKEY_7, ui::EF_COMMAND_DOWN, ui::VKEY_F7, ui::EF_NONE},
1322 {ui::VKEY_3, ui::EF_COMMAND_DOWN}, 1275 {ui::VKEY_8, ui::EF_COMMAND_DOWN, ui::VKEY_F8, ui::EF_NONE},
1323 {ui::VKEY_F3, ui::EF_NONE}}, 1276 {ui::VKEY_9, ui::EF_COMMAND_DOWN, ui::VKEY_F9, ui::EF_NONE},
1324 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1277 {ui::VKEY_0, ui::EF_COMMAND_DOWN, ui::VKEY_F10, ui::EF_NONE},
1325 {ui::VKEY_4, ui::EF_COMMAND_DOWN}, 1278 {ui::VKEY_OEM_MINUS, ui::EF_COMMAND_DOWN, ui::VKEY_F11, ui::EF_NONE},
1326 {ui::VKEY_F4, ui::EF_NONE}}, 1279 {ui::VKEY_OEM_PLUS, ui::EF_COMMAND_DOWN, ui::VKEY_F12, ui::EF_NONE},
1327 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1328 {ui::VKEY_5, ui::EF_COMMAND_DOWN},
1329 {ui::VKEY_F5, ui::EF_NONE}},
1330 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1331 {ui::VKEY_6, ui::EF_COMMAND_DOWN},
1332 {ui::VKEY_F6, ui::EF_NONE}},
1333 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1334 {ui::VKEY_7, ui::EF_COMMAND_DOWN},
1335 {ui::VKEY_F7, ui::EF_NONE}},
1336 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1337 {ui::VKEY_8, ui::EF_COMMAND_DOWN},
1338 {ui::VKEY_F8, ui::EF_NONE}},
1339 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1340 {ui::VKEY_9, ui::EF_COMMAND_DOWN},
1341 {ui::VKEY_F9, ui::EF_NONE}},
1342 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1343 {ui::VKEY_0, ui::EF_COMMAND_DOWN},
1344 {ui::VKEY_F10, ui::EF_NONE}},
1345 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1346 {ui::VKEY_OEM_MINUS, ui::EF_COMMAND_DOWN},
1347 {ui::VKEY_F11, ui::EF_NONE}},
1348 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1349 {ui::VKEY_OEM_PLUS, ui::EF_COMMAND_DOWN},
1350 {ui::VKEY_F12, ui::EF_NONE}},
1351 1280
1352 // The function keys should not be rewritten with Search key pressed. 1281 // The function keys should not be rewritten with Search key pressed.
1353 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1282 {ui::VKEY_F1, ui::EF_COMMAND_DOWN, ui::VKEY_F1, ui::EF_NONE},
1354 {ui::VKEY_F1, ui::EF_COMMAND_DOWN}, 1283 {ui::VKEY_F2, ui::EF_COMMAND_DOWN, ui::VKEY_F2, ui::EF_NONE},
1355 {ui::VKEY_F1, ui::EF_NONE}}, 1284 {ui::VKEY_F3, ui::EF_COMMAND_DOWN, ui::VKEY_F3, ui::EF_NONE},
1356 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1285 {ui::VKEY_F4, ui::EF_COMMAND_DOWN, ui::VKEY_F4, ui::EF_NONE},
1357 {ui::VKEY_F2, ui::EF_COMMAND_DOWN}, 1286 {ui::VKEY_F5, ui::EF_COMMAND_DOWN, ui::VKEY_F5, ui::EF_NONE},
1358 {ui::VKEY_F2, ui::EF_NONE}}, 1287 {ui::VKEY_F6, ui::EF_COMMAND_DOWN, ui::VKEY_F6, ui::EF_NONE},
1359 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1288 {ui::VKEY_F7, ui::EF_COMMAND_DOWN, ui::VKEY_F7, ui::EF_NONE},
1360 {ui::VKEY_F3, ui::EF_COMMAND_DOWN}, 1289 {ui::VKEY_F8, ui::EF_COMMAND_DOWN, ui::VKEY_F8, ui::EF_NONE},
1361 {ui::VKEY_F3, ui::EF_NONE}}, 1290 {ui::VKEY_F9, ui::EF_COMMAND_DOWN, ui::VKEY_F9, ui::EF_NONE},
1362 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1291 {ui::VKEY_F10, ui::EF_COMMAND_DOWN, ui::VKEY_F10, ui::EF_NONE},
1363 {ui::VKEY_F4, ui::EF_COMMAND_DOWN}, 1292 {ui::VKEY_F11, ui::EF_COMMAND_DOWN, ui::VKEY_F11, ui::EF_NONE},
1364 {ui::VKEY_F4, ui::EF_NONE}}, 1293 {ui::VKEY_F12, ui::EF_COMMAND_DOWN, ui::VKEY_F12, ui::EF_NONE},
1365 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1294 };
1366 {ui::VKEY_F5, ui::EF_COMMAND_DOWN},
1367 {ui::VKEY_F5, ui::EF_NONE}},
1368 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1369 {ui::VKEY_F6, ui::EF_COMMAND_DOWN},
1370 {ui::VKEY_F6, ui::EF_NONE}},
1371 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1372 {ui::VKEY_F7, ui::EF_COMMAND_DOWN},
1373 {ui::VKEY_F7, ui::EF_NONE}},
1374 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1375 {ui::VKEY_F8, ui::EF_COMMAND_DOWN},
1376 {ui::VKEY_F8, ui::EF_NONE}},
1377 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1378 {ui::VKEY_F9, ui::EF_COMMAND_DOWN},
1379 {ui::VKEY_F9, ui::EF_NONE}},
1380 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1381 {ui::VKEY_F10, ui::EF_COMMAND_DOWN},
1382 {ui::VKEY_F10, ui::EF_NONE}},
1383 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1384 {ui::VKEY_F11, ui::EF_COMMAND_DOWN},
1385 {ui::VKEY_F11, ui::EF_NONE}},
1386 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED,
1387 {ui::VKEY_F12, ui::EF_COMMAND_DOWN},
1388 {ui::VKEY_F12, ui::EF_NONE}},
1389 };
1390 1295
1391 for (size_t i = 0; i < arraysize(tests); ++i) { 1296 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
1392 CheckKeyTestCase(1000 + i, &rewriter, tests[i]); 1297 EXPECT_EQ(GetExpectedResultNumbered(
1298 i, tests[i].output, tests[i].output_mods, ui::ET_KEY_PRESSED),
1299 GetRewrittenEventNumbered(i,
1300 &rewriter,
1301 tests[i].input,
1302 tests[i].input_mods,
1303 ui::ET_KEY_PRESSED));
1393 } 1304 }
1394 } 1305 }
1395 1306
1396 TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) { 1307 TEST_F(EventRewriterTest, TestRewriteExtendedKeysWithSearchRemapped) {
1397 const CommandLine original_cl(*CommandLine::ForCurrentProcess()); 1308 const CommandLine original_cl(*CommandLine::ForCurrentProcess());
1398 1309
1399 // Remap Search to Control. 1310 // Remap Search to Control.
1400 TestingPrefServiceSyncable prefs; 1311 TestingPrefServiceSyncable prefs;
1401 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1312 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1402 IntegerPrefMember search; 1313 IntegerPrefMember search;
1403 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); 1314 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs);
1404 search.SetValue(chromeos::input_method::kControlKey); 1315 search.SetValue(chromeos::input_method::kControlKey);
1405 1316
1406 EventRewriter rewriter; 1317 EventRewriter rewriter;
1407 rewriter.set_pref_service_for_testing(&prefs); 1318 rewriter.set_pref_service_for_testing(&prefs);
1408 1319
1409 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 1320 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
1410 chromeos::switches::kHasChromeOSKeyboard, ""); 1321 chromeos::switches::kHasChromeOSKeyboard, "");
1411 1322
1412 KeyTestCase tests[] = { 1323 // Alt+Search+Down -> End
1413 // Alt+Search+Down -> End 1324 EXPECT_EQ(
1414 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1325 GetExpectedResultAsString(ui::VKEY_END, ui::EF_NONE, ui::ET_KEY_PRESSED),
1415 {ui::VKEY_DOWN, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 1326 GetRewrittenEventAsString(&rewriter,
1416 {ui::VKEY_END, ui::EF_NONE}}, 1327 ui::VKEY_DOWN,
1328 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
1329 ui::ET_KEY_PRESSED));
1417 1330
1418 // Shift+Alt+Search+Down -> Shift+End 1331 // Shift+Alt+Search+Down -> Shift+End
1419 {KeyTestCase::TEST_ALL, ui::ET_KEY_PRESSED, 1332 EXPECT_EQ(GetExpectedResultAsString(
1420 {ui::VKEY_DOWN, 1333 ui::VKEY_END, ui::EF_SHIFT_DOWN, ui::ET_KEY_PRESSED),
1421 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN}, 1334 GetRewrittenEventAsString(
1422 {ui::VKEY_END, ui::EF_SHIFT_DOWN}}, 1335 &rewriter,
1423 }; 1336 ui::VKEY_DOWN,
1424 1337 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN,
1425 for (size_t i = 0; i < arraysize(tests); ++i) { 1338 ui::ET_KEY_PRESSED));
1426 CheckKeyTestCase(1000 + i, &rewriter, tests[i]);
1427 }
1428 1339
1429 *CommandLine::ForCurrentProcess() = original_cl; 1340 *CommandLine::ForCurrentProcess() = original_cl;
1430 } 1341 }
1431 1342
1432 TEST_F(EventRewriterTest, TestRewriteKeyEventSentByXSendEvent) { 1343 TEST_F(EventRewriterTest, TestRewriteKeyEventSentByXSendEvent) {
1433 // Remap Control to Alt. 1344 // Remap Control to Alt.
1434 TestingPrefServiceSyncable prefs; 1345 TestingPrefServiceSyncable prefs;
1435 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); 1346 chromeos::Preferences::RegisterProfilePrefs(prefs.registry());
1436 IntegerPrefMember control; 1347 IntegerPrefMember control;
1437 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); 1348 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs);
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1629 ui::ScopedXI2Event xev; 1540 ui::ScopedXI2Event xev;
1630 xev.InitGenericButtonEvent( 1541 xev.InitGenericButtonEvent(
1631 11, ui::ET_MOUSE_RELEASED, gfx::Point(), kLeftAndAltFlag); 1542 11, ui::ET_MOUSE_RELEASED, gfx::Point(), kLeftAndAltFlag);
1632 ui::MouseEvent release(xev); 1543 ui::MouseEvent release(xev);
1633 int flags = RewriteMouseEvent(&rewriter, release); 1544 int flags = RewriteMouseEvent(&rewriter, release);
1634 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & flags); 1545 EXPECT_TRUE(ui::EF_RIGHT_MOUSE_BUTTON & flags);
1635 } 1546 }
1636 } 1547 }
1637 1548
1638 } // namespace chromeos 1549 } // namespace chromeos
OLDNEW
« no previous file with comments | « trunk/src/chrome/browser/chromeos/events/event_rewriter.cc ('k') | trunk/src/ui/events/test/events_test_utils_x11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698