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

Side by Side Diff: ui/events/keycodes/platform_key_map_win_unittest.cc

Issue 1776673007: [Windows] Produce correct DomKey for NumPad when combined with Shift/NumLock (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 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 "ui/events/keycodes/platform_key_map_win.h" 5 #include "ui/events/keycodes/platform_key_map_win.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/events/event_constants.h" 9 #include "ui/events/event_constants.h"
10 #include "ui/events/keycodes/dom/dom_code.h" 10 #include "ui/events/keycodes/dom/dom_code.h"
(...skipping 17 matching lines...) Expand all
28 const char* altgr; 28 const char* altgr;
29 const char* shift_capslock; 29 const char* shift_capslock;
30 const char* shift_altgr; 30 const char* shift_altgr;
31 const char* altgr_capslock; 31 const char* altgr_capslock;
32 }; 32 };
33 33
34 void CheckDomCodeToKeyString(const char* label, 34 void CheckDomCodeToKeyString(const char* label,
35 const PlatformKeyMap& keymap, 35 const PlatformKeyMap& keymap,
36 const TestKey& t, 36 const TestKey& t,
37 HKL layout) { 37 HKL layout) {
38 int scan_code = ::MapVirtualKeyEx(t.vk, MAPVK_VK_TO_VSC, layout); 38 KeyboardCode vk = t.vk;
39 int scan_code = ::MapVirtualKeyEx(vk, MAPVK_VK_TO_VSC, layout);
39 DomCode dom_code = KeycodeConverter::NativeKeycodeToDomCode(scan_code); 40 DomCode dom_code = KeycodeConverter::NativeKeycodeToDomCode(scan_code);
40 EXPECT_STREQ(t.normal, KeycodeConverter::DomKeyToKeyString( 41 EXPECT_STREQ(t.normal,
41 keymap.DomCodeAndFlagsToDomKey(dom_code, EF_NONE)).c_str() 42 KeycodeConverter::DomKeyToKeyString(
42 ) << label; 43 keymap.DomCodeAndFlagsToDomKey(dom_code, vk, EF_NONE))
43 EXPECT_STREQ(t.shift, KeycodeConverter::DomKeyToKeyString( 44 .c_str())
44 keymap.DomCodeAndFlagsToDomKey(dom_code, EF_SHIFT_DOWN)).c_str() 45 << label;
45 ) << label; 46 EXPECT_STREQ(t.shift,
47 KeycodeConverter::DomKeyToKeyString(
48 keymap.DomCodeAndFlagsToDomKey(dom_code, vk, EF_SHIFT_DOWN))
49 .c_str())
50 << label;
46 EXPECT_STREQ(t.capslock, KeycodeConverter::DomKeyToKeyString( 51 EXPECT_STREQ(t.capslock, KeycodeConverter::DomKeyToKeyString(
47 keymap.DomCodeAndFlagsToDomKey(dom_code, EF_CAPS_LOCK_ON)).c_str() 52 keymap.DomCodeAndFlagsToDomKey(dom_code, vk,
48 ) << label; 53 EF_CAPS_LOCK_ON))
49 EXPECT_STREQ(t.altgr, KeycodeConverter::DomKeyToKeyString( 54 .c_str())
50 keymap.DomCodeAndFlagsToDomKey(dom_code, EF_ALTGR_DOWN)).c_str() 55 << label;
51 ) << label; 56 EXPECT_STREQ(t.altgr,
52 EXPECT_STREQ(t.shift_capslock, KeycodeConverter::DomKeyToKeyString( 57 KeycodeConverter::DomKeyToKeyString(
53 keymap.DomCodeAndFlagsToDomKey(dom_code, 58 keymap.DomCodeAndFlagsToDomKey(dom_code, vk, EF_ALTGR_DOWN))
54 EF_SHIFT_DOWN | EF_CAPS_LOCK_ON)).c_str() 59 .c_str())
55 ) << label; 60 << label;
56 EXPECT_STREQ(t.shift_altgr, KeycodeConverter::DomKeyToKeyString( 61 EXPECT_STREQ(t.shift_capslock,
57 keymap.DomCodeAndFlagsToDomKey(dom_code, 62 KeycodeConverter::DomKeyToKeyString(
58 EF_SHIFT_DOWN | EF_ALTGR_DOWN)).c_str() 63 keymap.DomCodeAndFlagsToDomKey(
59 ) << label; 64 dom_code, vk, EF_SHIFT_DOWN | EF_CAPS_LOCK_ON))
60 EXPECT_STREQ(t.altgr_capslock, KeycodeConverter::DomKeyToKeyString( 65 .c_str())
61 keymap.DomCodeAndFlagsToDomKey(dom_code, 66 << label;
62 EF_ALTGR_DOWN | EF_CAPS_LOCK_ON)).c_str() 67 EXPECT_STREQ(t.shift_altgr,
63 ) << label; 68 KeycodeConverter::DomKeyToKeyString(
69 keymap.DomCodeAndFlagsToDomKey(
70 dom_code, vk, EF_SHIFT_DOWN | EF_ALTGR_DOWN))
71 .c_str())
72 << label;
73 EXPECT_STREQ(t.altgr_capslock,
74 KeycodeConverter::DomKeyToKeyString(
75 keymap.DomCodeAndFlagsToDomKey(
76 dom_code, vk, EF_ALTGR_DOWN | EF_CAPS_LOCK_ON))
77 .c_str())
78 << label;
64 } 79 }
65 80
66 } // anonymous namespace 81 } // anonymous namespace
67 82
68 class PlatformKeyMapTest : public testing::Test { 83 class PlatformKeyMapTest : public testing::Test {
69 public: 84 public:
70 PlatformKeyMapTest() {} 85 PlatformKeyMapTest() {}
71 ~PlatformKeyMapTest() override {} 86 ~PlatformKeyMapTest() override {}
72 private: 87 private:
73 DISALLOW_COPY_AND_ASSIGN(PlatformKeyMapTest); 88 DISALLOW_COPY_AND_ASSIGN(PlatformKeyMapTest);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 {VKEY_X, "x", "X", "X", "x", "x", "X", "X"}, 179 {VKEY_X, "x", "X", "X", "x", "x", "X", "X"},
165 {VKEY_Y, "y", "Y", "Y", "y", "y", "Y", "Y"}, 180 {VKEY_Y, "y", "Y", "Y", "y", "y", "Y", "Y"},
166 {VKEY_Z, "z", "Z", "Z", "z", "z", "Z", "Z"}, 181 {VKEY_Z, "z", "Z", "Z", "z", "z", "Z", "Z"},
167 }; 182 };
168 183
169 for (const auto& k : FRKeys) { 184 for (const auto& k : FRKeys) {
170 CheckDomCodeToKeyString("FRLayout", keymap, k, layout); 185 CheckDomCodeToKeyString("FRLayout", keymap, k, layout);
171 } 186 }
172 } 187 }
173 188
189 TEST_F(PlatformKeyMapTest, NumPad) {
190 HKL layout = ::LoadKeyboardLayout(LAYOUT_US, 0);
191 PlatformKeyMap keymap(layout);
192
193 const struct TestCase {
194 KeyboardCode vk;
195 DomKey key;
196 } NumPadKeys[] = {
197 {VKEY_NUMPAD0, DomKey::FromCharacter('0')},
198 {VKEY_NUMPAD1, DomKey::FromCharacter('1')},
199 {VKEY_NUMPAD2, DomKey::FromCharacter('2')},
200 {VKEY_NUMPAD3, DomKey::FromCharacter('3')},
201 {VKEY_NUMPAD4, DomKey::FromCharacter('4')},
202 {VKEY_NUMPAD5, DomKey::FromCharacter('5')},
203 {VKEY_NUMPAD6, DomKey::FromCharacter('6')},
204 {VKEY_NUMPAD7, DomKey::FromCharacter('7')},
205 {VKEY_NUMPAD8, DomKey::FromCharacter('8')},
206 {VKEY_NUMPAD9, DomKey::FromCharacter('9')},
207 {VKEY_CLEAR, DomKey::CLEAR},
208 {VKEY_PRIOR, DomKey::PAGE_UP},
209 {VKEY_NEXT, DomKey::PAGE_DOWN},
210 {VKEY_END, DomKey::END},
211 {VKEY_HOME, DomKey::HOME},
212 {VKEY_LEFT, DomKey::ARROW_LEFT},
213 {VKEY_UP, DomKey::ARROW_UP},
214 {VKEY_RIGHT, DomKey::ARROW_RIGHT},
215 {VKEY_DOWN, DomKey::ARROW_DOWN},
216 {VKEY_INSERT, DomKey::INSERT},
217 {VKEY_DELETE, DomKey::DEL},
218 };
219
220 for (const auto& k : NumPadKeys) {
221 KeyboardCode vk = k.vk;
222 int scan_code = ::MapVirtualKeyEx(vk, MAPVK_VK_TO_VSC, layout);
223 DomCode dom_code = KeycodeConverter::NativeKeycodeToDomCode(scan_code);
224
225 EXPECT_EQ(k.key, keymap.DomCodeAndFlagsToDomKey(dom_code, vk, EF_NONE))
226 << vk;
227 EXPECT_EQ(k.key,
228 keymap.DomCodeAndFlagsToDomKey(dom_code, vk, EF_ALTGR_DOWN))
229 << vk;
230 EXPECT_EQ(k.key,
231 keymap.DomCodeAndFlagsToDomKey(dom_code, vk, EF_CONTROL_DOWN))
232 << vk;
233 EXPECT_EQ(k.key, keymap.DomCodeAndFlagsToDomKey(
234 dom_code, vk, EF_ALTGR_DOWN | EF_CONTROL_DOWN))
235 << vk;
236 }
237 }
238
174 } // namespace ui 239 } // namespace ui
OLDNEW
« ui/events/keycodes/platform_key_map_win.cc ('K') | « ui/events/keycodes/platform_key_map_win.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698