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

Unified 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: wez's review 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/events/keycodes/platform_key_map_win.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/keycodes/platform_key_map_win_unittest.cc
diff --git a/ui/events/keycodes/platform_key_map_win_unittest.cc b/ui/events/keycodes/platform_key_map_win_unittest.cc
index 934ab00a8bbbbbf1722ff1b355d47808297b0bfd..44cbd58671528618ed25d93cee00ba9f4dfe800f 100644
--- a/ui/events/keycodes/platform_key_map_win_unittest.cc
+++ b/ui/events/keycodes/platform_key_map_win_unittest.cc
@@ -21,7 +21,7 @@ const wchar_t* LAYOUT_FR = L"0000040c";
struct TestKey {
// Have to use KeyboardCode instead of DomCode because we don't know the
// physical keyboard layout for try bots.
- KeyboardCode vk;
+ KeyboardCode key_code;
const char* normal;
const char* shift;
const char* capslock;
@@ -31,44 +31,68 @@ struct TestKey {
const char* altgr_capslock;
};
-void CheckDomCodeToKeyString(const char* label,
- const PlatformKeyMap& keymap,
- const TestKey& t,
- HKL layout) {
- int scan_code = ::MapVirtualKeyEx(t.vk, MAPVK_VK_TO_VSC, layout);
- DomCode dom_code = KeycodeConverter::NativeKeycodeToDomCode(scan_code);
- EXPECT_STREQ(t.normal, KeycodeConverter::DomKeyToKeyString(
- keymap.DomCodeAndFlagsToDomKey(dom_code, EF_NONE)).c_str()
- ) << label;
- EXPECT_STREQ(t.shift, KeycodeConverter::DomKeyToKeyString(
- keymap.DomCodeAndFlagsToDomKey(dom_code, EF_SHIFT_DOWN)).c_str()
- ) << label;
- EXPECT_STREQ(t.capslock, KeycodeConverter::DomKeyToKeyString(
- keymap.DomCodeAndFlagsToDomKey(dom_code, EF_CAPS_LOCK_ON)).c_str()
- ) << label;
- EXPECT_STREQ(t.altgr, KeycodeConverter::DomKeyToKeyString(
- keymap.DomCodeAndFlagsToDomKey(dom_code, EF_ALTGR_DOWN)).c_str()
- ) << label;
- EXPECT_STREQ(t.shift_capslock, KeycodeConverter::DomKeyToKeyString(
- keymap.DomCodeAndFlagsToDomKey(dom_code,
- EF_SHIFT_DOWN | EF_CAPS_LOCK_ON)).c_str()
- ) << label;
- EXPECT_STREQ(t.shift_altgr, KeycodeConverter::DomKeyToKeyString(
- keymap.DomCodeAndFlagsToDomKey(dom_code,
- EF_SHIFT_DOWN | EF_ALTGR_DOWN)).c_str()
- ) << label;
- EXPECT_STREQ(t.altgr_capslock, KeycodeConverter::DomKeyToKeyString(
- keymap.DomCodeAndFlagsToDomKey(dom_code,
- EF_ALTGR_DOWN | EF_CAPS_LOCK_ON)).c_str()
- ) << label;
-}
-
} // anonymous namespace
class PlatformKeyMapTest : public testing::Test {
public:
PlatformKeyMapTest() {}
~PlatformKeyMapTest() override {}
+
+ void CheckDomCodeToKeyString(const char* label,
+ const PlatformKeyMap& keymap,
+ const TestKey& test_case,
+ HKL layout) {
+ KeyboardCode key_code = test_case.key_code;
+ int scan_code = ::MapVirtualKeyEx(key_code, MAPVK_VK_TO_VSC, layout);
+ DomCode dom_code = KeycodeConverter::NativeKeycodeToDomCode(scan_code);
+ EXPECT_STREQ(test_case.normal,
+ KeycodeConverter::DomKeyToKeyString(
+ keymap.DomKeyFromNativeImpl(dom_code, key_code, EF_NONE))
+ .c_str())
+ << label;
+ EXPECT_STREQ(test_case.shift, KeycodeConverter::DomKeyToKeyString(
+ keymap.DomKeyFromNativeImpl(
+ dom_code, key_code, EF_SHIFT_DOWN))
+ .c_str())
+ << label;
+ EXPECT_STREQ(
+ test_case.capslock,
+ KeycodeConverter::DomKeyToKeyString(
+ keymap.DomKeyFromNativeImpl(dom_code, key_code, EF_CAPS_LOCK_ON))
+ .c_str())
+ << label;
+ EXPECT_STREQ(test_case.altgr, KeycodeConverter::DomKeyToKeyString(
+ keymap.DomKeyFromNativeImpl(
+ dom_code, key_code, EF_ALTGR_DOWN))
+ .c_str())
+ << label;
+ EXPECT_STREQ(test_case.shift_capslock,
+ KeycodeConverter::DomKeyToKeyString(
+ keymap.DomKeyFromNativeImpl(
+ dom_code, key_code, EF_SHIFT_DOWN | EF_CAPS_LOCK_ON))
+ .c_str())
+ << label;
+ EXPECT_STREQ(test_case.shift_altgr,
+ KeycodeConverter::DomKeyToKeyString(
+ keymap.DomKeyFromNativeImpl(dom_code, key_code,
+ EF_SHIFT_DOWN | EF_ALTGR_DOWN))
+ .c_str())
+ << label;
+ EXPECT_STREQ(test_case.altgr_capslock,
+ KeycodeConverter::DomKeyToKeyString(
+ keymap.DomKeyFromNativeImpl(
+ dom_code, key_code, EF_ALTGR_DOWN | EF_CAPS_LOCK_ON))
+ .c_str())
+ << label;
+ }
+
+ DomKey DomKeyFromNativeImpl(const PlatformKeyMap& keymap,
+ DomCode dom_code,
+ KeyboardCode key_code,
+ int flags) {
+ return keymap.DomKeyFromNativeImpl(dom_code, key_code, flags);
+ }
+
private:
DISALLOW_COPY_AND_ASSIGN(PlatformKeyMapTest);
};
@@ -77,7 +101,7 @@ TEST_F(PlatformKeyMapTest, USLayout) {
HKL layout = ::LoadKeyboardLayout(LAYOUT_US, 0);
PlatformKeyMap keymap(layout);
- const TestKey USKeys[] = {
+ const TestKey kUSLayoutTestCases[] = {
// n s c a sc sa ac
{VKEY_0, "0", ")", "0", "0", ")", ")", "0"},
{VKEY_1, "1", "!", "1", "1", "!", "!", "1"},
@@ -117,8 +141,8 @@ TEST_F(PlatformKeyMapTest, USLayout) {
{VKEY_Z, "z", "Z", "Z", "z", "z", "Z", "Z"},
};
- for (const auto& k : USKeys) {
- CheckDomCodeToKeyString("USLayout", keymap, k, layout);
+ for (const auto& test_case : kUSLayoutTestCases) {
+ CheckDomCodeToKeyString("USLayout", keymap, test_case, layout);
}
}
@@ -126,7 +150,7 @@ TEST_F(PlatformKeyMapTest, FRLayout) {
HKL layout = ::LoadKeyboardLayout(LAYOUT_FR, 0);
PlatformKeyMap keymap(layout);
- const TestKey FRKeys[] = {
+ const TestKey kFRLayoutTestCases[] = {
// n s c a sc sa ac
{VKEY_0, "à", "0", "0", "@", "à", "0", "@"},
{VKEY_1, "&", "1", "1", "&", "&", "1", "1"},
@@ -166,8 +190,60 @@ TEST_F(PlatformKeyMapTest, FRLayout) {
{VKEY_Z, "z", "Z", "Z", "z", "z", "Z", "Z"},
};
- for (const auto& k : FRKeys) {
- CheckDomCodeToKeyString("FRLayout", keymap, k, layout);
+ for (const auto& test_case : kFRLayoutTestCases) {
+ CheckDomCodeToKeyString("FRLayout", keymap, test_case, layout);
+ }
+}
+
+TEST_F(PlatformKeyMapTest, NumPad) {
+ HKL layout = ::LoadKeyboardLayout(LAYOUT_US, 0);
+ PlatformKeyMap keymap(layout);
+
+ const struct TestCase {
+ KeyboardCode key_code;
+ DomKey key;
+ } kNumPadTestCases[] = {
+ {VKEY_NUMPAD0, DomKey::FromCharacter('0')},
+ {VKEY_NUMPAD1, DomKey::FromCharacter('1')},
+ {VKEY_NUMPAD2, DomKey::FromCharacter('2')},
+ {VKEY_NUMPAD3, DomKey::FromCharacter('3')},
+ {VKEY_NUMPAD4, DomKey::FromCharacter('4')},
+ {VKEY_NUMPAD5, DomKey::FromCharacter('5')},
+ {VKEY_NUMPAD6, DomKey::FromCharacter('6')},
+ {VKEY_NUMPAD7, DomKey::FromCharacter('7')},
+ {VKEY_NUMPAD8, DomKey::FromCharacter('8')},
+ {VKEY_NUMPAD9, DomKey::FromCharacter('9')},
+ {VKEY_CLEAR, DomKey::CLEAR},
+ {VKEY_PRIOR, DomKey::PAGE_UP},
+ {VKEY_NEXT, DomKey::PAGE_DOWN},
+ {VKEY_END, DomKey::END},
+ {VKEY_HOME, DomKey::HOME},
+ {VKEY_LEFT, DomKey::ARROW_LEFT},
+ {VKEY_UP, DomKey::ARROW_UP},
+ {VKEY_RIGHT, DomKey::ARROW_RIGHT},
+ {VKEY_DOWN, DomKey::ARROW_DOWN},
+ {VKEY_INSERT, DomKey::INSERT},
+ {VKEY_DELETE, DomKey::DEL},
+ };
+
+ for (const auto& test_case : kNumPadTestCases) {
+ KeyboardCode key_code = test_case.key_code;
+ int scan_code = ::MapVirtualKeyEx(key_code, MAPVK_VK_TO_VSC, layout);
+ DomCode dom_code = KeycodeConverter::NativeKeycodeToDomCode(scan_code);
+
+ EXPECT_EQ(test_case.key,
+ DomKeyFromNativeImpl(keymap, dom_code, key_code, EF_NONE))
+ << key_code;
+ EXPECT_EQ(test_case.key,
+ DomKeyFromNativeImpl(keymap, dom_code, key_code, EF_ALTGR_DOWN))
+ << key_code;
+ EXPECT_EQ(test_case.key,
+ DomKeyFromNativeImpl(keymap, dom_code, key_code, EF_CONTROL_DOWN))
+ << key_code;
+ EXPECT_EQ(test_case.key,
+ DomKeyFromNativeImpl(keymap, dom_code, key_code,
+ EF_ALTGR_DOWN | EF_CONTROL_DOWN))
+ << key_code;
}
}
« no previous file with comments | « 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