Commit 553d185c authored by Wez's avatar Wez Committed by Commit Bot

[events] Cleanup KeycodeConverter for loops and mappings tables.

- Migrate to range for loops in KeycodeConverter.
- Fix naming of DOM |key| and |code| mapping table constants.
- Replace NULL with nullptr.

Change-Id: I1d4ae6146afa9bb32083e40c474653a1f6d1ec57
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2022666
Auto-Submit: Wez <wez@chromium.org>
Reviewed-by: default avatarDave Tapuska <dtapuska@chromium.org>
Commit-Queue: Wez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#735414}
parent 2504c3b7
...@@ -33,20 +33,18 @@ namespace { ...@@ -33,20 +33,18 @@ namespace {
#define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \ #define DOM_CODE(usb, evdev, xkb, win, mac, code, id) \
{ usb, 0, code } { usb, 0, code }
#endif #endif
#define DOM_CODE_DECLARATION const KeycodeMapEntry usb_keycode_map[] = #define DOM_CODE_DECLARATION const KeycodeMapEntry kDomCodeMappings[] =
#include "ui/events/keycodes/dom/dom_code_data.inc" #include "ui/events/keycodes/dom/dom_code_data.inc"
#undef DOM_CODE #undef DOM_CODE
#undef DOM_CODE_DECLARATION #undef DOM_CODE_DECLARATION
const size_t kKeycodeMapEntries = base::size(usb_keycode_map);
// Table of DomKey enum values and DOM Level 3 |key| strings. // Table of DomKey enum values and DOM Level 3 |key| strings.
struct DomKeyMapEntry { struct DomKeyMapEntry {
DomKey dom_key; DomKey dom_key;
const char* string; const char* string;
}; };
#define DOM_KEY_MAP_DECLARATION const DomKeyMapEntry dom_key_map[] = #define DOM_KEY_MAP_DECLARATION const DomKeyMapEntry kDomKeyMappings[] =
#define DOM_KEY_UNI(key, id, value) {DomKey::id, key} #define DOM_KEY_UNI(key, id, value) {DomKey::id, key}
#define DOM_KEY_MAP(key, id, value) {DomKey::id, key} #define DOM_KEY_MAP(key, id, value) {DomKey::id, key}
#include "ui/events/keycodes/dom/dom_key_data.inc" #include "ui/events/keycodes/dom/dom_key_data.inc"
...@@ -54,30 +52,28 @@ struct DomKeyMapEntry { ...@@ -54,30 +52,28 @@ struct DomKeyMapEntry {
#undef DOM_KEY_MAP #undef DOM_KEY_MAP
#undef DOM_KEY_UNI #undef DOM_KEY_UNI
const size_t kDomKeyMapEntries = base::size(dom_key_map);
} // namespace } // namespace
// static // static
size_t KeycodeConverter::NumKeycodeMapEntriesForTest() { size_t KeycodeConverter::NumKeycodeMapEntriesForTest() {
return kKeycodeMapEntries; return base::size(kDomCodeMappings);
} }
// static // static
const KeycodeMapEntry* KeycodeConverter::GetKeycodeMapForTest() { const KeycodeMapEntry* KeycodeConverter::GetKeycodeMapForTest() {
return &usb_keycode_map[0]; return &kDomCodeMappings[0];
} }
// static // static
const char* KeycodeConverter::DomKeyStringForTest(size_t index) { const char* KeycodeConverter::DomKeyStringForTest(size_t index) {
if (index >= kDomKeyMapEntries) if (index >= base::size(kDomKeyMappings))
return nullptr; return nullptr;
return dom_key_map[index].string; return kDomKeyMappings[index].string;
} }
// static // static
int KeycodeConverter::InvalidNativeKeycode() { int KeycodeConverter::InvalidNativeKeycode() {
return usb_keycode_map[0].native_keycode; return kDomCodeMappings[0].native_keycode;
} }
// TODO(zijiehe): Most of the following functions can be optimized by using // TODO(zijiehe): Most of the following functions can be optimized by using
...@@ -85,11 +81,10 @@ int KeycodeConverter::InvalidNativeKeycode() { ...@@ -85,11 +81,10 @@ int KeycodeConverter::InvalidNativeKeycode() {
// static // static
DomCode KeycodeConverter::NativeKeycodeToDomCode(int native_keycode) { DomCode KeycodeConverter::NativeKeycodeToDomCode(int native_keycode) {
for (size_t i = 0; i < kKeycodeMapEntries; ++i) { for (auto& mapping : kDomCodeMappings) {
if (usb_keycode_map[i].native_keycode == native_keycode) { if (mapping.native_keycode == native_keycode) {
if (usb_keycode_map[i].code != NULL) if (mapping.code != nullptr)
return static_cast<DomCode>(usb_keycode_map[i].usb_keycode); return static_cast<DomCode>(mapping.usb_keycode);
break;
} }
} }
return DomCode::NONE; return DomCode::NONE;
...@@ -104,9 +99,9 @@ int KeycodeConverter::DomCodeToNativeKeycode(DomCode code) { ...@@ -104,9 +99,9 @@ int KeycodeConverter::DomCodeToNativeKeycode(DomCode code) {
DomCode KeycodeConverter::CodeStringToDomCode(const std::string& code) { DomCode KeycodeConverter::CodeStringToDomCode(const std::string& code) {
if (code.empty()) if (code.empty())
return DomCode::NONE; return DomCode::NONE;
for (size_t i = 0; i < kKeycodeMapEntries; ++i) { for (auto& mapping : kDomCodeMappings) {
if (usb_keycode_map[i].code && code == usb_keycode_map[i].code) { if (mapping.code && code == mapping.code) {
return static_cast<DomCode>(usb_keycode_map[i].usb_keycode); return static_cast<DomCode>(mapping.usb_keycode);
} }
} }
LOG(WARNING) << "unrecognized code string '" << code << "'"; LOG(WARNING) << "unrecognized code string '" << code << "'";
...@@ -115,10 +110,10 @@ DomCode KeycodeConverter::CodeStringToDomCode(const std::string& code) { ...@@ -115,10 +110,10 @@ DomCode KeycodeConverter::CodeStringToDomCode(const std::string& code) {
// static // static
const char* KeycodeConverter::DomCodeToCodeString(DomCode dom_code) { const char* KeycodeConverter::DomCodeToCodeString(DomCode dom_code) {
for (size_t i = 0; i < kKeycodeMapEntries; ++i) { for (auto& mapping : kDomCodeMappings) {
if (usb_keycode_map[i].usb_keycode == static_cast<uint32_t>(dom_code)) { if (mapping.usb_keycode == static_cast<uint32_t>(dom_code)) {
if (usb_keycode_map[i].code) if (mapping.code)
return usb_keycode_map[i].code; return mapping.code;
break; break;
} }
} }
...@@ -179,9 +174,9 @@ DomKey KeycodeConverter::KeyStringToDomKey(const std::string& key) { ...@@ -179,9 +174,9 @@ DomKey KeycodeConverter::KeyStringToDomKey(const std::string& key) {
if (key.empty()) if (key.empty())
return DomKey::NONE; return DomKey::NONE;
// Check for standard key names. // Check for standard key names.
for (size_t i = 0; i < kDomKeyMapEntries; ++i) { for (auto& mapping : kDomKeyMappings) {
if (dom_key_map[i].string && key == dom_key_map[i].string) { if (mapping.string && key == mapping.string) {
return dom_key_map[i].dom_key; return mapping.dom_key;
} }
} }
if (key == "Dead") { if (key == "Dead") {
...@@ -211,10 +206,10 @@ std::string KeycodeConverter::DomKeyToKeyString(DomKey dom_key) { ...@@ -211,10 +206,10 @@ std::string KeycodeConverter::DomKeyToKeyString(DomKey dom_key) {
// KeyboardEvent represents the combining character separately. // KeyboardEvent represents the combining character separately.
return "Dead"; return "Dead";
} }
for (size_t i = 0; i < kDomKeyMapEntries; ++i) { for (auto& mapping : kDomKeyMappings) {
if (dom_key_map[i].dom_key == dom_key) { if (mapping.dom_key == dom_key) {
if (dom_key_map[i].string) if (mapping.string)
return dom_key_map[i].string; return mapping.string;
break; break;
} }
} }
...@@ -257,7 +252,7 @@ bool KeycodeConverter::IsDomKeyForModifier(DomKey dom_key) { ...@@ -257,7 +252,7 @@ bool KeycodeConverter::IsDomKeyForModifier(DomKey dom_key) {
// static // static
uint32_t KeycodeConverter::InvalidUsbKeycode() { uint32_t KeycodeConverter::InvalidUsbKeycode() {
return usb_keycode_map[0].usb_keycode; return kDomCodeMappings[0].usb_keycode;
} }
// static // static
...@@ -270,26 +265,26 @@ int KeycodeConverter::UsbKeycodeToNativeKeycode(uint32_t usb_keycode) { ...@@ -270,26 +265,26 @@ int KeycodeConverter::UsbKeycodeToNativeKeycode(uint32_t usb_keycode) {
usb_keycode = 0x070068; // F13. usb_keycode = 0x070068; // F13.
#endif #endif
for (size_t i = 0; i < kKeycodeMapEntries; ++i) { for (auto& mapping : kDomCodeMappings) {
if (usb_keycode_map[i].usb_keycode == usb_keycode) if (mapping.usb_keycode == usb_keycode)
return usb_keycode_map[i].native_keycode; return mapping.native_keycode;
} }
return InvalidNativeKeycode(); return InvalidNativeKeycode();
} }
// static // static
uint32_t KeycodeConverter::NativeKeycodeToUsbKeycode(int native_keycode) { uint32_t KeycodeConverter::NativeKeycodeToUsbKeycode(int native_keycode) {
for (size_t i = 0; i < kKeycodeMapEntries; ++i) { for (auto& mapping : kDomCodeMappings) {
if (usb_keycode_map[i].native_keycode == native_keycode) if (mapping.native_keycode == native_keycode)
return usb_keycode_map[i].usb_keycode; return mapping.usb_keycode;
} }
return InvalidUsbKeycode(); return InvalidUsbKeycode();
} }
// static // static
DomCode KeycodeConverter::UsbKeycodeToDomCode(uint32_t usb_keycode) { DomCode KeycodeConverter::UsbKeycodeToDomCode(uint32_t usb_keycode) {
for (size_t i = 0; i < kKeycodeMapEntries; ++i) { for (auto& mapping : kDomCodeMappings) {
if (usb_keycode_map[i].usb_keycode == usb_keycode) if (mapping.usb_keycode == usb_keycode)
return static_cast<DomCode>(usb_keycode); return static_cast<DomCode>(usb_keycode);
} }
return DomCode::NONE; return DomCode::NONE;
...@@ -297,9 +292,9 @@ DomCode KeycodeConverter::UsbKeycodeToDomCode(uint32_t usb_keycode) { ...@@ -297,9 +292,9 @@ DomCode KeycodeConverter::UsbKeycodeToDomCode(uint32_t usb_keycode) {
// static // static
uint32_t KeycodeConverter::DomCodeToUsbKeycode(DomCode dom_code) { uint32_t KeycodeConverter::DomCodeToUsbKeycode(DomCode dom_code) {
for (size_t i = 0; i < kKeycodeMapEntries; ++i) { for (auto& mapping : kDomCodeMappings) {
if (usb_keycode_map[i].usb_keycode == static_cast<uint32_t>(dom_code)) if (mapping.usb_keycode == static_cast<uint32_t>(dom_code))
return usb_keycode_map[i].usb_keycode; return mapping.usb_keycode;
} }
return InvalidUsbKeycode(); return InvalidUsbKeycode();
} }
...@@ -309,9 +304,9 @@ uint32_t KeycodeConverter::CodeStringToUsbKeycode(const std::string& code) { ...@@ -309,9 +304,9 @@ uint32_t KeycodeConverter::CodeStringToUsbKeycode(const std::string& code) {
if (code.empty()) if (code.empty())
return InvalidUsbKeycode(); return InvalidUsbKeycode();
for (size_t i = 0; i < kKeycodeMapEntries; ++i) { for (auto& mapping : kDomCodeMappings) {
if (usb_keycode_map[i].code && code == usb_keycode_map[i].code) { if (mapping.code && code == mapping.code) {
return usb_keycode_map[i].usb_keycode; return mapping.usb_keycode;
} }
} }
return InvalidUsbKeycode(); return InvalidUsbKeycode();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment