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

Side by Side Diff: chrome/browser/chromeos/input_method/input_method_util.cc

Issue 309623005: Remove the flag g_use_wrapped_extension_keyboard_layouts. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/chromeos/input_method/input_method_util.h" 5 #include "chrome/browser/chromeos/input_method/input_method_util.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 13 matching lines...) Expand all
24 #include "chromeos/ime/input_method_whitelist.h" 24 #include "chromeos/ime/input_method_whitelist.h"
25 // TODO(nona): move this header from this file. 25 // TODO(nona): move this header from this file.
26 #include "grit/generated_resources.h" 26 #include "grit/generated_resources.h"
27 27
28 namespace { 28 namespace {
29 29
30 // A mapping from an input method id to a string for the language indicator. The 30 // A mapping from an input method id to a string for the language indicator. The
31 // mapping is necessary since some input methods belong to the same language. 31 // mapping is necessary since some input methods belong to the same language.
32 // For example, both "xkb:us::eng" and "xkb:us:dvorak:eng" are for US English. 32 // For example, both "xkb:us::eng" and "xkb:us:dvorak:eng" are for US English.
33 const struct { 33 const struct {
34 const char* input_method_id; 34 const char* engine_id;
35 const char* indicator_text; 35 const char* indicator_text;
36 } kMappingFromIdToIndicatorText[] = { 36 } kMappingFromIdToIndicatorText[] = {
37 // To distinguish from "xkb:jp::jpn" 37 // To distinguish from "xkb:jp::jpn"
38 // TODO(nona): Make following variables configurable. http://crbug.com/232260. 38 // TODO(nona): Make following variables configurable. http://crbug.com/232260.
39 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopnacl_mozc_us", "\xe3\x81\x82" }, 39 { "nacl_mozc_us", "\xe3\x81\x82" },
40 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopnacl_mozc_jp", "\xe3\x81\x82" }, 40 { "nacl_mozc_jp", "\xe3\x81\x82" },
41 { "_comp_ime_bbaiamgfapehflhememkfglaehiobjnknacl_mozc_us", "\xe3\x81\x82" },
42 { "_comp_ime_bbaiamgfapehflhememkfglaehiobjnknacl_mozc_jp", "\xe3\x81\x82" },
43 // For simplified Chinese input methods 41 // For simplified Chinese input methods
44 { "pinyin", "\xe6\x8b\xbc" }, // U+62FC 42 { "zh-t-i0-pinyin", "\xe6\x8b\xbc" }, // U+62FC
45 { "_comp_ime_cpgalbafkoofkjmaeonnfijgpfennjjnzh-t-i0-pinyin", 43 { "zh-t-i0-wubi-1986", "\xe4\xba\x94" }, // U+4E94
46 "\xe6\x8b\xbc" },
47 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-t-i0-pinyin",
48 "\xe6\x8b\xbc" },
49 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-t-i0-wubi-1986",
50 "\xe4\xba\x94" }, // U+4E94
51 { "pinyin-dv", "\xe6\x8b\xbc" },
52 // For traditional Chinese input methods 44 // For traditional Chinese input methods
53 { "mozc-chewing", "\xe9\x85\xb7" }, // U+9177 45 { "zh-hant-t-i0-und", "\xE6\xB3\xA8" }, // U+9177
54 { "_comp_ime_ekbifjdfhkmdeeajnolmgdlmkllopefizh-hant-t-i0-und", 46 { "zh-hant-t-i0-cangjie-1987", "\xe5\x80\x89" }, // U+5009
55 "\xE6\xB3\xA8" }, // U+6CE8 47 { "zh-hant-t-i0-cangjie-1987-x-m0-simplified", "\xe9\x80\x9f" }, // U+901F
56 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-hant-t-i0-und",
57 "\xE6\xB3\xA8" }, // U+6CE8
58 { "m17n:zh:cangjie", "\xe5\x80\x89" }, // U+5009
59 { "_comp_ime_aeebooiibjahgpgmhkeocbeekccfknbjzh-hant-t-i0-cangjie-1987",
60 "\xe5\x80\x89" }, // U+5009
61 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-hant-t-i0-cangjie-1987",
62 "\xe5\x80\x89" }, // U+5009
63 { "m17n:zh:quick", "\xe9\x80\x9f" }, // U+901F
64 // For Hangul input method. 48 // For Hangul input method.
65 { "mozc-hangul", "\xed\x95\x9c" }, // U+D55C 49 { "hangul_2set", "\xed\x95\x9c" }, // U+D55C
66 { "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_2set", "\xed\x95\x9c" }, 50 { "hangul_3set390", "\xed\x95\x9c" }, // U+D55C
67 { "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3set390", 51 { "hangul_3setfinal", "\xed\x95\x9c" }, // U+D55C
68 "\xed\x95\x9c" }, 52 { "hangul_3setnoshift", "\xed\x95\x9c" }, // U+D55C
69 { "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3setfinal", 53 { "hangul_romaja", "\xed\x95\x9c" }, // U+D55C
70 "\xed\x95\x9c" },
71 { "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_3setnoshift",
72 "\xed\x95\x9c" },
73 { "_comp_ime_bdgdidmhaijohebebipajioienkglgfohangul_romaja", "\xed\x95\x9c" },
74 { extension_misc::kBrailleImeEngineId, 54 { extension_misc::kBrailleImeEngineId,
75 // U+2803 U+2817 U+2807 (Unicode braille patterns for the letters 'brl' in 55 // U+2803 U+2817 U+2807 (Unicode braille patterns for the letters 'brl' in
76 // English (and many other) braille codes. 56 // English (and many other) braille codes.
77 "\xe2\xa0\x83\xe2\xa0\x97\xe2\xa0\x87" }, 57 "\xe2\xa0\x83\xe2\xa0\x97\xe2\xa0\x87" },
78 }; 58 };
79 59
80 const size_t kMappingFromIdToIndicatorTextLen = 60 const size_t kMappingFromIdToIndicatorTextLen =
81 ARRAYSIZE_UNSAFE(kMappingFromIdToIndicatorText); 61 ARRAYSIZE_UNSAFE(kMappingFromIdToIndicatorText);
82 62
83 // A mapping from an input method id to a resource id for a 63 // A mapping from an input method id to a resource id for a
84 // medium length language indicator. 64 // medium length language indicator.
85 // For those languages that want to display a slightly longer text in the 65 // For those languages that want to display a slightly longer text in the
86 // "Your input method has changed to..." bubble than in the status tray. 66 // "Your input method has changed to..." bubble than in the status tray.
87 // If an entry is not found in this table the short name is used. 67 // If an entry is not found in this table the short name is used.
88 const struct { 68 const struct {
89 const char* input_method_id; 69 const char* engine_id;
90 const int resource_id; 70 const int resource_id;
91 } kMappingImeIdToMediumLenNameResourceId[] = { 71 } kMappingImeIdToMediumLenNameResourceId[] = {
92 { "m17n:zh:cangjie", IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL }, 72 { "hangul_2set", IDS_LANGUAGES_MEDIUM_LEN_NAME_KOREAN },
93 { "m17n:zh:quick", IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL }, 73 { "hangul_3set390", IDS_LANGUAGES_MEDIUM_LEN_NAME_KOREAN },
94 { "mozc-chewing", IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL }, 74 { "hangul_3setfinal", IDS_LANGUAGES_MEDIUM_LEN_NAME_KOREAN },
95 { "mozc-hangul", IDS_LANGUAGES_MEDIUM_LEN_NAME_KOREAN }, 75 { "hangul_3setnoshift", IDS_LANGUAGES_MEDIUM_LEN_NAME_KOREAN },
96 { "pinyin", IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_SIMPLIFIED }, 76 { "hangul_3setromaja", IDS_LANGUAGES_MEDIUM_LEN_NAME_KOREAN },
97 { "pinyin-dv", IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_SIMPLIFIED }, 77 { "zh-t-i0-pinyin", IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_SIMPLIFIED},
98 { "_comp_ime_cpgalbafkoofkjmaeonnfijgpfennjjnzh-t-i0-pinyin", 78 { "zh-t-i0-wubi-1986", IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_SIMPLIFIED },
99 IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_SIMPLIFIED}, 79 { "zh-hant-t-i0-und", IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL },
100 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-t-i0-pinyin", 80 { "zh-hant-t-i0-cangjie-1987",
101 IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_SIMPLIFIED },
102 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-t-i0-wubi-1986",
103 IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_SIMPLIFIED },
104 { "_comp_ime_ekbifjdfhkmdeeajnolmgdlmkllopefizh-hant-t-i0-und",
105 IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL }, 81 IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL },
106 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-hant-t-i0-und", 82 { "zh-hant-t-i0-cangjie-1987-x-m0-simplified",
107 IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL },
108 { "_comp_ime_aeebooiibjahgpgmhkeocbeekccfknbjzh-hant-t-i0-cangjie-1987",
109 IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL },
110 { "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-hant-t-i0-cangjie-1987",
111 IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL }, 83 IDS_LANGUAGES_MEDIUM_LEN_NAME_CHINESE_TRADITIONAL },
112 { extension_misc::kBrailleImeEngineId, 84 { extension_misc::kBrailleImeEngineId,
113 IDS_LANGUAGES_MEDIUM_LEN_NAME_BRAILLE }, 85 IDS_LANGUAGES_MEDIUM_LEN_NAME_BRAILLE },
114 }; 86 };
115 const size_t kMappingImeIdToMediumLenNameResourceIdLen = 87 const size_t kMappingImeIdToMediumLenNameResourceIdLen =
116 ARRAYSIZE_UNSAFE(kMappingImeIdToMediumLenNameResourceId); 88 ARRAYSIZE_UNSAFE(kMappingImeIdToMediumLenNameResourceId);
117 89
118 // Due to asynchronous initialization of component extension manager, 90 // Due to asynchronous initialization of component extension manager,
119 // GetFirstLogingInputMethodIds may miss component extension IMEs. To enable 91 // GetFirstLogingInputMethodIds may miss component extension IMEs. To enable
120 // component extension IME as the first loging input method, we have to prepare 92 // component extension IME as the first loging input method, we have to prepare
121 // component extension IME IDs. 93 // component extension IME IDs.
122 const struct { 94 const struct {
123 const char* locale; 95 const char* locale;
124 const char* layout; 96 const char* layout;
125 const char* input_method_id; 97 const char* engine_id;
126 } kDefaultInputMethodRecommendation[] = { 98 } kDefaultInputMethodRecommendation[] = {
127 { "ja", "us", "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopnacl_mozc_us" }, 99 { "ja", "us", "nacl_mozc_us" },
128 { "ja", "jp", "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopnacl_mozc_jp" }, 100 { "ja", "jp", "nacl_mozc_jp" },
129 { "zh-CN", "us", "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-t-i0-pinyin" }, 101 { "zh-CN", "us", "zh-t-i0-pinyin" },
130 { "zh-TW", "us", 102 { "zh-TW", "us", "zh-hant-t-i0-und" },
131 "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-hant-t-i0-und" }, 103 { "th", "us", "vkd_th" },
132 #if defined(OFFICIAL_BUILD) 104 { "vi", "us", "vkd_vi_tcvn" },
133 { "th", "us", "_comp_ime_habcdindjejkmepknlhkkloncjcpcnbfvkd_th" },
134 { "vi", "us", "_comp_ime_habcdindjejkmepknlhkkloncjcpcnbfvkd_vi_tcvn" },
135 { "vi", "us", "_comp_ime_habcdindjejkmepknlhkkloncjcpcnbfvkd_vi_tcvn" },
136 #else
137 { "th", "us", "_comp_ime_jhffeifommiaekmbkkjlpmilogcfdohpvkd_th" },
138 { "vi", "us", "_comp_ime_jhffeifommiaekmbkkjlpmilogcfdohpvkd_vi_tcvn" },
139 { "vi", "us", "_comp_ime_jhffeifommiaekmbkkjlpmilogcfdohpvkd_vi_tcvn" },
140 #endif
141 }; 105 };
142 106
143 // The map from xkb layout to the indicator text. 107 // The map from xkb layout to the indicator text.
144 // Refer to crbug.com/349829. 108 // Refer to crbug.com/349829.
145 const char* const kXkbIndicators[][2] = {{"am", "AM"}, 109 const char* const kXkbIndicators[][2] = {{"am", "AM"},
146 {"be", "BE"}, 110 {"be", "BE"},
147 {"bg", "BG"}, 111 {"bg", "BG"},
148 {"bg(phonetic)", "BG"}, 112 {"bg(phonetic)", "BG"},
149 {"br", "BR"}, 113 {"br", "BR"},
150 {"by", "BY"}, 114 {"by", "BY"},
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 // "US" and "JP". 434 // "US" and "JP".
471 435
472 // Use the indicator string if set. 436 // Use the indicator string if set.
473 if (!input_method.indicator().empty()) { 437 if (!input_method.indicator().empty()) {
474 return base::UTF8ToUTF16(input_method.indicator()); 438 return base::UTF8ToUTF16(input_method.indicator());
475 } 439 }
476 440
477 base::string16 text; 441 base::string16 text;
478 // Check special cases first. 442 // Check special cases first.
479 for (size_t i = 0; i < kMappingFromIdToIndicatorTextLen; ++i) { 443 for (size_t i = 0; i < kMappingFromIdToIndicatorTextLen; ++i) {
480 if (kMappingFromIdToIndicatorText[i].input_method_id == 444 if (extension_ime_util::GetInputMethodIDByEngineID(
481 input_method.id()) { 445 kMappingFromIdToIndicatorText[i].engine_id) == input_method.id()) {
482 text = base::UTF8ToUTF16(kMappingFromIdToIndicatorText[i].indicator_text); 446 text = base::UTF8ToUTF16(kMappingFromIdToIndicatorText[i].indicator_text);
483 break; 447 break;
484 } 448 }
485 } 449 }
486 450
487 // Display the keyboard layout name when using a keyboard layout. 451 // Display the keyboard layout name when using a keyboard layout.
488 if (text.empty() && IsKeyboardLayout(input_method.id())) { 452 if (text.empty() && IsKeyboardLayout(input_method.id())) {
489 std::map<std::string, std::string>::const_iterator it = 453 std::map<std::string, std::string>::const_iterator it =
490 xkb_layout_to_indicator_.find(GetKeyboardLayoutName(input_method.id())); 454 xkb_layout_to_indicator_.find(GetKeyboardLayoutName(input_method.id()));
491 if (it != xkb_layout_to_indicator_.end()) 455 if (it != xkb_layout_to_indicator_.end())
(...skipping 16 matching lines...) Expand all
508 DCHECK(!text.empty()) << input_method.id(); 472 DCHECK(!text.empty()) << input_method.id();
509 return text; 473 return text;
510 } 474 }
511 475
512 base::string16 InputMethodUtil::GetInputMethodMediumName( 476 base::string16 InputMethodUtil::GetInputMethodMediumName(
513 const InputMethodDescriptor& input_method) const { 477 const InputMethodDescriptor& input_method) const {
514 // For the "Your input method has changed to..." bubble. In most cases 478 // For the "Your input method has changed to..." bubble. In most cases
515 // it uses the same name as the short name, unless found in a table 479 // it uses the same name as the short name, unless found in a table
516 // for medium length names. 480 // for medium length names.
517 for (size_t i = 0; i < kMappingImeIdToMediumLenNameResourceIdLen; ++i) { 481 for (size_t i = 0; i < kMappingImeIdToMediumLenNameResourceIdLen; ++i) {
518 if (kMappingImeIdToMediumLenNameResourceId[i].input_method_id == 482 if (extension_ime_util::GetInputMethodIDByEngineID(
483 kMappingImeIdToMediumLenNameResourceId[i].engine_id) ==
519 input_method.id()) { 484 input_method.id()) {
520 return delegate_->GetLocalizedString( 485 return delegate_->GetLocalizedString(
521 kMappingImeIdToMediumLenNameResourceId[i].resource_id); 486 kMappingImeIdToMediumLenNameResourceId[i].resource_id);
522 } 487 }
523 } 488 }
524 return GetInputMethodShortName(input_method); 489 return GetInputMethodShortName(input_method);
525 } 490 }
526 491
527 base::string16 InputMethodUtil::GetInputMethodLongName( 492 base::string16 InputMethodUtil::GetInputMethodLongName(
528 const InputMethodDescriptor& input_method) const { 493 const InputMethodDescriptor& input_method) const {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 // First, add the current keyboard layout (one used on the login screen). 582 // First, add the current keyboard layout (one used on the login screen).
618 out_input_method_ids->push_back(current_input_method.id()); 583 out_input_method_ids->push_back(current_input_method.id());
619 584
620 const std::string current_layout 585 const std::string current_layout
621 = current_input_method.GetPreferredKeyboardLayout(); 586 = current_input_method.GetPreferredKeyboardLayout();
622 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kDefaultInputMethodRecommendation); 587 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kDefaultInputMethodRecommendation);
623 ++i) { 588 ++i) {
624 if (kDefaultInputMethodRecommendation[i].locale == language_code && 589 if (kDefaultInputMethodRecommendation[i].locale == language_code &&
625 kDefaultInputMethodRecommendation[i].layout == current_layout) { 590 kDefaultInputMethodRecommendation[i].layout == current_layout) {
626 out_input_method_ids->push_back( 591 out_input_method_ids->push_back(
627 kDefaultInputMethodRecommendation[i].input_method_id); 592 extension_ime_util::GetInputMethodIDByEngineID(
593 kDefaultInputMethodRecommendation[i].engine_id));
628 return; 594 return;
629 } 595 }
630 } 596 }
631 597
632 // Second, find the most popular input method associated with the 598 // Second, find the most popular input method associated with the
633 // current UI language. The input method IDs returned from 599 // current UI language. The input method IDs returned from
634 // GetInputMethodIdsFromLanguageCode() are sorted by popularity, hence 600 // GetInputMethodIdsFromLanguageCode() are sorted by popularity, hence
635 // our basic strategy is to pick the first one, but it's a bit more 601 // our basic strategy is to pick the first one, but it's a bit more
636 // complicated as shown below. 602 // complicated as shown below.
637 std::string most_popular_id; 603 std::string most_popular_id;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 668
703 return std::string(); 669 return std::string();
704 } 670 }
705 671
706 bool InputMethodUtil::MigrateInputMethods( 672 bool InputMethodUtil::MigrateInputMethods(
707 std::vector<std::string>* input_method_ids) { 673 std::vector<std::string>* input_method_ids) {
708 bool rewritten = false; 674 bool rewritten = false;
709 std::vector<std::string>& ids = *input_method_ids; 675 std::vector<std::string>& ids = *input_method_ids;
710 for (size_t i = 0; i < ids.size(); ++i) { 676 for (size_t i = 0; i < ids.size(); ++i) {
711 std::string id = 677 std::string id =
712 extension_ime_util::GetInputMethodIDByKeyboardLayout(ids[i]); 678 extension_ime_util::GetInputMethodIDByEngineID(ids[i]);
713 // Migrates old ime id's to new ones. 679 // Migrates old ime id's to new ones.
714 for (size_t j = 0; j < arraysize(kExtensionIdMigrationMap); ++j) { 680 for (size_t j = 0; j < arraysize(kExtensionIdMigrationMap); ++j) {
715 size_t pos = id.find(kExtensionIdMigrationMap[j][0]); 681 size_t pos = id.find(kExtensionIdMigrationMap[j][0]);
716 if (pos != std::string::npos) 682 if (pos != std::string::npos)
717 id.replace(pos, kExtensionIdLen, kExtensionIdMigrationMap[j][1]); 683 id.replace(pos, kExtensionIdLen, kExtensionIdMigrationMap[j][1]);
718 if (id != ids[i]) { 684 if (id != ids[i]) {
719 ids[i] = id; 685 ids[i] = id;
720 rewritten = true; 686 rewritten = true;
721 } 687 }
722 } 688 }
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 // Clear the existing maps. 781 // Clear the existing maps.
816 language_code_to_ids_.clear(); 782 language_code_to_ids_.clear();
817 id_to_language_code_.clear(); 783 id_to_language_code_.clear();
818 id_to_descriptor_.clear(); 784 id_to_descriptor_.clear();
819 785
820 AppendInputMethods(imes); 786 AppendInputMethods(imes);
821 } 787 }
822 788
823 void InputMethodUtil::InitXkbInputMethodsForTesting() { 789 void InputMethodUtil::InitXkbInputMethodsForTesting() {
824 cached_hardware_layouts_.clear(); 790 cached_hardware_layouts_.clear();
825 if (!extension_ime_util::UseWrappedExtensionKeyboardLayouts())
826 return;
827 scoped_ptr<InputMethodDescriptors> original_imes = 791 scoped_ptr<InputMethodDescriptors> original_imes =
828 InputMethodWhitelist().GetSupportedInputMethods(); 792 InputMethodWhitelist().GetSupportedInputMethods();
829 InputMethodDescriptors whitelist_imes; 793 InputMethodDescriptors whitelist_imes;
830 for (size_t i = 0; i < original_imes->size(); ++i) { 794 for (size_t i = 0; i < original_imes->size(); ++i) {
831 const InputMethodDescriptor& ime = (*original_imes)[i]; 795 const InputMethodDescriptor& ime = (*original_imes)[i];
832 whitelist_imes.push_back(InputMethodDescriptor( 796 whitelist_imes.push_back(InputMethodDescriptor(
833 extension_ime_util::GetInputMethodIDByKeyboardLayout(ime.id()), 797 extension_ime_util::GetInputMethodIDByEngineID(ime.id()),
834 "", 798 "",
835 ime.indicator(), 799 ime.indicator(),
836 ime.keyboard_layouts(), 800 ime.keyboard_layouts(),
837 ime.language_codes(), 801 ime.language_codes(),
838 ime.is_login_keyboard(), 802 ime.is_login_keyboard(),
839 ime.options_page_url(), 803 ime.options_page_url(),
840 ime.input_view_url())); 804 ime.input_view_url()));
841 } 805 }
842 ResetInputMethods(whitelist_imes); 806 ResetInputMethods(whitelist_imes);
843 } 807 }
844 808
845 InputMethodDescriptor InputMethodUtil::GetFallbackInputMethodDescriptor() { 809 InputMethodDescriptor InputMethodUtil::GetFallbackInputMethodDescriptor() {
846 std::vector<std::string> layouts; 810 std::vector<std::string> layouts;
847 layouts.push_back("us"); 811 layouts.push_back("us");
848 std::vector<std::string> languages; 812 std::vector<std::string> languages;
849 languages.push_back("en-US"); 813 languages.push_back("en-US");
850 return InputMethodDescriptor( 814 return InputMethodDescriptor(
851 extension_ime_util::GetInputMethodIDByKeyboardLayout("xkb:us::eng"), 815 extension_ime_util::GetInputMethodIDByEngineID("xkb:us::eng"),
852 "", 816 "",
853 "US", 817 "US",
854 layouts, 818 layouts,
855 languages, 819 languages,
856 true, // login keyboard. 820 true, // login keyboard.
857 GURL(), // options page, not available. 821 GURL(), // options page, not available.
858 GURL()); // input view page, not available. 822 GURL()); // input view page, not available.
859 } 823 }
860 824
861 void InputMethodUtil::ReloadInternalMaps() { 825 void InputMethodUtil::ReloadInternalMaps() {
862 if (supported_input_methods_->size() <= 1) { 826 if (supported_input_methods_->size() <= 1) {
863 DVLOG(1) << "GetSupportedInputMethods returned a fallback ID"; 827 DVLOG(1) << "GetSupportedInputMethods returned a fallback ID";
864 // TODO(yusukes): Handle this error in nicer way. 828 // TODO(yusukes): Handle this error in nicer way.
865 } 829 }
866 830
867 // Clear the existing maps. 831 // Clear the existing maps.
868 language_code_to_ids_.clear(); 832 language_code_to_ids_.clear();
869 id_to_language_code_.clear(); 833 id_to_language_code_.clear();
870 id_to_descriptor_.clear(); 834 id_to_descriptor_.clear();
871 835
872 for (size_t i = 0; i < supported_input_methods_->size(); ++i) { 836 for (size_t i = 0; i < supported_input_methods_->size(); ++i) {
873 const InputMethodDescriptor& input_method = supported_input_methods_->at(i); 837 const InputMethodDescriptor& input_method = supported_input_methods_->at(i);
874 const std::string input_method_id = 838 const std::string input_method_id =
875 extension_ime_util::GetInputMethodIDByKeyboardLayout(input_method.id()); 839 extension_ime_util::GetInputMethodIDByEngineID(input_method.id());
876 const std::vector<std::string>& language_codes = 840 const std::vector<std::string>& language_codes =
877 input_method.language_codes(); 841 input_method.language_codes();
878 842
879 // |input_method_id| may be different than input_method.id(). 843 // |input_method_id| may be different than input_method.id().
880 id_to_descriptor_.insert( 844 id_to_descriptor_.insert(
881 std::make_pair(input_method_id, 845 std::make_pair(input_method_id,
882 InputMethodDescriptor(input_method_id, 846 InputMethodDescriptor(input_method_id,
883 input_method.name(), 847 input_method.name(),
884 input_method.indicator(), 848 input_method.indicator(),
885 input_method.keyboard_layouts(), 849 input_method.keyboard_layouts(),
886 input_method.language_codes(), 850 input_method.language_codes(),
887 input_method.is_login_keyboard(), 851 input_method.is_login_keyboard(),
888 input_method.options_page_url(), 852 input_method.options_page_url(),
889 input_method.input_view_url()))); 853 input_method.input_view_url())));
890 854
891 for (size_t i = 0; i < language_codes.size(); ++i) { 855 for (size_t i = 0; i < language_codes.size(); ++i) {
892 language_code_to_ids_.insert( 856 language_code_to_ids_.insert(
893 std::make_pair(language_codes[i], input_method_id)); 857 std::make_pair(language_codes[i], input_method_id));
894 // Remember the pairs. 858 // Remember the pairs.
895 id_to_language_code_.insert( 859 id_to_language_code_.insert(
896 std::make_pair(input_method_id, language_codes[i])); 860 std::make_pair(input_method_id, language_codes[i]));
897 } 861 }
898 } 862 }
899 } 863 }
900 864
901 } // namespace input_method 865 } // namespace input_method
902 } // namespace chromeos 866 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698