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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/strings/string16.h" | 7 #include "base/strings/string16.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
10 #include "chrome/test/chromedriver/chrome/ui_events.h" | 10 #include "chrome/test/chromedriver/chrome/ui_events.h" |
11 #include "chrome/test/chromedriver/keycode_text_conversion.h" | 11 #include "chrome/test/chromedriver/keycode_text_conversion.h" |
12 #include "chrome/test/chromedriver/test_util.h" | |
13 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
14 #include "ui/events/keycodes/keyboard_codes.h" | 13 #include "ui/events/keycodes/keyboard_codes.h" |
14 #include "ui/events/test/keyboard_layout.h" | |
15 | 15 |
16 namespace { | 16 namespace { |
17 | 17 |
18 void CheckCharToKeyCode16(base::char16 character, ui::KeyboardCode key_code, | 18 void CheckCharToKeyCode16(base::char16 character, ui::KeyboardCode key_code, |
19 int modifiers) { | 19 int modifiers) { |
20 ui::KeyboardCode actual_key_code = ui::VKEY_UNKNOWN; | 20 ui::KeyboardCode actual_key_code = ui::VKEY_UNKNOWN; |
21 int actual_modifiers = 0; | 21 int actual_modifiers = 0; |
22 std::string error_msg; | 22 std::string error_msg; |
23 EXPECT_TRUE(ConvertCharToKeyCode( | 23 EXPECT_TRUE(ConvertCharToKeyCode( |
24 character, &actual_key_code, &actual_modifiers, &error_msg)); | 24 character, &actual_key_code, &actual_modifiers, &error_msg)); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
120 | 120 |
121 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) | 121 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) |
122 // Not implemented on Linux. | 122 // Not implemented on Linux. |
123 // Fails if German layout is not installed on Mac. | 123 // Fails if German layout is not installed on Mac. |
124 #define MAYBE_NonShiftModifiers DISABLED_NonShiftModifiers | 124 #define MAYBE_NonShiftModifiers DISABLED_NonShiftModifiers |
125 #else | 125 #else |
126 #define MAYBE_NonShiftModifiers NonShiftModifiers | 126 #define MAYBE_NonShiftModifiers NonShiftModifiers |
127 #endif | 127 #endif |
128 | 128 |
129 TEST(KeycodeTextConversionTest, MAYBE_NonShiftModifiers) { | 129 TEST(KeycodeTextConversionTest, MAYBE_NonShiftModifiers) { |
130 RestoreKeyboardLayoutOnDestruct restore; | 130 ui::ScopedKeyboardLayout keyboard_layout(ui::KEYBOARD_LAYOUT_GERMAN); |
131 #if defined(OS_WIN) | 131 #if defined(OS_WIN) |
132 ASSERT_TRUE(SwitchKeyboardLayout("00000407")); // german | |
133 int ctrl_and_alt = kControlKeyModifierMask | kAltKeyModifierMask; | 132 int ctrl_and_alt = kControlKeyModifierMask | kAltKeyModifierMask; |
134 CheckCharToKeyCode('@', ui::VKEY_Q, ctrl_and_alt); | 133 CheckCharToKeyCode('@', ui::VKEY_Q, ctrl_and_alt); |
135 EXPECT_EQ("@", ConvertKeyCodeToTextNoError(ui::VKEY_Q, ctrl_and_alt)); | 134 EXPECT_EQ("@", ConvertKeyCodeToTextNoError(ui::VKEY_Q, ctrl_and_alt)); |
136 #elif defined(OS_MACOSX) | 135 #elif defined(OS_MACOSX) |
137 ASSERT_TRUE(SwitchKeyboardLayout("com.apple.keylayout.German")); | |
138 EXPECT_EQ("@", ConvertKeyCodeToTextNoError( | 136 EXPECT_EQ("@", ConvertKeyCodeToTextNoError( |
139 ui::VKEY_L, kAltKeyModifierMask)); | 137 ui::VKEY_L, kAltKeyModifierMask)); |
140 #endif | 138 #endif |
141 } | 139 } |
142 | 140 |
143 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) | 141 #if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) |
144 // Not implemented on Linux. | 142 // Not implemented on Linux. |
145 // Fails if German layout is not installed on Mac. | 143 // Fails if German layout is not installed on Mac. |
146 #define MAYBE_NonEnglish DISABLED_NonEnglish | 144 #define MAYBE_NonEnglish DISABLED_NonEnglish |
147 #else | 145 #else |
148 #define MAYBE_NonEnglish NonEnglish | 146 #define MAYBE_NonEnglish NonEnglish |
149 #endif | 147 #endif |
150 | 148 |
151 TEST(KeycodeTextConversionTest, MAYBE_NonEnglish) { | 149 TEST(KeycodeTextConversionTest, MAYBE_NonEnglish) { |
152 RestoreKeyboardLayoutOnDestruct restore; | |
153 #if defined(OS_WIN) | 150 #if defined(OS_WIN) |
154 ASSERT_TRUE(SwitchKeyboardLayout("00000408")); // greek | 151 ui::ScopedKeyboardLayout greek_layout(ui::KEYBOARD_LAYOUT_GREEK); |
155 CheckCharToKeyCode(';', ui::VKEY_Q, 0); | 152 CheckCharToKeyCode(';', ui::VKEY_Q, 0); |
156 EXPECT_EQ(";", ConvertKeyCodeToTextNoError(ui::VKEY_Q, 0)); | 153 EXPECT_EQ(";", ConvertKeyCodeToTextNoError(ui::VKEY_Q, 0)); |
157 // Regression test for chromedriver bug #405. | 154 // Regression test for chromedriver bug #405. |
158 ASSERT_TRUE(SwitchKeyboardLayout("00000419")); // russian | 155 ui::ScopedKeyboardLayout russian_layout(ui::KEYBOARD_LAYOUT_RUSSIAN); |
Peter Kasting
2016/08/18 17:48:19
Nit: While it will make no functional difference,
Tomasz Moniuszko
2016/08/26 08:53:12
Done.
| |
159 CheckCharToKeyCode(L'\u0438', ui::VKEY_B, 0); | 156 CheckCharToKeyCode(L'\u0438', ui::VKEY_B, 0); |
160 EXPECT_EQ(base::UTF16ToUTF8(L"\u0438"), | 157 EXPECT_EQ(base::UTF16ToUTF8(L"\u0438"), |
161 ConvertKeyCodeToTextNoError(ui::VKEY_B, 0)); | 158 ConvertKeyCodeToTextNoError(ui::VKEY_B, 0)); |
162 #elif defined(OS_MACOSX) | 159 #elif defined(OS_MACOSX) |
163 ASSERT_TRUE(SwitchKeyboardLayout("com.apple.keylayout.German")); | 160 ui::ScopedKeyboardLayout german_layout(ui::KEYBOARD_LAYOUT_GERMAN); |
164 CheckCharToKeyCode('z', ui::VKEY_Y, 0); | 161 CheckCharToKeyCode('z', ui::VKEY_Y, 0); |
165 EXPECT_EQ("z", ConvertKeyCodeToTextNoError(ui::VKEY_Y, 0)); | 162 EXPECT_EQ("z", ConvertKeyCodeToTextNoError(ui::VKEY_Y, 0)); |
166 #endif | 163 #endif |
167 } | 164 } |
OLD | NEW |