| 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 8359ebecfd2ff01ef69a74a3eed80f6e34981eac..dd2f6888d22848937ba5e71083193bd462b83d12 100644
|
| --- a/ui/events/keycodes/platform_key_map_win_unittest.cc
|
| +++ b/ui/events/keycodes/platform_key_map_win_unittest.cc
|
| @@ -21,6 +21,7 @@ enum Layout {
|
| LAYOUT_US,
|
| LAYOUT_FR,
|
| LAYOUT_KR,
|
| + LAYOUT_JP,
|
| };
|
|
|
| // |LoadKeyboardLayout()| ensures the locale to be loaded into the system
|
| @@ -44,6 +45,8 @@ HKL GetInputLocale(Layout layout) {
|
| // on Korean locale.
|
| // (This issue only happens on Korean and Japanese).
|
| return reinterpret_cast<HKL>(0x04120412);
|
| + case LAYOUT_JP:
|
| + return reinterpret_cast<HKL>(0x04110411);
|
| default:
|
| return 0;
|
| }
|
| @@ -69,8 +72,7 @@ class PlatformKeyMapTest : public testing::Test {
|
|
|
| void CheckKeyboardCodeToKeyString(const char* label,
|
| const PlatformKeyMap& keymap,
|
| - const TestKey& test_case,
|
| - HKL layout) {
|
| + const TestKey& test_case) {
|
| KeyboardCode key_code = test_case.key_code;
|
| EXPECT_STREQ(test_case.normal,
|
| KeycodeConverter::DomKeyToKeyString(
|
| @@ -112,6 +114,7 @@ class PlatformKeyMapTest : public testing::Test {
|
| << label;
|
| }
|
|
|
| + // Need this helper function to access private methods of |PlatformKeyMap|.
|
| DomKey DomKeyFromKeyboardCodeImpl(const PlatformKeyMap& keymap,
|
| KeyboardCode key_code,
|
| int flags) {
|
| @@ -123,8 +126,7 @@ class PlatformKeyMapTest : public testing::Test {
|
| };
|
|
|
| TEST_F(PlatformKeyMapTest, USLayout) {
|
| - HKL layout = GetInputLocale(LAYOUT_US);
|
| - PlatformKeyMap keymap(layout);
|
| + PlatformKeyMap keymap(GetInputLocale(LAYOUT_US));
|
|
|
| const TestKey kUSLayoutTestCases[] = {
|
| // n s c a sc sa ac
|
| @@ -167,13 +169,12 @@ TEST_F(PlatformKeyMapTest, USLayout) {
|
| };
|
|
|
| for (const auto& test_case : kUSLayoutTestCases) {
|
| - CheckKeyboardCodeToKeyString("USLayout", keymap, test_case, layout);
|
| + CheckKeyboardCodeToKeyString("USLayout", keymap, test_case);
|
| }
|
| }
|
|
|
| TEST_F(PlatformKeyMapTest, FRLayout) {
|
| - HKL layout = GetInputLocale(LAYOUT_FR);
|
| - PlatformKeyMap keymap(layout);
|
| + PlatformKeyMap keymap(GetInputLocale(LAYOUT_FR));
|
|
|
| const TestKey kFRLayoutTestCases[] = {
|
| // n s c a sc sa ac
|
| @@ -216,13 +217,12 @@ TEST_F(PlatformKeyMapTest, FRLayout) {
|
| };
|
|
|
| for (const auto& test_case : kFRLayoutTestCases) {
|
| - CheckKeyboardCodeToKeyString("FRLayout", keymap, test_case, layout);
|
| + CheckKeyboardCodeToKeyString("FRLayout", keymap, test_case);
|
| }
|
| }
|
|
|
| TEST_F(PlatformKeyMapTest, NumPad) {
|
| - HKL layout = GetInputLocale(LAYOUT_US);
|
| - PlatformKeyMap keymap(layout);
|
| + PlatformKeyMap keymap(GetInputLocale(LAYOUT_US));
|
|
|
| const struct TestCase {
|
| KeyboardCode key_code;
|
| @@ -310,26 +310,50 @@ TEST_F(PlatformKeyMapTest, NonPrintableKey) {
|
| TEST_F(PlatformKeyMapTest, KoreanSpecificKeys) {
|
| const struct TestCase {
|
| KeyboardCode key_code;
|
| - DomKey key;
|
| + DomKey kr_key;
|
| + DomKey us_key;
|
| } kKoreanTestCases[] = {
|
| - {VKEY_HANGUL, DomKey::HANGUL_MODE}, {VKEY_HANJA, DomKey::HANJA_MODE},
|
| + {VKEY_HANGUL, DomKey::HANGUL_MODE, DomKey::UNIDENTIFIED},
|
| + {VKEY_HANJA, DomKey::HANJA_MODE, DomKey::UNIDENTIFIED},
|
| };
|
|
|
| - // US English should not return values for these keys.
|
| - HKL us_layout = GetInputLocale(LAYOUT_US);
|
| - PlatformKeyMap us_keymap(us_layout);
|
| + PlatformKeyMap us_keymap(GetInputLocale(LAYOUT_US));
|
| + PlatformKeyMap kr_keymap(GetInputLocale(LAYOUT_KR));
|
| for (const auto& test_case : kKoreanTestCases) {
|
| - EXPECT_EQ(DomKey::NONE, DomKeyFromKeyboardCodeImpl(
|
| - us_keymap, test_case.key_code, EF_NONE))
|
| + EXPECT_EQ(test_case.us_key, DomKeyFromKeyboardCodeImpl(
|
| + us_keymap, test_case.key_code, EF_NONE))
|
| + << test_case.key_code;
|
| + EXPECT_EQ(test_case.kr_key, DomKeyFromKeyboardCodeImpl(
|
| + kr_keymap, test_case.key_code, EF_NONE))
|
| << test_case.key_code;
|
| }
|
| +}
|
|
|
| - // Korean layout should return specific DomKey.
|
| - HKL ko_layout = GetInputLocale(LAYOUT_KR);
|
| - PlatformKeyMap ko_keymap(ko_layout);
|
| - for (const auto& test_case : kKoreanTestCases) {
|
| - EXPECT_EQ(test_case.key, DomKeyFromKeyboardCodeImpl(
|
| - ko_keymap, test_case.key_code, EF_NONE))
|
| +TEST_F(PlatformKeyMapTest, JapaneseSpecificKeys) {
|
| + const struct TestCase {
|
| + KeyboardCode key_code;
|
| + DomKey jp_key;
|
| + DomKey us_key;
|
| + } kJapaneseTestCases[] = {
|
| + {VKEY_KANA, DomKey::KANA_MODE, DomKey::UNIDENTIFIED},
|
| + {VKEY_KANJI, DomKey::KANJI_MODE, DomKey::UNIDENTIFIED},
|
| + {VKEY_OEM_ATTN, DomKey::ALPHANUMERIC, DomKey::UNIDENTIFIED},
|
| + {VKEY_OEM_FINISH, DomKey::KATAKANA, DomKey::UNIDENTIFIED},
|
| + {VKEY_OEM_COPY, DomKey::HIRAGANA, DomKey::UNIDENTIFIED},
|
| + {VKEY_DBE_SBCSCHAR, DomKey::HANKAKU, DomKey::UNIDENTIFIED},
|
| + {VKEY_DBE_DBCSCHAR, DomKey::ZENKAKU, DomKey::UNIDENTIFIED},
|
| + {VKEY_OEM_BACKTAB, DomKey::ROMAJI, DomKey::UNIDENTIFIED},
|
| + {VKEY_ATTN, DomKey::KANA_MODE, DomKey::ATTN},
|
| + };
|
| +
|
| + PlatformKeyMap us_keymap(GetInputLocale(LAYOUT_US));
|
| + PlatformKeyMap jp_keymap(GetInputLocale(LAYOUT_JP));
|
| + for (const auto& test_case : kJapaneseTestCases) {
|
| + EXPECT_EQ(test_case.us_key, DomKeyFromKeyboardCodeImpl(
|
| + us_keymap, test_case.key_code, EF_NONE))
|
| + << test_case.key_code;
|
| + EXPECT_EQ(test_case.jp_key, DomKeyFromKeyboardCodeImpl(
|
| + jp_keymap, test_case.key_code, EF_NONE))
|
| << test_case.key_code;
|
| }
|
| }
|
|
|