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

Unified Diff: chrome/browser/chromeos/input_method/input_method_util.cc

Issue 7663008: Add GetInputMethodDescriptorFromXkbId function. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 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
Index: chrome/browser/chromeos/input_method/input_method_util.cc
diff --git a/chrome/browser/chromeos/input_method/input_method_util.cc b/chrome/browser/chromeos/input_method/input_method_util.cc
index 16c0f2283aadb54e18c4ba7c9086a0ca756bcc5d..ed6cd7451b80a266d3cf7c09d05d928b2cadcb35 100644
--- a/chrome/browser/chromeos/input_method/input_method_util.cc
+++ b/chrome/browser/chromeos/input_method/input_method_util.cc
@@ -38,11 +38,14 @@ typedef std::multimap<std::string, std::string> LanguageCodeToIdsMap;
// Map from input method ID to associated input method descriptor.
typedef std::map<std::string, InputMethodDescriptor>
InputMethodIdToDescriptorMap;
+// Map from XKB layout ID to associated input method descriptor.
+typedef std::map<std::string, InputMethodDescriptor> XkbIdToDescriptorMap;
struct IdMaps {
scoped_ptr<LanguageCodeToIdsMap> language_code_to_ids;
scoped_ptr<std::map<std::string, std::string> > id_to_language_code;
scoped_ptr<InputMethodIdToDescriptorMap> id_to_descriptor;
+ scoped_ptr<XkbIdToDescriptorMap> xkb_id_to_descriptor;
// Returns the singleton instance.
static IdMaps* GetInstance() {
@@ -61,6 +64,7 @@ struct IdMaps {
language_code_to_ids->clear();
id_to_language_code->clear();
id_to_descriptor->clear();
+ xkb_id_to_descriptor->clear();
for (size_t i = 0; i < supported_input_methods->size(); ++i) {
const InputMethodDescriptor& input_method =
@@ -74,6 +78,10 @@ struct IdMaps {
std::make_pair(input_method.id(), language_code));
id_to_descriptor->insert(
std::make_pair(input_method.id(), input_method));
+ if (IsKeyboardLayout(input_method.id())) {
+ xkb_id_to_descriptor->insert(
+ std::make_pair(input_method.keyboard_layout(), input_method));
+ }
}
// Go through the languages listed in kExtraLanguages.
@@ -95,7 +103,8 @@ struct IdMaps {
private:
IdMaps() : language_code_to_ids(new LanguageCodeToIdsMap),
id_to_language_code(new std::map<std::string, std::string>),
- id_to_descriptor(new InputMethodIdToDescriptorMap) {
+ id_to_descriptor(new InputMethodIdToDescriptorMap),
+ xkb_id_to_descriptor(new XkbIdToDescriptorMap) {
ReloadMaps();
}
@@ -518,6 +527,14 @@ const InputMethodDescriptor* GetInputMethodDescriptorFromId(
NULL : &(iter->second);
}
+const InputMethodDescriptor* GetInputMethodDescriptorFromXkbId(
+ const std::string& xkb_id) {
+ InputMethodIdToDescriptorMap::const_iterator iter
+ = IdMaps::GetInstance()->xkb_id_to_descriptor->find(xkb_id);
+ return (iter == IdMaps::GetInstance()->xkb_id_to_descriptor->end()) ?
+ NULL : &(iter->second);
+}
+
string16 GetLanguageDisplayNameFromCode(const std::string& language_code) {
if (!g_browser_process) {
return string16();

Powered by Google App Engine
This is Rietveld 408576698