| OLD | NEW |
| 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 <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 static base::string16 GetDisplayLanguageName(const std::string& language_code)
{ | 121 static base::string16 GetDisplayLanguageName(const std::string& language_code)
{ |
| 122 return l10n_util::GetDisplayNameForLocale(language_code, "en", true); | 122 return l10n_util::GetDisplayNameForLocale(language_code, "en", true); |
| 123 } | 123 } |
| 124 | 124 |
| 125 FakeInputMethodDelegate delegate_; | 125 FakeInputMethodDelegate delegate_; |
| 126 InputMethodWhitelist whitelist_; | 126 InputMethodWhitelist whitelist_; |
| 127 TestableInputMethodUtil util_; | 127 TestableInputMethodUtil util_; |
| 128 }; | 128 }; |
| 129 | 129 |
| 130 TEST_F(InputMethodUtilTest, GetInputMethodShortNameTest) { | 130 TEST_F(InputMethodUtilTest, GetInputMethodShortNameTest) { |
| 131 // Test normal cases. Two-letter language code should be returned. | 131 // Test invalid cases. Two-letter language code should be returned. |
| 132 { | |
| 133 InputMethodDescriptor desc = GetDesc("m17n:fa:isiri", // input method id | |
| 134 "us", // keyboard layout name | |
| 135 "fa", // language name | |
| 136 ""); // indicator | |
| 137 EXPECT_EQ(ASCIIToUTF16("FA"), util_.GetInputMethodShortName(desc)); | |
| 138 } | |
| 139 { | |
| 140 InputMethodDescriptor desc = GetDesc("mozc-hangul", "us", "ko", ""); | |
| 141 EXPECT_EQ(base::UTF8ToUTF16("\xed\x95\x9c"), | |
| 142 util_.GetInputMethodShortName(desc)); | |
| 143 } | |
| 144 { | 132 { |
| 145 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", ""); | 133 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", ""); |
| 146 // Upper-case string of the unknown language code, "xx", should be returned. | 134 // Upper-case string of the unknown language code, "xx", should be returned. |
| 147 EXPECT_EQ(ASCIIToUTF16("XX"), util_.GetInputMethodShortName(desc)); | 135 EXPECT_EQ(ASCIIToUTF16("XX"), util_.GetInputMethodShortName(desc)); |
| 148 } | 136 } |
| 149 | 137 |
| 150 // Test special cases. | 138 // Test special cases. |
| 151 { | 139 { |
| 152 InputMethodDescriptor desc = | 140 InputMethodDescriptor desc = |
| 153 GetDesc("xkb:us:dvorak:eng", "us", "en-US", "DV"); | 141 GetDesc("xkb:us:dvorak:eng", "us", "en-US", "DV"); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 for (int i=0; i<len; ++i) { | 196 for (int i=0; i<len; ++i) { |
| 209 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", ""); | 197 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", ""); |
| 210 base::string16 medium_name = util_.GetInputMethodMediumName(desc); | 198 base::string16 medium_name = util_.GetInputMethodMediumName(desc); |
| 211 base::string16 short_name = util_.GetInputMethodShortName(desc); | 199 base::string16 short_name = util_.GetInputMethodShortName(desc); |
| 212 EXPECT_EQ(medium_name,short_name); | 200 EXPECT_EQ(medium_name,short_name); |
| 213 } | 201 } |
| 214 } | 202 } |
| 215 { | 203 { |
| 216 // input methods with medium name not equal to short name | 204 // input methods with medium name not equal to short name |
| 217 const char * input_method_id[] = { | 205 const char * input_method_id[] = { |
| 218 "m17n:zh:cangjie", | |
| 219 "m17n:zh:quick", | |
| 220 pinyin_ime_id, | 206 pinyin_ime_id, |
| 221 zhuyin_ime_id, | 207 zhuyin_ime_id, |
| 222 "mozc-hangul", | |
| 223 pinyin_ime_id, | 208 pinyin_ime_id, |
| 224 pinyin_ime_id, | 209 pinyin_ime_id, |
| 225 }; | 210 }; |
| 226 const int len = ARRAYSIZE_UNSAFE(input_method_id); | 211 const int len = ARRAYSIZE_UNSAFE(input_method_id); |
| 227 for (int i=0; i<len; ++i) { | 212 for (int i=0; i<len; ++i) { |
| 228 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", ""); | 213 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", ""); |
| 229 base::string16 medium_name = util_.GetInputMethodMediumName(desc); | 214 base::string16 medium_name = util_.GetInputMethodMediumName(desc); |
| 230 base::string16 short_name = util_.GetInputMethodShortName(desc); | 215 base::string16 short_name = util_.GetInputMethodShortName(desc); |
| 231 EXPECT_NE(medium_name,short_name); | 216 EXPECT_NE(medium_name,short_name); |
| 232 } | 217 } |
| 233 } | 218 } |
| 234 } | 219 } |
| 235 | 220 |
| 236 TEST_F(InputMethodUtilTest, GetInputMethodLongNameTest) { | 221 TEST_F(InputMethodUtilTest, GetInputMethodLongNameTest) { |
| 237 // For most languages input method or keyboard layout name is returned. | 222 // For most languages input method or keyboard layout name is returned. |
| 238 // See below for exceptions. | 223 // See below for exceptions. |
| 239 { | 224 { |
| 240 InputMethodDescriptor desc = GetDesc("m17n:fa:isiri", "us", "fa", ""); | |
| 241 EXPECT_EQ(ASCIIToUTF16("Persian input method (ISIRI 2901 layout)"), | |
| 242 util_.GetInputMethodLongName(desc)); | |
| 243 } | |
| 244 { | |
| 245 InputMethodDescriptor desc = GetDesc("mozc-hangul", "us", "ko", ""); | |
| 246 EXPECT_EQ(ASCIIToUTF16("Korean input method"), | |
| 247 util_.GetInputMethodLongName(desc)); | |
| 248 } | |
| 249 { | |
| 250 InputMethodDescriptor desc = GetDesc("m17n:vi:tcvn", "us", "vi", ""); | |
| 251 EXPECT_EQ(ASCIIToUTF16("Vietnamese input method (TCVN6064)"), | |
| 252 util_.GetInputMethodLongName(desc)); | |
| 253 } | |
| 254 { | |
| 255 InputMethodDescriptor desc = GetDesc("xkb:jp::jpn", "jp", "ja", ""); | 225 InputMethodDescriptor desc = GetDesc("xkb:jp::jpn", "jp", "ja", ""); |
| 256 EXPECT_EQ(ASCIIToUTF16("Japanese"), | 226 EXPECT_EQ(ASCIIToUTF16("Japanese"), |
| 257 util_.GetInputMethodLongName(desc)); | 227 util_.GetInputMethodLongName(desc)); |
| 258 } | 228 } |
| 259 { | 229 { |
| 260 InputMethodDescriptor desc = | 230 InputMethodDescriptor desc = |
| 261 GetDesc("xkb:us:dvorak:eng", "us(dvorak)", "en-US", ""); | 231 GetDesc("xkb:us:dvorak:eng", "us(dvorak)", "en-US", ""); |
| 262 EXPECT_EQ(ASCIIToUTF16("US Dvorak"), | 232 EXPECT_EQ(ASCIIToUTF16("US Dvorak"), |
| 263 util_.GetInputMethodLongName(desc)); | 233 util_.GetInputMethodLongName(desc)); |
| 264 } | 234 } |
| 265 { | 235 { |
| 266 InputMethodDescriptor desc = | 236 InputMethodDescriptor desc = |
| 267 GetDesc("xkb:gb:dvorak:eng", "gb(dvorak)", "en-US", ""); | 237 GetDesc("xkb:gb:dvorak:eng", "gb(dvorak)", "en-US", ""); |
| 268 EXPECT_EQ(ASCIIToUTF16("UK Dvorak"), | 238 EXPECT_EQ(ASCIIToUTF16("UK Dvorak"), |
| 269 util_.GetInputMethodLongName(desc)); | 239 util_.GetInputMethodLongName(desc)); |
| 270 } | 240 } |
| 271 | 241 |
| 272 // For Arabic, Dutch, French, German and Hindi, | 242 // For Dutch, French, German and Hindi, |
| 273 // "language - keyboard layout" pair is returned. | 243 // "language - keyboard layout" pair is returned. |
| 274 { | 244 { |
| 275 InputMethodDescriptor desc = GetDesc("m17n:ar:kbd", "us", "ar", ""); | |
| 276 EXPECT_EQ(ASCIIToUTF16("Arabic - Standard input method"), | |
| 277 util_.GetInputMethodLongName(desc)); | |
| 278 } | |
| 279 { | |
| 280 InputMethodDescriptor desc = GetDesc("xkb:be::nld", "be", "nl", ""); | 245 InputMethodDescriptor desc = GetDesc("xkb:be::nld", "be", "nl", ""); |
| 281 EXPECT_EQ(ASCIIToUTF16("Dutch - Belgian"), | 246 EXPECT_EQ(ASCIIToUTF16("Dutch - Belgian"), |
| 282 util_.GetInputMethodLongName(desc)); | 247 util_.GetInputMethodLongName(desc)); |
| 283 } | 248 } |
| 284 { | 249 { |
| 285 InputMethodDescriptor desc = GetDesc("xkb:fr::fra", "fr", "fr", ""); | 250 InputMethodDescriptor desc = GetDesc("xkb:fr::fra", "fr", "fr", ""); |
| 286 EXPECT_EQ(ASCIIToUTF16("French - French"), | 251 EXPECT_EQ(ASCIIToUTF16("French - French"), |
| 287 util_.GetInputMethodLongName(desc)); | 252 util_.GetInputMethodLongName(desc)); |
| 288 } | 253 } |
| 289 { | 254 { |
| 290 InputMethodDescriptor desc = GetDesc("xkb:be::fra", "be", "fr", ""); | 255 InputMethodDescriptor desc = GetDesc("xkb:be::fra", "be", "fr", ""); |
| 291 EXPECT_EQ(ASCIIToUTF16("French - Belgian"), | 256 EXPECT_EQ(ASCIIToUTF16("French - Belgian"), |
| 292 util_.GetInputMethodLongName(desc)); | 257 util_.GetInputMethodLongName(desc)); |
| 293 } | 258 } |
| 294 { | 259 { |
| 295 InputMethodDescriptor desc = GetDesc("xkb:de::ger", "de", "de", ""); | 260 InputMethodDescriptor desc = GetDesc("xkb:de::ger", "de", "de", ""); |
| 296 EXPECT_EQ(ASCIIToUTF16("German - German"), | 261 EXPECT_EQ(ASCIIToUTF16("German - German"), |
| 297 util_.GetInputMethodLongName(desc)); | 262 util_.GetInputMethodLongName(desc)); |
| 298 } | 263 } |
| 299 { | 264 { |
| 300 InputMethodDescriptor desc = GetDesc("xkb:be::ger", "be", "de", ""); | 265 InputMethodDescriptor desc = GetDesc("xkb:be::ger", "be", "de", ""); |
| 301 EXPECT_EQ(ASCIIToUTF16("German - Belgian"), | 266 EXPECT_EQ(ASCIIToUTF16("German - Belgian"), |
| 302 util_.GetInputMethodLongName(desc)); | 267 util_.GetInputMethodLongName(desc)); |
| 303 } | 268 } |
| 304 { | |
| 305 InputMethodDescriptor desc = GetDesc("m17n:hi:itrans", "us", "hi", ""); | |
| 306 EXPECT_EQ(ASCIIToUTF16("Hindi - Standard input method"), | |
| 307 util_.GetInputMethodLongName(desc)); | |
| 308 } | |
| 309 | 269 |
| 310 { | 270 { |
| 311 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", ""); | 271 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", ""); |
| 312 // You can safely ignore the "Resouce ID is not found for: invalid-id" | 272 // You can safely ignore the "Resouce ID is not found for: invalid-id" |
| 313 // error. | 273 // error. |
| 314 EXPECT_EQ(ASCIIToUTF16("invalid-id"), | 274 EXPECT_EQ(ASCIIToUTF16("invalid-id"), |
| 315 util_.GetInputMethodLongName(desc)); | 275 util_.GetInputMethodLongName(desc)); |
| 316 } | 276 } |
| 317 } | 277 } |
| 318 | 278 |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 EXPECT_FALSE(display_name.empty()) | 463 EXPECT_FALSE(display_name.empty()) |
| 504 << "Invalid language code " << language_code; | 464 << "Invalid language code " << language_code; |
| 505 // On error, GetDisplayNameForLocale() returns the |language_code| as-is. | 465 // On error, GetDisplayNameForLocale() returns the |language_code| as-is. |
| 506 EXPECT_NE(language_code, base::UTF16ToUTF8(display_name)) | 466 EXPECT_NE(language_code, base::UTF16ToUTF8(display_name)) |
| 507 << "Invalid language code " << language_code; | 467 << "Invalid language code " << language_code; |
| 508 } | 468 } |
| 509 } | 469 } |
| 510 | 470 |
| 511 } // namespace input_method | 471 } // namespace input_method |
| 512 } // namespace chromeos | 472 } // namespace chromeos |
| OLD | NEW |