Index: chrome/test/webdriver/webdriver_key_converter_unittest.cc |
diff --git a/chrome/test/webdriver/webdriver_key_converter_unittest.cc b/chrome/test/webdriver/webdriver_key_converter_unittest.cc |
deleted file mode 100644 |
index 19e5b7caafb5e71213422eb3d9c5fba64c4668db..0000000000000000000000000000000000000000 |
--- a/chrome/test/webdriver/webdriver_key_converter_unittest.cc |
+++ /dev/null |
@@ -1,376 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/strings/string16.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "chrome/test/automation/automation_json_requests.h" |
-#include "chrome/test/webdriver/webdriver_key_converter.h" |
-#include "chrome/test/webdriver/webdriver_test_util.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace webdriver { |
- |
-void CheckEvents(const string16& keys, |
- WebKeyEvent expected_events[], |
- bool release_modifiers, |
- size_t expected_size, |
- int expected_modifiers) { |
- int modifiers = 0; |
- std::vector<WebKeyEvent> events; |
- std::string error_msg; |
- EXPECT_TRUE(ConvertKeysToWebKeyEvents(keys, Logger(), |
- release_modifiers, |
- &modifiers, &events, &error_msg)); |
- EXPECT_EQ(expected_size, events.size()); |
- for (size_t i = 0; i < events.size() && i < expected_size; ++i) { |
- EXPECT_EQ(expected_events[i].type, events[i].type); |
- EXPECT_EQ(expected_events[i].key_code, events[i].key_code); |
- EXPECT_EQ(expected_events[i].unmodified_text, events[i].unmodified_text); |
- EXPECT_EQ(expected_events[i].modified_text, events[i].modified_text); |
- EXPECT_EQ(expected_events[i].modifiers, events[i].modifiers); |
- } |
- EXPECT_EQ(expected_modifiers, modifiers); |
-} |
- |
-void CheckEventsReleaseModifiers(const string16& keys, |
- WebKeyEvent expected_events[], |
- size_t expected_size) { |
- CheckEvents(keys, expected_events, true /* release_modifier */, |
- expected_size, 0 /* expected_modifiers */); |
-} |
- |
-void CheckEventsReleaseModifiers(const std::string& keys, |
- WebKeyEvent expected_events[], |
- size_t expected_size) { |
- CheckEventsReleaseModifiers(UTF8ToUTF16(keys), |
- expected_events, expected_size); |
-} |
- |
-void CheckNonShiftChar(ui::KeyboardCode key_code, char character) { |
- int modifiers = 0; |
- std::string char_string; |
- char_string.push_back(character); |
- std::vector<WebKeyEvent> events; |
- std::string error_msg; |
- EXPECT_TRUE(ConvertKeysToWebKeyEvents(ASCIIToUTF16(char_string), Logger(), |
- true /* release_modifiers*/, |
- &modifiers, &events, &error_msg)); |
- ASSERT_EQ(3u, events.size()) << "Char: " << character; |
- EXPECT_EQ(key_code, events[0].key_code) << "Char: " << character; |
- ASSERT_EQ(1u, events[1].modified_text.length()) << "Char: " << character; |
- ASSERT_EQ(1u, events[1].unmodified_text.length()) << "Char: " << character; |
- EXPECT_EQ(character, events[1].modified_text[0]) << "Char: " << character; |
- EXPECT_EQ(character, events[1].unmodified_text[0]) << "Char: " << character; |
- EXPECT_EQ(key_code, events[2].key_code) << "Char: " << character; |
-} |
- |
-void CheckShiftChar(ui::KeyboardCode key_code, char character, char lower) { |
- int modifiers = 0; |
- std::string char_string; |
- char_string.push_back(character); |
- std::vector<WebKeyEvent> events; |
- std::string error_msg; |
- EXPECT_TRUE(ConvertKeysToWebKeyEvents(ASCIIToUTF16(char_string), Logger(), |
- true /* release_modifiers*/, |
- &modifiers, &events, &error_msg)); |
- ASSERT_EQ(5u, events.size()) << "Char: " << character; |
- EXPECT_EQ(ui::VKEY_SHIFT, events[0].key_code) << "Char: " << character; |
- EXPECT_EQ(key_code, events[1].key_code) << "Char: " << character; |
- ASSERT_EQ(1u, events[2].modified_text.length()) << "Char: " << character; |
- ASSERT_EQ(1u, events[2].unmodified_text.length()) << "Char: " << character; |
- EXPECT_EQ(character, events[2].modified_text[0]) << "Char: " << character; |
- EXPECT_EQ(lower, events[2].unmodified_text[0]) << "Char: " << character; |
- EXPECT_EQ(key_code, events[3].key_code) << "Char: " << character; |
- EXPECT_EQ(ui::VKEY_SHIFT, events[4].key_code) << "Char: " << character; |
-} |
- |
-TEST(WebDriverKeyConverter, SingleChar) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_H, 0), |
- CreateCharEvent("h", "h", 0), |
- CreateKeyUpEvent(ui::VKEY_H, 0)}; |
- CheckEventsReleaseModifiers("h", event_array, arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, SingleNumber) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_1, 0), |
- CreateCharEvent("1", "1", 0), |
- CreateKeyUpEvent(ui::VKEY_1, 0)}; |
- CheckEventsReleaseModifiers("1", event_array, arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, MultipleChars) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_H, 0), |
- CreateCharEvent("h", "h", 0), |
- CreateKeyUpEvent(ui::VKEY_H, 0), |
- CreateKeyDownEvent(ui::VKEY_E, 0), |
- CreateCharEvent("e", "e", 0), |
- CreateKeyUpEvent(ui::VKEY_E, 0), |
- CreateKeyDownEvent(ui::VKEY_Y, 0), |
- CreateCharEvent("y", "y", 0), |
- CreateKeyUpEvent(ui::VKEY_Y, 0)}; |
- CheckEventsReleaseModifiers("hey", event_array, arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, WebDriverSpecialChar) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_SPACE, 0), |
- CreateCharEvent(" ", " ", 0), |
- CreateKeyUpEvent(ui::VKEY_SPACE, 0)}; |
- string16 keys; |
- keys.push_back(static_cast<char16>(0xE00DU)); |
- CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, WebDriverSpecialNonCharKey) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_F1, 0), |
- CreateKeyUpEvent(ui::VKEY_F1, 0)}; |
- string16 keys; |
- keys.push_back(static_cast<char16>(0xE031U)); |
- CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, FrenchKeyOnEnglishLayout) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_UNKNOWN, 0), |
- CreateCharEvent(WideToUTF8(L"\u00E9"), WideToUTF8(L"\u00E9"), 0), |
- CreateKeyUpEvent(ui::VKEY_UNKNOWN, 0)}; |
- CheckEventsReleaseModifiers(WideToUTF16(L"\u00E9"), |
- event_array, arraysize(event_array)); |
-} |
- |
-#if defined(OS_WIN) |
-TEST(WebDriverKeyConverter, NeedsCtrlAndAlt) { |
- RestoreKeyboardLayoutOnDestruct restore; |
- int ctrl_and_alt = automation::kControlKeyMask | automation::kAltKeyMask; |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_CONTROL, 0), |
- CreateKeyDownEvent(ui::VKEY_MENU, 0), |
- CreateKeyDownEvent(ui::VKEY_Q, ctrl_and_alt), |
- CreateCharEvent("q", "@", ctrl_and_alt), |
- CreateKeyUpEvent(ui::VKEY_Q, ctrl_and_alt), |
- CreateKeyUpEvent(ui::VKEY_MENU, 0), |
- CreateKeyUpEvent(ui::VKEY_CONTROL, 0)}; |
- ASSERT_TRUE(SwitchKeyboardLayout("00000407")); |
- CheckEventsReleaseModifiers("@", event_array, arraysize(event_array)); |
-} |
-#endif |
- |
-TEST(WebDriverKeyConverter, UppercaseCharDoesShift) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_SHIFT, 0), |
- CreateKeyDownEvent(ui::VKEY_A, automation::kShiftKeyMask), |
- CreateCharEvent("a", "A", automation::kShiftKeyMask), |
- CreateKeyUpEvent(ui::VKEY_A, automation::kShiftKeyMask), |
- CreateKeyUpEvent(ui::VKEY_SHIFT, 0)}; |
- CheckEventsReleaseModifiers("A", event_array, arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, UppercaseSymbolCharDoesShift) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_SHIFT, 0), |
- CreateKeyDownEvent(ui::VKEY_1, automation::kShiftKeyMask), |
- CreateCharEvent("1", "!", automation::kShiftKeyMask), |
- CreateKeyUpEvent(ui::VKEY_1, automation::kShiftKeyMask), |
- CreateKeyUpEvent(ui::VKEY_SHIFT, 0)}; |
- CheckEventsReleaseModifiers("!", event_array, arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, UppercaseCharUsesShiftOnlyIfNecessary) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_SHIFT, automation::kShiftKeyMask), |
- CreateKeyDownEvent(ui::VKEY_A, automation::kShiftKeyMask), |
- CreateCharEvent("a", "A", automation::kShiftKeyMask), |
- CreateKeyUpEvent(ui::VKEY_A, automation::kShiftKeyMask), |
- CreateKeyDownEvent(ui::VKEY_B, automation::kShiftKeyMask), |
- CreateCharEvent("b", "B", automation::kShiftKeyMask), |
- CreateKeyUpEvent(ui::VKEY_B, automation::kShiftKeyMask), |
- CreateKeyDownEvent(ui::VKEY_C, automation::kShiftKeyMask), |
- CreateCharEvent("c", "C", automation::kShiftKeyMask), |
- CreateKeyUpEvent(ui::VKEY_C, automation::kShiftKeyMask), |
- CreateKeyUpEvent(ui::VKEY_SHIFT, 0)}; |
- string16 keys; |
- keys.push_back(static_cast<char16>(0xE008U)); |
- keys.append(UTF8ToUTF16("aBc")); |
- CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, ToggleModifiers) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_SHIFT, automation::kShiftKeyMask), |
- CreateKeyUpEvent(ui::VKEY_SHIFT, 0), |
- CreateKeyDownEvent(ui::VKEY_CONTROL, automation::kControlKeyMask), |
- CreateKeyUpEvent(ui::VKEY_CONTROL, 0), |
- CreateKeyDownEvent(ui::VKEY_MENU, automation::kAltKeyMask), |
- CreateKeyUpEvent(ui::VKEY_MENU, 0), |
- CreateKeyDownEvent(ui::VKEY_COMMAND, automation::kMetaKeyMask), |
- CreateKeyUpEvent(ui::VKEY_COMMAND, 0)}; |
- string16 keys; |
- keys.push_back(static_cast<char16>(0xE008U)); |
- keys.push_back(static_cast<char16>(0xE008U)); |
- keys.push_back(static_cast<char16>(0xE009U)); |
- keys.push_back(static_cast<char16>(0xE009U)); |
- keys.push_back(static_cast<char16>(0xE00AU)); |
- keys.push_back(static_cast<char16>(0xE00AU)); |
- keys.push_back(static_cast<char16>(0xE03DU)); |
- keys.push_back(static_cast<char16>(0xE03DU)); |
- CheckEventsReleaseModifiers(keys, event_array, arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, AllShorthandKeys) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_RETURN, 0), |
- CreateCharEvent("\r", "\r", 0), |
- CreateKeyUpEvent(ui::VKEY_RETURN, 0), |
- CreateKeyDownEvent(ui::VKEY_RETURN, 0), |
- CreateCharEvent("\r", "\r", 0), |
- CreateKeyUpEvent(ui::VKEY_RETURN, 0), |
- CreateKeyDownEvent(ui::VKEY_TAB, 0), |
-#if defined(USE_AURA) |
- CreateCharEvent("\t", "\t", 0), |
-#endif |
- CreateKeyUpEvent(ui::VKEY_TAB, 0), |
- CreateKeyDownEvent(ui::VKEY_BACK, 0), |
-#if defined(USE_AURA) |
- CreateCharEvent("\b", "\b", 0), |
-#endif |
- CreateKeyUpEvent(ui::VKEY_BACK, 0), |
- CreateKeyDownEvent(ui::VKEY_SPACE, 0), |
- CreateCharEvent(" ", " ", 0), |
- CreateKeyUpEvent(ui::VKEY_SPACE, 0)}; |
- CheckEventsReleaseModifiers("\n\r\n\t\b ", |
- event_array,arraysize(event_array)); |
-} |
- |
-TEST(WebDriverKeyConverter, AllEnglishKeyboardSymbols) { |
- string16 keys; |
- const ui::KeyboardCode kSymbolKeyCodes[] = { |
- ui::VKEY_OEM_3, |
- ui::VKEY_OEM_MINUS, |
- ui::VKEY_OEM_PLUS, |
- ui::VKEY_OEM_4, |
- ui::VKEY_OEM_6, |
- ui::VKEY_OEM_5, |
- ui::VKEY_OEM_1, |
- ui::VKEY_OEM_7, |
- ui::VKEY_OEM_COMMA, |
- ui::VKEY_OEM_PERIOD, |
- ui::VKEY_OEM_2}; |
- std::string kLowerSymbols = "`-=[]\\;',./"; |
- std::string kUpperSymbols = "~_+{}|:\"<>?"; |
- for (size_t i = 0; i < kLowerSymbols.length(); ++i) |
- CheckNonShiftChar(kSymbolKeyCodes[i], kLowerSymbols[i]); |
- for (size_t i = 0; i < kUpperSymbols.length(); ++i) |
- CheckShiftChar(kSymbolKeyCodes[i], kUpperSymbols[i], kLowerSymbols[i]); |
-} |
- |
-TEST(WebDriverKeyConverter, AllEnglishKeyboardTextChars) { |
- std::string kLowerChars = "0123456789abcdefghijklmnopqrstuvwxyz"; |
- std::string kUpperChars = ")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
- for (size_t i = 0; i < kLowerChars.length(); ++i) { |
- int offset = 0; |
- if (i < 10) |
- offset = ui::VKEY_0; |
- else |
- offset = ui::VKEY_0 + 7; |
- ui::KeyboardCode expected_code = static_cast<ui::KeyboardCode>(offset + i); |
- CheckNonShiftChar(expected_code, kLowerChars[i]); |
- } |
- for (size_t i = 0; i < kUpperChars.length(); ++i) { |
- int offset = 0; |
- if (i < 10) |
- offset = ui::VKEY_0; |
- else |
- offset = ui::VKEY_0 + 7; |
- ui::KeyboardCode expected_code = static_cast<ui::KeyboardCode>(offset + i); |
- CheckShiftChar(expected_code, kUpperChars[i], kLowerChars[i]); |
- } |
-} |
- |
-TEST(WebDriverKeyConverter, AllSpecialWebDriverKeysOnEnglishKeyboard) { |
- const char kTextForKeys[] = { |
-#if defined(USE_AURA) |
- 0, 0, 0, '\b', '\t', 0, '\r', '\r', 0, 0, 0, 0, 0x1B, |
- ' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x7F, ';', '=', |
-#else |
- 0, 0, 0, 0, 0, 0, '\r', '\r', 0, 0, 0, 0, 0, |
- ' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ';', '=', |
-#endif |
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', |
- '*', '+', ',', '-', '.', '/'}; |
- for (size_t i = 0; i <= 0x3D; ++i) { |
- if (i > 0x29 && i < 0x31) |
- continue; |
- string16 keys; |
- int modifiers = 0; |
- keys.push_back(0xE000U + i); |
- std::vector<WebKeyEvent> events; |
- std::string error_msg; |
- if (i == 1) { |
- EXPECT_FALSE(ConvertKeysToWebKeyEvents(keys, Logger(), |
- true /* release_modifiers*/, |
- &modifiers, &events, &error_msg)) |
- << "Index: " << i; |
- EXPECT_EQ(0u, events.size()) << "Index: " << i; |
- } else { |
- EXPECT_TRUE(ConvertKeysToWebKeyEvents(keys, Logger(), |
- true /* release_modifiers */, |
- &modifiers, &events, &error_msg)) |
- << "Index: " << i; |
- if (i == 0) { |
- EXPECT_EQ(0u, events.size()) << "Index: " << i; |
- } else if (i >= arraysize(kTextForKeys) || kTextForKeys[i] == 0) { |
- EXPECT_EQ(2u, events.size()) << "Index: " << i; |
- } else { |
- ASSERT_EQ(3u, events.size()) << "Index: " << i; |
- ASSERT_EQ(1u, events[1].unmodified_text.length()) << "Index: " << i; |
- EXPECT_EQ(kTextForKeys[i], events[1].unmodified_text[0]) |
- << "Index: " << i; |
- } |
- } |
- } |
-} |
- |
-TEST(WebDriverKeyConverter, ModifiersState) { |
- int shift_key_modifier = automation::kShiftKeyMask; |
- int control_key_modifier = shift_key_modifier | automation::kControlKeyMask; |
- int alt_key_modifier = control_key_modifier | automation::kAltKeyMask; |
- int meta_key_modifier = alt_key_modifier | automation::kMetaKeyMask; |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_SHIFT, shift_key_modifier), |
- CreateKeyDownEvent(ui::VKEY_CONTROL, control_key_modifier), |
- CreateKeyDownEvent(ui::VKEY_MENU, alt_key_modifier), |
- CreateKeyDownEvent(ui::VKEY_COMMAND, meta_key_modifier)}; |
- string16 keys; |
- keys.push_back(static_cast<char16>(0xE008U)); |
- keys.push_back(static_cast<char16>(0xE009U)); |
- keys.push_back(static_cast<char16>(0xE00AU)); |
- keys.push_back(static_cast<char16>(0xE03DU)); |
- |
- CheckEvents(keys, event_array, false /* release_modifiers */, |
- arraysize(event_array), meta_key_modifier); |
-} |
- |
-TEST(WebDriverKeyConverter, ReleaseModifiers) { |
- WebKeyEvent event_array[] = { |
- CreateKeyDownEvent(ui::VKEY_SHIFT, automation::kShiftKeyMask), |
- CreateKeyDownEvent(ui::VKEY_CONTROL, |
- automation::kShiftKeyMask | automation::kControlKeyMask), |
- CreateKeyUpEvent(ui::VKEY_SHIFT, 0), |
- CreateKeyUpEvent(ui::VKEY_CONTROL, 0)}; |
- string16 keys; |
- keys.push_back(static_cast<char16>(0xE008U)); |
- keys.push_back(static_cast<char16>(0xE009U)); |
- |
- CheckEvents(keys, event_array, true /* release_modifiers */, |
- arraysize(event_array), 0); |
-} |
- |
-} // namespace webdriver |