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

Side by Side Diff: ui/events/keycodes/dom4/keycode_converter.cc

Issue 494813002: events: keycodes: Remove the stateless singleton instance of KeycodeConverter (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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 "ui/events/keycodes/dom4/keycode_converter.h" 5 #include "ui/events/keycodes/dom4/keycode_converter.h"
6 6
7 namespace ui { 7 namespace ui {
8 8
9 namespace { 9 namespace {
10 10
11 #if defined(OS_WIN) 11 #if defined(OS_WIN)
12 #define USB_KEYMAP(usb, xkb, win, mac, code) {usb, win, code} 12 #define USB_KEYMAP(usb, xkb, win, mac, code) {usb, win, code}
13 #elif defined(OS_LINUX) 13 #elif defined(OS_LINUX)
14 #define USB_KEYMAP(usb, xkb, win, mac, code) {usb, xkb, code} 14 #define USB_KEYMAP(usb, xkb, win, mac, code) {usb, xkb, code}
15 #elif defined(OS_MACOSX) 15 #elif defined(OS_MACOSX)
16 #define USB_KEYMAP(usb, xkb, win, mac, code) {usb, mac, code} 16 #define USB_KEYMAP(usb, xkb, win, mac, code) {usb, mac, code}
17 #else 17 #else
18 #define USB_KEYMAP(usb, xkb, win, mac, code) {usb, 0, code} 18 #define USB_KEYMAP(usb, xkb, win, mac, code) {usb, 0, code}
19 #endif 19 #endif
20 #include "ui/events/keycodes/dom4/keycode_converter_data.h" 20 #include "ui/events/keycodes/dom4/keycode_converter_data.h"
21 21
22 const size_t kKeycodeMapEntries = arraysize(usb_keycode_map); 22 const size_t kKeycodeMapEntries = arraysize(usb_keycode_map);
23 23
24 } // namespace 24 } // namespace
25 25
26 KeycodeConverter::KeycodeConverter() { 26 // static
27 }
28
29 KeycodeConverter* KeycodeConverter::GetInstance() {
30 return Singleton<KeycodeConverter>::get();
31 }
32
33 size_t KeycodeConverter::NumKeycodeMapEntriesForTest() { 27 size_t KeycodeConverter::NumKeycodeMapEntriesForTest() {
34 return kKeycodeMapEntries; 28 return kKeycodeMapEntries;
35 } 29 }
36 30
31 // static
37 const KeycodeMapEntry* KeycodeConverter::GetKeycodeMapForTest() { 32 const KeycodeMapEntry* KeycodeConverter::GetKeycodeMapForTest() {
38 return &usb_keycode_map[0]; 33 return &usb_keycode_map[0];
39 } 34 }
40 35
36 // static
41 uint16_t KeycodeConverter::InvalidNativeKeycode() { 37 uint16_t KeycodeConverter::InvalidNativeKeycode() {
42 return usb_keycode_map[0].native_keycode; 38 return usb_keycode_map[0].native_keycode;
43 } 39 }
44 40
41 // static
45 const char* KeycodeConverter::InvalidKeyboardEventCode() { 42 const char* KeycodeConverter::InvalidKeyboardEventCode() {
46 return "Unidentified"; 43 return "Unidentified";
47 } 44 }
48 45
46 // static
49 const char* KeycodeConverter::NativeKeycodeToCode(uint16_t native_keycode) { 47 const char* KeycodeConverter::NativeKeycodeToCode(uint16_t native_keycode) {
50 for (size_t i = 0; i < kKeycodeMapEntries; ++i) { 48 for (size_t i = 0; i < kKeycodeMapEntries; ++i) {
51 if (usb_keycode_map[i].native_keycode == native_keycode) { 49 if (usb_keycode_map[i].native_keycode == native_keycode) {
52 if (usb_keycode_map[i].code != NULL) 50 if (usb_keycode_map[i].code != NULL)
53 return usb_keycode_map[i].code; 51 return usb_keycode_map[i].code;
54 break; 52 break;
55 } 53 }
56 } 54 }
57 return InvalidKeyboardEventCode(); 55 return InvalidKeyboardEventCode();
58 } 56 }
59 57
58 // static
60 uint16_t KeycodeConverter::CodeToNativeKeycode(const char* code) { 59 uint16_t KeycodeConverter::CodeToNativeKeycode(const char* code) {
61 if (!code || 60 if (!code ||
62 strcmp(code, InvalidKeyboardEventCode()) == 0) { 61 strcmp(code, InvalidKeyboardEventCode()) == 0) {
63 return InvalidNativeKeycode(); 62 return InvalidNativeKeycode();
64 } 63 }
65 64
66 for (size_t i = 0; i < kKeycodeMapEntries; ++i) { 65 for (size_t i = 0; i < kKeycodeMapEntries; ++i) {
67 if (usb_keycode_map[i].code && 66 if (usb_keycode_map[i].code &&
68 strcmp(usb_keycode_map[i].code, code) == 0) { 67 strcmp(usb_keycode_map[i].code, code) == 0) {
69 return usb_keycode_map[i].native_keycode; 68 return usb_keycode_map[i].native_keycode;
70 } 69 }
71 } 70 }
72 return InvalidNativeKeycode(); 71 return InvalidNativeKeycode();
73 } 72 }
74 73
75 // USB keycodes 74 // USB keycodes
76 // Note that USB keycodes are not part of any web standard. 75 // Note that USB keycodes are not part of any web standard.
77 // Please don't use USB keycodes in new code. 76 // Please don't use USB keycodes in new code.
78 77
78 // static
79 uint16_t KeycodeConverter::InvalidUsbKeycode() { 79 uint16_t KeycodeConverter::InvalidUsbKeycode() {
80 return usb_keycode_map[0].usb_keycode; 80 return usb_keycode_map[0].usb_keycode;
81 } 81 }
82 82
83 // static
83 uint16_t KeycodeConverter::UsbKeycodeToNativeKeycode(uint32_t usb_keycode) { 84 uint16_t KeycodeConverter::UsbKeycodeToNativeKeycode(uint32_t usb_keycode) {
84 // Deal with some special-cases that don't fit the 1:1 mapping. 85 // Deal with some special-cases that don't fit the 1:1 mapping.
85 if (usb_keycode == 0x070032) // non-US hash. 86 if (usb_keycode == 0x070032) // non-US hash.
86 usb_keycode = 0x070031; // US backslash. 87 usb_keycode = 0x070031; // US backslash.
87 #if defined(OS_MACOSX) 88 #if defined(OS_MACOSX)
88 if (usb_keycode == 0x070046) // PrintScreen. 89 if (usb_keycode == 0x070046) // PrintScreen.
89 usb_keycode = 0x070068; // F13. 90 usb_keycode = 0x070068; // F13.
90 #endif 91 #endif
91 92
92 for (size_t i = 0; i < kKeycodeMapEntries; ++i) { 93 for (size_t i = 0; i < kKeycodeMapEntries; ++i) {
93 if (usb_keycode_map[i].usb_keycode == usb_keycode) 94 if (usb_keycode_map[i].usb_keycode == usb_keycode)
94 return usb_keycode_map[i].native_keycode; 95 return usb_keycode_map[i].native_keycode;
95 } 96 }
96 return InvalidNativeKeycode(); 97 return InvalidNativeKeycode();
97 } 98 }
98 99
100 // static
99 uint32_t KeycodeConverter::NativeKeycodeToUsbKeycode(uint16_t native_keycode) { 101 uint32_t KeycodeConverter::NativeKeycodeToUsbKeycode(uint16_t native_keycode) {
100 for (size_t i = 0; i < kKeycodeMapEntries; ++i) { 102 for (size_t i = 0; i < kKeycodeMapEntries; ++i) {
101 if (usb_keycode_map[i].native_keycode == native_keycode) 103 if (usb_keycode_map[i].native_keycode == native_keycode)
102 return usb_keycode_map[i].usb_keycode; 104 return usb_keycode_map[i].usb_keycode;
103 } 105 }
104 return InvalidUsbKeycode(); 106 return InvalidUsbKeycode();
105 } 107 }
106 108
109 // static
107 const char* KeycodeConverter::UsbKeycodeToCode(uint32_t usb_keycode) { 110 const char* KeycodeConverter::UsbKeycodeToCode(uint32_t usb_keycode) {
108 for (size_t i = 0; i < kKeycodeMapEntries; ++i) { 111 for (size_t i = 0; i < kKeycodeMapEntries; ++i) {
109 if (usb_keycode_map[i].usb_keycode == usb_keycode) 112 if (usb_keycode_map[i].usb_keycode == usb_keycode)
110 return usb_keycode_map[i].code; 113 return usb_keycode_map[i].code;
111 } 114 }
112 return InvalidKeyboardEventCode(); 115 return InvalidKeyboardEventCode();
113 } 116 }
114 117
118 // static
115 uint32_t KeycodeConverter::CodeToUsbKeycode(const char* code) { 119 uint32_t KeycodeConverter::CodeToUsbKeycode(const char* code) {
116 if (!code || 120 if (!code ||
117 strcmp(code, InvalidKeyboardEventCode()) == 0) { 121 strcmp(code, InvalidKeyboardEventCode()) == 0) {
118 return InvalidUsbKeycode(); 122 return InvalidUsbKeycode();
119 } 123 }
120 124
121 for (size_t i = 0; i < kKeycodeMapEntries; ++i) { 125 for (size_t i = 0; i < kKeycodeMapEntries; ++i) {
122 if (usb_keycode_map[i].code && 126 if (usb_keycode_map[i].code &&
123 strcmp(usb_keycode_map[i].code, code) == 0) { 127 strcmp(usb_keycode_map[i].code, code) == 0) {
124 return usb_keycode_map[i].usb_keycode; 128 return usb_keycode_map[i].usb_keycode;
125 } 129 }
126 } 130 }
127 return InvalidUsbKeycode(); 131 return InvalidUsbKeycode();
128 } 132 }
129 133
130 } // namespace ui 134 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/keycodes/dom4/keycode_converter.h ('k') | ui/events/keycodes/dom4/keycode_converter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698