OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 <list> | 5 #include <list> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/strings/string16.h" | 8 #include "base/strings/string16.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "chrome/test/chromedriver/chrome/status.h" | 10 #include "chrome/test/chromedriver/chrome/status.h" |
11 #include "chrome/test/chromedriver/chrome/ui_events.h" | 11 #include "chrome/test/chromedriver/chrome/ui_events.h" |
12 #include "chrome/test/chromedriver/key_converter.h" | 12 #include "chrome/test/chromedriver/key_converter.h" |
13 #include "chrome/test/chromedriver/test_util.h" | 13 #include "chrome/test/chromedriver/test_util.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 | 15 |
16 namespace { | 16 namespace { |
17 | 17 |
18 void CheckEvents(const string16& keys, | 18 void CheckEvents(const base::string16& keys, |
19 KeyEvent expected_events[], | 19 KeyEvent expected_events[], |
20 bool release_modifiers, | 20 bool release_modifiers, |
21 size_t expected_size, | 21 size_t expected_size, |
22 int expected_modifiers) { | 22 int expected_modifiers) { |
23 int modifiers = 0; | 23 int modifiers = 0; |
24 std::list<KeyEvent> events; | 24 std::list<KeyEvent> events; |
25 EXPECT_EQ(kOk, ConvertKeysToKeyEvents(keys, release_modifiers, | 25 EXPECT_EQ(kOk, ConvertKeysToKeyEvents(keys, release_modifiers, |
26 &modifiers, &events).code()); | 26 &modifiers, &events).code()); |
27 EXPECT_EQ(expected_size, events.size()); | 27 EXPECT_EQ(expected_size, events.size()); |
28 size_t i = 0; | 28 size_t i = 0; |
29 std::list<KeyEvent>::const_iterator it = events.begin(); | 29 std::list<KeyEvent>::const_iterator it = events.begin(); |
30 while (i < expected_size && it != events.end()) { | 30 while (i < expected_size && it != events.end()) { |
31 EXPECT_EQ(expected_events[i].type, it->type); | 31 EXPECT_EQ(expected_events[i].type, it->type); |
32 EXPECT_EQ(expected_events[i].modifiers, it->modifiers); | 32 EXPECT_EQ(expected_events[i].modifiers, it->modifiers); |
33 EXPECT_EQ(expected_events[i].modified_text, it->modified_text); | 33 EXPECT_EQ(expected_events[i].modified_text, it->modified_text); |
34 EXPECT_EQ(expected_events[i].unmodified_text, it->unmodified_text); | 34 EXPECT_EQ(expected_events[i].unmodified_text, it->unmodified_text); |
35 EXPECT_EQ(expected_events[i].key_code, it->key_code); | 35 EXPECT_EQ(expected_events[i].key_code, it->key_code); |
36 | 36 |
37 ++i; | 37 ++i; |
38 ++it; | 38 ++it; |
39 } | 39 } |
40 EXPECT_EQ(expected_modifiers, modifiers); | 40 EXPECT_EQ(expected_modifiers, modifiers); |
41 } | 41 } |
42 | 42 |
43 void CheckEventsReleaseModifiers(const string16& keys, | 43 void CheckEventsReleaseModifiers(const base::string16& keys, |
44 KeyEvent expected_events[], | 44 KeyEvent expected_events[], |
45 size_t expected_size) { | 45 size_t expected_size) { |
46 CheckEvents(keys, expected_events, true /* release_modifier */, | 46 CheckEvents(keys, expected_events, true /* release_modifier */, |
47 expected_size, 0 /* expected_modifiers */); | 47 expected_size, 0 /* expected_modifiers */); |
48 } | 48 } |
49 | 49 |
50 void CheckEventsReleaseModifiers(const std::string& keys, | 50 void CheckEventsReleaseModifiers(const std::string& keys, |
51 KeyEvent expected_events[], | 51 KeyEvent expected_events[], |
52 size_t expected_size) { | 52 size_t expected_size) { |
53 CheckEventsReleaseModifiers(UTF8ToUTF16(keys), | 53 CheckEventsReleaseModifiers(UTF8ToUTF16(keys), |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 CreateCharEvent("y", "y", 0), | 128 CreateCharEvent("y", "y", 0), |
129 CreateKeyUpEvent(ui::VKEY_Y, 0)}; | 129 CreateKeyUpEvent(ui::VKEY_Y, 0)}; |
130 CheckEventsReleaseModifiers("hey", event_array, arraysize(event_array)); | 130 CheckEventsReleaseModifiers("hey", event_array, arraysize(event_array)); |
131 } | 131 } |
132 | 132 |
133 TEST(KeyConverter, WebDriverSpecialChar) { | 133 TEST(KeyConverter, WebDriverSpecialChar) { |
134 KeyEvent event_array[] = { | 134 KeyEvent event_array[] = { |
135 CreateKeyDownEvent(ui::VKEY_SPACE, 0), | 135 CreateKeyDownEvent(ui::VKEY_SPACE, 0), |
136 CreateCharEvent(" ", " ", 0), | 136 CreateCharEvent(" ", " ", 0), |
137 CreateKeyUpEvent(ui::VKEY_SPACE, 0)}; | 137 CreateKeyUpEvent(ui::VKEY_SPACE, 0)}; |
138 string16 keys; | 138 base::string16 keys; |
139 keys.push_back(static_cast<char16>(0xE00DU)); | 139 keys.push_back(static_cast<char16>(0xE00DU)); |
140 CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); | 140 CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); |
141 } | 141 } |
142 | 142 |
143 TEST(KeyConverter, WebDriverSpecialNonCharKey) { | 143 TEST(KeyConverter, WebDriverSpecialNonCharKey) { |
144 KeyEvent event_array[] = { | 144 KeyEvent event_array[] = { |
145 CreateKeyDownEvent(ui::VKEY_F1, 0), | 145 CreateKeyDownEvent(ui::VKEY_F1, 0), |
146 CreateKeyUpEvent(ui::VKEY_F1, 0)}; | 146 CreateKeyUpEvent(ui::VKEY_F1, 0)}; |
147 string16 keys; | 147 base::string16 keys; |
148 keys.push_back(static_cast<char16>(0xE031U)); | 148 keys.push_back(static_cast<char16>(0xE031U)); |
149 CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); | 149 CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); |
150 } | 150 } |
151 | 151 |
152 TEST(KeyConverter, FrenchKeyOnEnglishLayout) { | 152 TEST(KeyConverter, FrenchKeyOnEnglishLayout) { |
153 KeyEvent event_array[] = { | 153 KeyEvent event_array[] = { |
154 CreateKeyDownEvent(ui::VKEY_UNKNOWN, 0), | 154 CreateKeyDownEvent(ui::VKEY_UNKNOWN, 0), |
155 CreateCharEvent(WideToUTF8(L"\u00E9"), WideToUTF8(L"\u00E9"), 0), | 155 CreateCharEvent(WideToUTF8(L"\u00E9"), WideToUTF8(L"\u00E9"), 0), |
156 CreateKeyUpEvent(ui::VKEY_UNKNOWN, 0)}; | 156 CreateKeyUpEvent(ui::VKEY_UNKNOWN, 0)}; |
157 CheckEventsReleaseModifiers(WideToUTF16(L"\u00E9"), | 157 CheckEventsReleaseModifiers(WideToUTF16(L"\u00E9"), |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 CreateKeyDownEvent(ui::VKEY_A, kShiftKeyModifierMask), | 201 CreateKeyDownEvent(ui::VKEY_A, kShiftKeyModifierMask), |
202 CreateCharEvent("a", "A", kShiftKeyModifierMask), | 202 CreateCharEvent("a", "A", kShiftKeyModifierMask), |
203 CreateKeyUpEvent(ui::VKEY_A, kShiftKeyModifierMask), | 203 CreateKeyUpEvent(ui::VKEY_A, kShiftKeyModifierMask), |
204 CreateKeyDownEvent(ui::VKEY_B, kShiftKeyModifierMask), | 204 CreateKeyDownEvent(ui::VKEY_B, kShiftKeyModifierMask), |
205 CreateCharEvent("b", "B", kShiftKeyModifierMask), | 205 CreateCharEvent("b", "B", kShiftKeyModifierMask), |
206 CreateKeyUpEvent(ui::VKEY_B, kShiftKeyModifierMask), | 206 CreateKeyUpEvent(ui::VKEY_B, kShiftKeyModifierMask), |
207 CreateKeyDownEvent(ui::VKEY_C, kShiftKeyModifierMask), | 207 CreateKeyDownEvent(ui::VKEY_C, kShiftKeyModifierMask), |
208 CreateCharEvent("c", "C", kShiftKeyModifierMask), | 208 CreateCharEvent("c", "C", kShiftKeyModifierMask), |
209 CreateKeyUpEvent(ui::VKEY_C, kShiftKeyModifierMask), | 209 CreateKeyUpEvent(ui::VKEY_C, kShiftKeyModifierMask), |
210 CreateKeyUpEvent(ui::VKEY_SHIFT, 0)}; | 210 CreateKeyUpEvent(ui::VKEY_SHIFT, 0)}; |
211 string16 keys; | 211 base::string16 keys; |
212 keys.push_back(static_cast<char16>(0xE008U)); | 212 keys.push_back(static_cast<char16>(0xE008U)); |
213 keys.append(UTF8ToUTF16("aBc")); | 213 keys.append(UTF8ToUTF16("aBc")); |
214 CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); | 214 CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); |
215 } | 215 } |
216 | 216 |
217 TEST(KeyConverter, ToggleModifiers) { | 217 TEST(KeyConverter, ToggleModifiers) { |
218 KeyEvent event_array[] = { | 218 KeyEvent event_array[] = { |
219 CreateKeyDownEvent(ui::VKEY_SHIFT, kShiftKeyModifierMask), | 219 CreateKeyDownEvent(ui::VKEY_SHIFT, kShiftKeyModifierMask), |
220 CreateKeyUpEvent(ui::VKEY_SHIFT, 0), | 220 CreateKeyUpEvent(ui::VKEY_SHIFT, 0), |
221 CreateKeyDownEvent(ui::VKEY_CONTROL, kControlKeyModifierMask), | 221 CreateKeyDownEvent(ui::VKEY_CONTROL, kControlKeyModifierMask), |
222 CreateKeyUpEvent(ui::VKEY_CONTROL, 0), | 222 CreateKeyUpEvent(ui::VKEY_CONTROL, 0), |
223 CreateKeyDownEvent(ui::VKEY_MENU, kAltKeyModifierMask), | 223 CreateKeyDownEvent(ui::VKEY_MENU, kAltKeyModifierMask), |
224 CreateKeyUpEvent(ui::VKEY_MENU, 0), | 224 CreateKeyUpEvent(ui::VKEY_MENU, 0), |
225 CreateKeyDownEvent(ui::VKEY_COMMAND, kMetaKeyModifierMask), | 225 CreateKeyDownEvent(ui::VKEY_COMMAND, kMetaKeyModifierMask), |
226 CreateKeyUpEvent(ui::VKEY_COMMAND, 0)}; | 226 CreateKeyUpEvent(ui::VKEY_COMMAND, 0)}; |
227 string16 keys; | 227 base::string16 keys; |
228 keys.push_back(static_cast<char16>(0xE008U)); | 228 keys.push_back(static_cast<char16>(0xE008U)); |
229 keys.push_back(static_cast<char16>(0xE008U)); | 229 keys.push_back(static_cast<char16>(0xE008U)); |
230 keys.push_back(static_cast<char16>(0xE009U)); | 230 keys.push_back(static_cast<char16>(0xE009U)); |
231 keys.push_back(static_cast<char16>(0xE009U)); | 231 keys.push_back(static_cast<char16>(0xE009U)); |
232 keys.push_back(static_cast<char16>(0xE00AU)); | 232 keys.push_back(static_cast<char16>(0xE00AU)); |
233 keys.push_back(static_cast<char16>(0xE00AU)); | 233 keys.push_back(static_cast<char16>(0xE00AU)); |
234 keys.push_back(static_cast<char16>(0xE03DU)); | 234 keys.push_back(static_cast<char16>(0xE03DU)); |
235 keys.push_back(static_cast<char16>(0xE03DU)); | 235 keys.push_back(static_cast<char16>(0xE03DU)); |
236 CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); | 236 CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); |
237 } | 237 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 } | 269 } |
270 | 270 |
271 #if defined(OS_LINUX) | 271 #if defined(OS_LINUX) |
272 // Fails on bots: crbug.com/174962 | 272 // Fails on bots: crbug.com/174962 |
273 #define MAYBE_AllEnglishKeyboardSymbols DISABLED_AllEnglishKeyboardSymbols | 273 #define MAYBE_AllEnglishKeyboardSymbols DISABLED_AllEnglishKeyboardSymbols |
274 #else | 274 #else |
275 #define MAYBE_AllEnglishKeyboardSymbols AllEnglishKeyboardSymbols | 275 #define MAYBE_AllEnglishKeyboardSymbols AllEnglishKeyboardSymbols |
276 #endif | 276 #endif |
277 | 277 |
278 TEST(KeyConverter, MAYBE_AllEnglishKeyboardSymbols) { | 278 TEST(KeyConverter, MAYBE_AllEnglishKeyboardSymbols) { |
279 string16 keys; | 279 base::string16 keys; |
280 const ui::KeyboardCode kSymbolKeyCodes[] = { | 280 const ui::KeyboardCode kSymbolKeyCodes[] = { |
281 ui::VKEY_OEM_3, | 281 ui::VKEY_OEM_3, |
282 ui::VKEY_OEM_MINUS, | 282 ui::VKEY_OEM_MINUS, |
283 ui::VKEY_OEM_PLUS, | 283 ui::VKEY_OEM_PLUS, |
284 ui::VKEY_OEM_4, | 284 ui::VKEY_OEM_4, |
285 ui::VKEY_OEM_6, | 285 ui::VKEY_OEM_6, |
286 ui::VKEY_OEM_5, | 286 ui::VKEY_OEM_5, |
287 ui::VKEY_OEM_1, | 287 ui::VKEY_OEM_1, |
288 ui::VKEY_OEM_7, | 288 ui::VKEY_OEM_7, |
289 ui::VKEY_OEM_COMMA, | 289 ui::VKEY_OEM_COMMA, |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 ' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7F, ';', '=', | 337 ' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7F, ';', '=', |
338 #else | 338 #else |
339 0, 0, 0, 0, 0, 0, '\r', '\r', 0, 0, 0, 0, 0, | 339 0, 0, 0, 0, 0, 0, '\r', '\r', 0, 0, 0, 0, 0, |
340 ' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ';', '=', | 340 ' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ';', '=', |
341 #endif | 341 #endif |
342 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', | 342 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', |
343 '*', '+', ',', '-', '.', '/'}; | 343 '*', '+', ',', '-', '.', '/'}; |
344 for (size_t i = 0; i <= 0x3D; ++i) { | 344 for (size_t i = 0; i <= 0x3D; ++i) { |
345 if (i > 0x29 && i < 0x31) | 345 if (i > 0x29 && i < 0x31) |
346 continue; | 346 continue; |
347 string16 keys; | 347 base::string16 keys; |
348 int modifiers = 0; | 348 int modifiers = 0; |
349 keys.push_back(0xE000U + i); | 349 keys.push_back(0xE000U + i); |
350 std::list<KeyEvent> events; | 350 std::list<KeyEvent> events; |
351 if (i == 1) { | 351 if (i == 1) { |
352 EXPECT_NE(kOk, ConvertKeysToKeyEvents(keys, | 352 EXPECT_NE(kOk, ConvertKeysToKeyEvents(keys, |
353 true /* release_modifiers*/, | 353 true /* release_modifiers*/, |
354 &modifiers, &events).code()) | 354 &modifiers, &events).code()) |
355 << "Index: " << i; | 355 << "Index: " << i; |
356 EXPECT_EQ(0u, events.size()) << "Index: " << i; | 356 EXPECT_EQ(0u, events.size()) << "Index: " << i; |
357 } else { | 357 } else { |
(...skipping 20 matching lines...) Expand all Loading... |
378 TEST(KeyConverter, ModifiersState) { | 378 TEST(KeyConverter, ModifiersState) { |
379 int shift_key_modifier = kShiftKeyModifierMask; | 379 int shift_key_modifier = kShiftKeyModifierMask; |
380 int control_key_modifier = shift_key_modifier | kControlKeyModifierMask; | 380 int control_key_modifier = shift_key_modifier | kControlKeyModifierMask; |
381 int alt_key_modifier = control_key_modifier | kAltKeyModifierMask; | 381 int alt_key_modifier = control_key_modifier | kAltKeyModifierMask; |
382 int meta_key_modifier = alt_key_modifier | kMetaKeyModifierMask; | 382 int meta_key_modifier = alt_key_modifier | kMetaKeyModifierMask; |
383 KeyEvent event_array[] = { | 383 KeyEvent event_array[] = { |
384 CreateKeyDownEvent(ui::VKEY_SHIFT, shift_key_modifier), | 384 CreateKeyDownEvent(ui::VKEY_SHIFT, shift_key_modifier), |
385 CreateKeyDownEvent(ui::VKEY_CONTROL, control_key_modifier), | 385 CreateKeyDownEvent(ui::VKEY_CONTROL, control_key_modifier), |
386 CreateKeyDownEvent(ui::VKEY_MENU, alt_key_modifier), | 386 CreateKeyDownEvent(ui::VKEY_MENU, alt_key_modifier), |
387 CreateKeyDownEvent(ui::VKEY_COMMAND, meta_key_modifier)}; | 387 CreateKeyDownEvent(ui::VKEY_COMMAND, meta_key_modifier)}; |
388 string16 keys; | 388 base::string16 keys; |
389 keys.push_back(static_cast<char16>(0xE008U)); | 389 keys.push_back(static_cast<char16>(0xE008U)); |
390 keys.push_back(static_cast<char16>(0xE009U)); | 390 keys.push_back(static_cast<char16>(0xE009U)); |
391 keys.push_back(static_cast<char16>(0xE00AU)); | 391 keys.push_back(static_cast<char16>(0xE00AU)); |
392 keys.push_back(static_cast<char16>(0xE03DU)); | 392 keys.push_back(static_cast<char16>(0xE03DU)); |
393 | 393 |
394 CheckEvents(keys, event_array, false /* release_modifiers */, | 394 CheckEvents(keys, event_array, false /* release_modifiers */, |
395 arraysize(event_array), meta_key_modifier); | 395 arraysize(event_array), meta_key_modifier); |
396 } | 396 } |
397 | 397 |
398 TEST(KeyConverter, ReleaseModifiers) { | 398 TEST(KeyConverter, ReleaseModifiers) { |
399 KeyEvent event_array[] = { | 399 KeyEvent event_array[] = { |
400 CreateKeyDownEvent(ui::VKEY_SHIFT, kShiftKeyModifierMask), | 400 CreateKeyDownEvent(ui::VKEY_SHIFT, kShiftKeyModifierMask), |
401 CreateKeyDownEvent(ui::VKEY_CONTROL, | 401 CreateKeyDownEvent(ui::VKEY_CONTROL, |
402 kShiftKeyModifierMask | kControlKeyModifierMask), | 402 kShiftKeyModifierMask | kControlKeyModifierMask), |
403 CreateKeyUpEvent(ui::VKEY_SHIFT, 0), | 403 CreateKeyUpEvent(ui::VKEY_SHIFT, 0), |
404 CreateKeyUpEvent(ui::VKEY_CONTROL, 0)}; | 404 CreateKeyUpEvent(ui::VKEY_CONTROL, 0)}; |
405 string16 keys; | 405 base::string16 keys; |
406 keys.push_back(static_cast<char16>(0xE008U)); | 406 keys.push_back(static_cast<char16>(0xE008U)); |
407 keys.push_back(static_cast<char16>(0xE009U)); | 407 keys.push_back(static_cast<char16>(0xE009U)); |
408 | 408 |
409 CheckEvents(keys, event_array, true /* release_modifiers */, | 409 CheckEvents(keys, event_array, true /* release_modifiers */, |
410 arraysize(event_array), 0); | 410 arraysize(event_array), 0); |
411 } | 411 } |
OLD | NEW |