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

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_fpfbhcjppmaeaijcidgiibchfbnhbeljnacl_mozc_us", "\xe3\x81\x82" }, 39 { "nacl_mozc_us", "\xe3\x81\x82" },
40 { "_comp_ime_fpfbhcjppmaeaijcidgiibchfbnhbeljnacl_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_fpfbhcjppmaeaijcidgiibchfbnhbeljnacl_mozc_us" }, 99 { "ja", "us", "nacl_mozc_us" },
128 { "ja", "jp", "_comp_ime_fpfbhcjppmaeaijcidgiibchfbnhbeljnacl_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 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 // "US" and "JP". 440 // "US" and "JP".
477 441
478 // Use the indicator string if set. 442 // Use the indicator string if set.
479 if (!input_method.indicator().empty()) { 443 if (!input_method.indicator().empty()) {
480 return base::UTF8ToUTF16(input_method.indicator()); 444 return base::UTF8ToUTF16(input_method.indicator());
481 } 445 }
482 446
483 base::string16 text; 447 base::string16 text;
484 // Check special cases first. 448 // Check special cases first.
485 for (size_t i = 0; i < kMappingFromIdToIndicatorTextLen; ++i) { 449 for (size_t i = 0; i < kMappingFromIdToIndicatorTextLen; ++i) {
486 if (kMappingFromIdToIndicatorText[i].input_method_id == 450 if (extension_ime_util::GetInputMethodIDByEngineID(
487 input_method.id()) { 451 kMappingFromIdToIndicatorText[i].engine_id) == input_method.id()) {
488 text = base::UTF8ToUTF16(kMappingFromIdToIndicatorText[i].indicator_text); 452 text = base::UTF8ToUTF16(kMappingFromIdToIndicatorText[i].indicator_text);
489 break; 453 break;
490 } 454 }
491 } 455 }
492 456
493 // Display the keyboard layout name when using a keyboard layout. 457 // Display the keyboard layout name when using a keyboard layout.
494 if (text.empty() && IsKeyboardLayout(input_method.id())) { 458 if (text.empty() && IsKeyboardLayout(input_method.id())) {
495 std::map<std::string, std::string>::const_iterator it = 459 std::map<std::string, std::string>::const_iterator it =
496 xkb_layout_to_indicator_.find(GetKeyboardLayoutName(input_method.id())); 460 xkb_layout_to_indicator_.find(GetKeyboardLayoutName(input_method.id()));
497 if (it != xkb_layout_to_indicator_.end()) 461 if (it != xkb_layout_to_indicator_.end())
(...skipping 16 matching lines...) Expand all
514 DCHECK(!text.empty()) << input_method.id(); 478 DCHECK(!text.empty()) << input_method.id();
515 return text; 479 return text;
516 } 480 }
517 481
518 base::string16 InputMethodUtil::GetInputMethodMediumName( 482 base::string16 InputMethodUtil::GetInputMethodMediumName(
519 const InputMethodDescriptor& input_method) const { 483 const InputMethodDescriptor& input_method) const {
520 // For the "Your input method has changed to..." bubble. In most cases 484 // For the "Your input method has changed to..." bubble. In most cases
521 // it uses the same name as the short name, unless found in a table 485 // it uses the same name as the short name, unless found in a table
522 // for medium length names. 486 // for medium length names.
523 for (size_t i = 0; i < kMappingImeIdToMediumLenNameResourceIdLen; ++i) { 487 for (size_t i = 0; i < kMappingImeIdToMediumLenNameResourceIdLen; ++i) {
524 if (kMappingImeIdToMediumLenNameResourceId[i].input_method_id == 488 if (extension_ime_util::GetInputMethodIDByEngineID(
489 kMappingImeIdToMediumLenNameResourceId[i].engine_id) ==
525 input_method.id()) { 490 input_method.id()) {
526 return delegate_->GetLocalizedString( 491 return delegate_->GetLocalizedString(
527 kMappingImeIdToMediumLenNameResourceId[i].resource_id); 492 kMappingImeIdToMediumLenNameResourceId[i].resource_id);
528 } 493 }
529 } 494 }
530 return GetInputMethodShortName(input_method); 495 return GetInputMethodShortName(input_method);
531 } 496 }
532 497
533 base::string16 InputMethodUtil::GetInputMethodLongName( 498 base::string16 InputMethodUtil::GetInputMethodLongName(
534 const InputMethodDescriptor& input_method) const { 499 const InputMethodDescriptor& input_method) const {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 // First, add the current keyboard layout (one used on the login screen). 588 // First, add the current keyboard layout (one used on the login screen).
624 out_input_method_ids->push_back(current_input_method.id()); 589 out_input_method_ids->push_back(current_input_method.id());
625 590
626 const std::string current_layout 591 const std::string current_layout
627 = current_input_method.GetPreferredKeyboardLayout(); 592 = current_input_method.GetPreferredKeyboardLayout();
628 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kDefaultInputMethodRecommendation); 593 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kDefaultInputMethodRecommendation);
629 ++i) { 594 ++i) {
630 if (kDefaultInputMethodRecommendation[i].locale == language_code && 595 if (kDefaultInputMethodRecommendation[i].locale == language_code &&
631 kDefaultInputMethodRecommendation[i].layout == current_layout) { 596 kDefaultInputMethodRecommendation[i].layout == current_layout) {
632 out_input_method_ids->push_back( 597 out_input_method_ids->push_back(
633 kDefaultInputMethodRecommendation[i].input_method_id); 598 extension_ime_util::GetInputMethodIDByEngineID(
599 kDefaultInputMethodRecommendation[i].engine_id));
634 return; 600 return;
635 } 601 }
636 } 602 }
637 603
638 // Second, find the most popular input method associated with the 604 // Second, find the most popular input method associated with the
639 // current UI language. The input method IDs returned from 605 // current UI language. The input method IDs returned from
640 // GetInputMethodIdsFromLanguageCode() are sorted by popularity, hence 606 // GetInputMethodIdsFromLanguageCode() are sorted by popularity, hence
641 // our basic strategy is to pick the first one, but it's a bit more 607 // our basic strategy is to pick the first one, but it's a bit more
642 // complicated as shown below. 608 // complicated as shown below.
643 std::string most_popular_id; 609 std::string most_popular_id;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 674
709 return std::string(); 675 return std::string();
710 } 676 }
711 677
712 bool InputMethodUtil::MigrateXkbInputMethods( 678 bool InputMethodUtil::MigrateXkbInputMethods(
713 std::vector<std::string>* input_method_ids) { 679 std::vector<std::string>* input_method_ids) {
714 bool rewritten = false; 680 bool rewritten = false;
715 std::vector<std::string>& ids = *input_method_ids; 681 std::vector<std::string>& ids = *input_method_ids;
716 for (size_t i = 0; i < ids.size(); ++i) { 682 for (size_t i = 0; i < ids.size(); ++i) {
717 std::string id = 683 std::string id =
718 extension_ime_util::GetInputMethodIDByKeyboardLayout(ids[i]); 684 extension_ime_util::GetInputMethodIDByEngineID(ids[i]);
719 // Migrates the old chinese ime id to new ones. 685 // Migrates the old chinese ime id to new ones.
720 // TODO(shuchen): Change the function name to MigrateInputMethods, 686 // TODO(shuchen): Change the function name to MigrateInputMethods,
721 // and create an abstract layer to map a comprehensive input method id to 687 // and create an abstract layer to map a comprehensive input method id to
722 // the real extension based input method id. 688 // the real extension based input method id.
723 // e.g. "zh-t-i0-pinyin" maps to 689 // e.g. "zh-t-i0-pinyin" maps to
724 // "_comp_id_gjaehgfemfahhmlgpdfknkhdnemmolopzh-t-i0-pinyin". 690 // "_comp_id_gjaehgfemfahhmlgpdfknkhdnemmolopzh-t-i0-pinyin".
725 // See crbug.com/358083. 691 // See crbug.com/358083.
726 for (size_t j = 0; j < arraysize(kOldChineseExtensionIds); ++j) { 692 for (size_t j = 0; j < arraysize(kOldChineseExtensionIds); ++j) {
727 size_t pos = id.find(kOldChineseExtensionIds[j]); 693 size_t pos = id.find(kOldChineseExtensionIds[j]);
728 if (pos != std::string::npos) { 694 if (pos != std::string::npos) {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 } 787 }
822 if (it == range.second) 788 if (it == range.second)
823 language_code_to_ids_.insert( 789 language_code_to_ids_.insert(
824 std::make_pair(language_codes[j], input_method.id())); 790 std::make_pair(language_codes[j], input_method.id()));
825 } 791 }
826 } 792 }
827 } 793 }
828 794
829 void InputMethodUtil::InitXkbInputMethodsForTesting() { 795 void InputMethodUtil::InitXkbInputMethodsForTesting() {
830 cached_hardware_layouts_.clear(); 796 cached_hardware_layouts_.clear();
831 if (!extension_ime_util::UseWrappedExtensionKeyboardLayouts())
832 return;
833 scoped_ptr<InputMethodDescriptors> original_imes = 797 scoped_ptr<InputMethodDescriptors> original_imes =
834 InputMethodWhitelist().GetSupportedInputMethods(); 798 InputMethodWhitelist().GetSupportedInputMethods();
835 InputMethodDescriptors whitelist_imes; 799 InputMethodDescriptors whitelist_imes;
836 for (size_t i = 0; i < original_imes->size(); ++i) { 800 for (size_t i = 0; i < original_imes->size(); ++i) {
837 const InputMethodDescriptor& ime = (*original_imes)[i]; 801 const InputMethodDescriptor& ime = (*original_imes)[i];
838 whitelist_imes.push_back(InputMethodDescriptor( 802 whitelist_imes.push_back(InputMethodDescriptor(
839 extension_ime_util::GetInputMethodIDByKeyboardLayout(ime.id()), 803 extension_ime_util::GetInputMethodIDByEngineID(ime.id()),
840 "", 804 "",
841 ime.indicator(), 805 ime.indicator(),
842 ime.keyboard_layouts(), 806 ime.keyboard_layouts(),
843 ime.language_codes(), 807 ime.language_codes(),
844 ime.is_login_keyboard(), 808 ime.is_login_keyboard(),
845 ime.options_page_url(), 809 ime.options_page_url(),
846 ime.input_view_url())); 810 ime.input_view_url()));
847 } 811 }
848 SetComponentExtensions(whitelist_imes); 812 SetComponentExtensions(whitelist_imes);
849 } 813 }
850 814
851 InputMethodDescriptor InputMethodUtil::GetFallbackInputMethodDescriptor() { 815 InputMethodDescriptor InputMethodUtil::GetFallbackInputMethodDescriptor() {
852 std::vector<std::string> layouts; 816 std::vector<std::string> layouts;
853 layouts.push_back("us"); 817 layouts.push_back("us");
854 std::vector<std::string> languages; 818 std::vector<std::string> languages;
855 languages.push_back("en-US"); 819 languages.push_back("en-US");
856 return InputMethodDescriptor( 820 return InputMethodDescriptor(
857 extension_ime_util::GetInputMethodIDByKeyboardLayout("xkb:us::eng"), 821 extension_ime_util::GetInputMethodIDByEngineID("xkb:us::eng"),
858 "", 822 "",
859 "US", 823 "US",
860 layouts, 824 layouts,
861 languages, 825 languages,
862 true, // login keyboard. 826 true, // login keyboard.
863 GURL(), // options page, not available. 827 GURL(), // options page, not available.
864 GURL()); // input view page, not available. 828 GURL()); // input view page, not available.
865 } 829 }
866 830
867 void InputMethodUtil::ReloadInternalMaps() { 831 void InputMethodUtil::ReloadInternalMaps() {
868 if (supported_input_methods_->size() <= 1) { 832 if (supported_input_methods_->size() <= 1) {
869 DVLOG(1) << "GetSupportedInputMethods returned a fallback ID"; 833 DVLOG(1) << "GetSupportedInputMethods returned a fallback ID";
870 // TODO(yusukes): Handle this error in nicer way. 834 // TODO(yusukes): Handle this error in nicer way.
871 } 835 }
872 836
873 // Clear the existing maps. 837 // Clear the existing maps.
874 language_code_to_ids_.clear(); 838 language_code_to_ids_.clear();
875 id_to_language_code_.clear(); 839 id_to_language_code_.clear();
876 id_to_descriptor_.clear(); 840 id_to_descriptor_.clear();
877 841
878 for (size_t i = 0; i < supported_input_methods_->size(); ++i) { 842 for (size_t i = 0; i < supported_input_methods_->size(); ++i) {
879 const InputMethodDescriptor& input_method = supported_input_methods_->at(i); 843 const InputMethodDescriptor& input_method = supported_input_methods_->at(i);
880 const std::string input_method_id = 844 const std::string input_method_id =
881 extension_ime_util::GetInputMethodIDByKeyboardLayout(input_method.id()); 845 extension_ime_util::GetInputMethodIDByEngineID(input_method.id());
882 const std::vector<std::string>& language_codes = 846 const std::vector<std::string>& language_codes =
883 input_method.language_codes(); 847 input_method.language_codes();
884 848
885 // |input_method_id| may be different than input_method.id(). 849 // |input_method_id| may be different than input_method.id().
886 id_to_descriptor_.insert( 850 id_to_descriptor_.insert(
887 std::make_pair(input_method_id, 851 std::make_pair(input_method_id,
888 InputMethodDescriptor(input_method_id, 852 InputMethodDescriptor(input_method_id,
889 input_method.name(), 853 input_method.name(),
890 input_method.indicator(), 854 input_method.indicator(),
891 input_method.keyboard_layouts(), 855 input_method.keyboard_layouts(),
892 input_method.language_codes(), 856 input_method.language_codes(),
893 input_method.is_login_keyboard(), 857 input_method.is_login_keyboard(),
894 input_method.options_page_url(), 858 input_method.options_page_url(),
895 input_method.input_view_url()))); 859 input_method.input_view_url())));
896 860
897 for (size_t i = 0; i < language_codes.size(); ++i) { 861 for (size_t i = 0; i < language_codes.size(); ++i) {
898 language_code_to_ids_.insert( 862 language_code_to_ids_.insert(
899 std::make_pair(language_codes[i], input_method_id)); 863 std::make_pair(language_codes[i], input_method_id));
900 // Remember the pairs. 864 // Remember the pairs.
901 id_to_language_code_.insert( 865 id_to_language_code_.insert(
902 std::make_pair(input_method_id, language_codes[i])); 866 std::make_pair(input_method_id, language_codes[i]));
903 } 867 }
904 } 868 }
905 } 869 }
906 870
907 } // namespace input_method 871 } // namespace input_method
908 } // namespace chromeos 872 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698