diff options
author | yusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-07 21:45:19 +0000 |
---|---|---|
committer | yusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-07 21:45:19 +0000 |
commit | d94e0bf48332e8bca1b7036863aded435a99ddf4 (patch) | |
tree | 27e1b4631ef9fb252fc285418347e5f425d91fd3 | |
parent | 3f997d5136b197a73faad7befac8baf6d96c00e1 (diff) | |
download | chromium_src-d94e0bf48332e8bca1b7036863aded435a99ddf4.zip chromium_src-d94e0bf48332e8bca1b7036863aded435a99ddf4.tar.gz chromium_src-d94e0bf48332e8bca1b7036863aded435a99ddf4.tar.bz2 |
Remove kEnglishAndInputMethodIdToResourceIdArraySize.
Resolving string ambiguity using the current input method id seems like a bad idea because the string translation function could be called before global-engine-changed ibus signal is sent to Chrome.
BUG=chromium-os:20036
TEST=try,manual
Review URL: http://codereview.chromium.org/7828079
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100026 0039d316-1c4b-4281-b951-d872f2087c98
4 files changed, 32 insertions, 88 deletions
diff --git a/chrome/browser/chromeos/input_method/input_method_util.cc b/chrome/browser/chromeos/input_method/input_method_util.cc index b6bdf0c..07ac6e0 100644 --- a/chrome/browser/chromeos/input_method/input_method_util.cc +++ b/chrome/browser/chromeos/input_method/input_method_util.cc @@ -137,6 +137,8 @@ const struct EnglishToResouceId { IDS_STATUSBAR_IME_CHINESE_PINYIN_TOGGLE_FULL_HALF_PUNCTUATION }, { "Simplfied/Traditional Chinese", IDS_STATUSBAR_IME_CHINESE_PINYIN_TOGGLE_S_T_CHINESE }, + { "Chinese", + IDS_STATUSBAR_IME_CHINESE_PINYIN_TOGGLE_CHINESE_ENGLISH }, // For ibus-mozc-chewing. { "English", @@ -263,19 +265,6 @@ const struct EnglishToResouceId { const size_t kEnglishToResourceIdArraySize = arraysize(kEnglishToResourceIdArray); -const struct EnglishAndInputMethodIdToResouceId { - const char* english_string_from_ibus; - const char* input_method_id; - int resource_id; -} kEnglishAndInputMethodIdToResourceIdArray[] = { - { "Chinese", "pinyin", - IDS_STATUSBAR_IME_CHINESE_PINYIN_TOGGLE_CHINESE_ENGLISH }, - { "Chinese", "mozc-chewing", - IDS_STATUSBAR_IME_CHINESE_MOZC_CHEWING_CHINESE_MODE }, -}; -const size_t kEnglishAndInputMethodIdToResourceIdArraySize = - arraysize(kEnglishAndInputMethodIdToResourceIdArray); - // There are some differences between ISO 639-2 (T) and ISO 639-2 B, and // some language codes are not recognized by ICU (i.e. ICU cannot convert // these codes to two-letter language codes and display names). Hence we @@ -317,7 +306,6 @@ struct CompareLanguageCodesByLanguageName }; bool GetLocalizedString(const std::string& english_string, - const std::string& input_method_id, string16 *out_string) { DCHECK(out_string); @@ -336,45 +324,16 @@ bool GetLocalizedString(const std::string& english_string, } } - // Initialize the secondary map if needed. - typedef std::map<std::pair<std::string, std::string>, int> MapType; - static MapType* english_and_input_method_id_to_resource_id = NULL; - if (!english_and_input_method_id_to_resource_id) { - // We don't free this map. - english_and_input_method_id_to_resource_id = new MapType; - for (size_t i = 0; i < kEnglishAndInputMethodIdToResourceIdArraySize; ++i) { - const EnglishAndInputMethodIdToResouceId& map_entry = - kEnglishAndInputMethodIdToResourceIdArray[i]; - const std::pair<std::string, std::string> key = std::make_pair( - map_entry.english_string_from_ibus, map_entry.input_method_id); - const bool result = english_and_input_method_id_to_resource_id->insert( - std::make_pair(key, map_entry.resource_id)).second; - DCHECK(result) << "Duplicated key is found: pair of " - << map_entry.english_string_from_ibus - << " and " - << map_entry.input_method_id; - } - } - HashType::const_iterator iter = english_to_resource_id->find(english_string); if (iter == english_to_resource_id->end()) { - // The string is not found in the primary map. Try the secondary map with - // |input_method_id|. - const std::pair<std::string, std::string> key = - std::make_pair(english_string, input_method_id); - MapType::const_iterator iter2 = - english_and_input_method_id_to_resource_id->find(key); - if (iter2 == english_and_input_method_id_to_resource_id->end()) { - // TODO(yusukes): Write Autotest which checks if all display names and all - // property names for supported input methods are listed in the resource - // ID array (crosbug.com/4572). - LOG(ERROR) << "Resource ID is not found for: " << english_string; - return false; - } - *out_string = l10n_util::GetStringUTF16(iter2->second); - } else { - *out_string = l10n_util::GetStringUTF16(iter->second); + // TODO(yusukes): Write Autotest which checks if all display names and all + // property names for supported input methods are listed in the resource + // ID array (crosbug.com/4572). + LOG(ERROR) << "Resource ID is not found for: " << english_string; + return false; } + + *out_string = l10n_util::GetStringUTF16(iter->second); return true; }; @@ -397,37 +356,33 @@ const ExtraLanguage kExtraLanguages[] = { }; const size_t kExtraLanguagesLength = arraysize(kExtraLanguages); -std::wstring GetString(const std::string& english_string, - const std::string& input_method_id) { +std::wstring GetString(const std::string& english_string) { string16 localized_string; - if (GetLocalizedString(english_string, input_method_id, &localized_string)) { + if (GetLocalizedString(english_string, &localized_string)) { return UTF16ToWide(localized_string); } return UTF8ToWide(english_string); } -std::string GetStringUTF8(const std::string& english_string, - const std::string& input_method_id) { +std::string GetStringUTF8(const std::string& english_string) { string16 localized_string; - if (GetLocalizedString(english_string, input_method_id, &localized_string)) { + if (GetLocalizedString(english_string, &localized_string)) { return UTF16ToUTF8(localized_string); } return english_string; } -string16 GetStringUTF16(const std::string& english_string, - const std::string& input_method_id) { +string16 GetStringUTF16(const std::string& english_string) { string16 localized_string; - if (GetLocalizedString(english_string, input_method_id, &localized_string)) { + if (GetLocalizedString(english_string, &localized_string)) { return localized_string; } return UTF8ToUTF16(english_string); } -bool StringIsSupported(const std::string& english_string, - const std::string& input_method_id) { +bool StringIsSupported(const std::string& english_string) { string16 localized_string; - return GetLocalizedString(english_string, input_method_id, &localized_string); + return GetLocalizedString(english_string, &localized_string); } std::string NormalizeLanguageCode( @@ -533,8 +488,7 @@ std::string GetKeyboardLayoutName(const std::string& input_method_id) { std::string GetInputMethodDisplayNameFromId( const std::string& input_method_id) { - const std::string display_name = - GetStringUTF8(input_method_id, input_method_id); + const std::string display_name = GetStringUTF8(input_method_id); // Return an empty string if the display name is not found. return display_name == input_method_id ? "" : display_name; } diff --git a/chrome/browser/chromeos/input_method/input_method_util.h b/chrome/browser/chromeos/input_method/input_method_util.h index b542f21..9525ce0 100644 --- a/chrome/browser/chromeos/input_method/input_method_util.h +++ b/chrome/browser/chromeos/input_method/input_method_util.h @@ -30,17 +30,13 @@ extern const size_t kExtraLanguagesLength; // into Chrome's string ID, then pulls internationalized resource string from // the resource bundle and returns it. These functions are not thread-safe. // Non-UI threads are not allowed to call them. -std::wstring GetString( - const std::string& english_string, const std::string& input_method_id); -std::string GetStringUTF8( - const std::string& english_string, const std::string& input_method_id); -string16 GetStringUTF16( - const std::string& english_string, const std::string& input_method_id); +std::wstring GetString(const std::string& english_string); +std::string GetStringUTF8(const std::string& english_string); +string16 GetStringUTF16(const std::string& english_string); // This method is ONLY for unit testing. Returns true if the given string is // supported (i.e. the string is associated with a resource ID). -bool StringIsSupported(const std::string& english_string, - const std::string& input_method_id); +bool StringIsSupported(const std::string& english_string); // Normalizes the language code and returns the normalized version. The // function normalizes the given language code to be compatible with the diff --git a/chrome/browser/chromeos/input_method/input_method_util_unittest.cc b/chrome/browser/chromeos/input_method/input_method_util_unittest.cc index 5485bc0..38e21f09 100644 --- a/chrome/browser/chromeos/input_method/input_method_util_unittest.cc +++ b/chrome/browser/chromeos/input_method/input_method_util_unittest.cc @@ -55,24 +55,20 @@ class InputMethodUtilTest : public testing::Test { }; TEST_F(InputMethodUtilTest, TestGetStringUTF8) { - EXPECT_EQ("Pinyin input method", - GetStringUTF8("pinyin", "")); + EXPECT_EQ("Pinyin input method", GetStringUTF8("pinyin")); #if !defined(GOOGLE_CHROME_BUILD) EXPECT_EQ("Japanese input method (for US Dvorak keyboard)", - GetStringUTF8("mozc-dv", "")); + GetStringUTF8("mozc-dv")); #endif } TEST_F(InputMethodUtilTest, TestStringIsSupported) { - EXPECT_TRUE(StringIsSupported("Hiragana", "mozc")); - EXPECT_TRUE(StringIsSupported("Latin", "mozc")); - EXPECT_TRUE(StringIsSupported("Direct input", "mozc")); - EXPECT_FALSE(StringIsSupported( - "####THIS_STRING_IS_NOT_SUPPORTED####", "mozc")); - EXPECT_TRUE(StringIsSupported("Chinese", "pinyin")); - EXPECT_TRUE(StringIsSupported("Chinese", "mozc-chewing")); - // The string "Chinese" is not for "hangul". - EXPECT_FALSE(StringIsSupported("Chinese", "hangul")); + EXPECT_TRUE(StringIsSupported("Hiragana")); + EXPECT_TRUE(StringIsSupported("Latin")); + EXPECT_TRUE(StringIsSupported("Direct input")); + EXPECT_FALSE(StringIsSupported("####THIS_STRING_IS_NOT_SUPPORTED####")); + EXPECT_TRUE(StringIsSupported("Chinese")); + EXPECT_TRUE(StringIsSupported("_Chinese")); } TEST_F(InputMethodUtilTest, TestNormalizeLanguageCode) { diff --git a/chrome/browser/chromeos/status/input_method_menu.cc b/chrome/browser/chromeos/status/input_method_menu.cc index 2a1cade..3d19f31 100644 --- a/chrome/browser/chromeos/status/input_method_menu.cc +++ b/chrome/browser/chromeos/status/input_method_menu.cc @@ -318,9 +318,7 @@ string16 InputMethodMenu::GetLabelAt(int index) const { InputMethodManager* manager = InputMethodManager::GetInstance(); const input_method::ImePropertyList& property_list = manager->current_ime_properties(); - const std::string& input_method_id = manager->current_input_method().id(); - return input_method::GetStringUTF16( - property_list.at(index).label, input_method_id); + return input_method::GetStringUTF16(property_list.at(index).label); } return WideToUTF16(name); @@ -668,7 +666,7 @@ std::wstring InputMethodMenu::GetTextForMenu( language_code == "ta") { text = GetLanguageName(language_code) + L" - "; } - text += input_method::GetString(input_method.id(), input_method.id()); + text += input_method::GetString(input_method.id()); DCHECK(!text.empty()); return text; |