summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-07 21:45:19 +0000
committeryusukes@chromium.org <yusukes@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-07 21:45:19 +0000
commitd94e0bf48332e8bca1b7036863aded435a99ddf4 (patch)
tree27e1b4631ef9fb252fc285418347e5f425d91fd3
parent3f997d5136b197a73faad7befac8baf6d96c00e1 (diff)
downloadchromium_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
-rw-r--r--chrome/browser/chromeos/input_method/input_method_util.cc82
-rw-r--r--chrome/browser/chromeos/input_method/input_method_util.h12
-rw-r--r--chrome/browser/chromeos/input_method/input_method_util_unittest.cc20
-rw-r--r--chrome/browser/chromeos/status/input_method_menu.cc6
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;