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" |
11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
12 #include "chromeos/ime/extension_ime_util.h" | 12 #include "chromeos/ime/extension_ime_util.h" |
13 #include "chromeos/ime/fake_input_method_delegate.h" | 13 #include "chromeos/ime/fake_input_method_delegate.h" |
14 #include "chromeos/ime/input_method_manager.h" | 14 #include "chromeos/ime/input_method_manager.h" |
15 #include "chromeos/ime/input_method_whitelist.h" | 15 #include "chromeos/ime/input_method_whitelist.h" |
16 #include "grit/generated_resources.h" | 16 #include "grit/generated_resources.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
18 #include "ui/base/l10n/l10n_util.h" | 18 #include "ui/base/l10n/l10n_util.h" |
19 | 19 |
20 using base::ASCIIToUTF16; | 20 using base::ASCIIToUTF16; |
21 | 21 |
22 namespace chromeos { | 22 namespace chromeos { |
23 | 23 |
24 extern const char* kExtensionImePrefix; | 24 extern const char* kExtensionImePrefix; |
25 | 25 |
26 namespace input_method { | 26 namespace input_method { |
27 | 27 |
28 namespace { | 28 namespace { |
29 | 29 |
30 const char pinyin_ime_id[] = | 30 const char pinyin_ime_id[] = "zh-t-i0-pinyin"; |
31 "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-t-i0-pinyin"; | 31 const char zhuyin_ime_id[] = "zh-hant-t-i0-und"; |
32 const char zhuyin_ime_id[] = | |
33 "_comp_ime_gjaehgfemfahhmlgpdfknkhdnemmolopzh-hant-t-i0-und"; | |
34 const char kKeyboardExtId[] = | |
35 #if defined(OFFICIAL_BUILD) | |
36 "habcdindjejkmepknlhkkloncjcpcnbf"; | |
37 #else | |
38 "jhffeifommiaekmbkkjlpmilogcfdohp"; | |
39 #endif | |
40 | 32 |
41 class TestableInputMethodUtil : public InputMethodUtil { | 33 class TestableInputMethodUtil : public InputMethodUtil { |
42 public: | 34 public: |
43 explicit TestableInputMethodUtil(InputMethodDelegate* delegate, | 35 explicit TestableInputMethodUtil(InputMethodDelegate* delegate, |
44 scoped_ptr<InputMethodDescriptors> methods) | 36 scoped_ptr<InputMethodDescriptors> methods) |
45 : InputMethodUtil(delegate, methods.Pass()) { | 37 : InputMethodUtil(delegate, methods.Pass()) { |
46 } | 38 } |
47 // Change access rights. | 39 // Change access rights. |
48 using InputMethodUtil::GetInputMethodIdsFromLanguageCodeInternal; | 40 using InputMethodUtil::GetInputMethodIdsFromLanguageCodeInternal; |
49 using InputMethodUtil::GetKeyboardLayoutName; | 41 using InputMethodUtil::GetKeyboardLayoutName; |
(...skipping 14 matching lines...) Expand all Loading... |
64 } | 56 } |
65 | 57 |
66 virtual void SetUp() OVERRIDE { | 58 virtual void SetUp() OVERRIDE { |
67 InputMethodDescriptors input_methods; | 59 InputMethodDescriptors input_methods; |
68 | 60 |
69 std::vector<std::string> layouts; | 61 std::vector<std::string> layouts; |
70 std::vector<std::string> languages; | 62 std::vector<std::string> languages; |
71 layouts.push_back("us"); | 63 layouts.push_back("us"); |
72 languages.push_back("zh-CN"); | 64 languages.push_back("zh-CN"); |
73 | 65 |
74 InputMethodDescriptor pinyin_ime(pinyin_ime_id, | 66 InputMethodDescriptor pinyin_ime(Id(pinyin_ime_id), |
75 "Pinyin input for testing", | 67 "Pinyin input for testing", |
76 "CN", | 68 "CN", |
77 layouts, | 69 layouts, |
78 languages, | 70 languages, |
79 false, | 71 false, |
80 GURL(""), | 72 GURL(""), |
81 GURL("")); | 73 GURL("")); |
82 input_methods.push_back(pinyin_ime); | 74 input_methods.push_back(pinyin_ime); |
83 | 75 |
84 languages.clear(); | 76 languages.clear(); |
85 languages.push_back("zh-TW"); | 77 languages.push_back("zh-TW"); |
86 InputMethodDescriptor zhuyin_ime(zhuyin_ime_id, | 78 InputMethodDescriptor zhuyin_ime(zhuyin_ime_id, |
87 "Zhuyin input for testing", | 79 "Zhuyin input for testing", |
88 "TW", | 80 "TW", |
89 layouts, | 81 layouts, |
90 languages, | 82 languages, |
91 false, | 83 false, |
92 GURL(""), | 84 GURL(""), |
93 GURL("")); | 85 GURL("")); |
94 input_methods.push_back(zhuyin_ime); | 86 input_methods.push_back(zhuyin_ime); |
95 | 87 |
96 util_.SetComponentExtensions(input_methods); | 88 util_.SetComponentExtensions(input_methods); |
97 } | 89 } |
98 | 90 |
99 std::string Id(const std::string& id) { | 91 std::string Id(const std::string& id) { |
100 return extension_ime_util::GetInputMethodIDByKeyboardLayout(id); | 92 return extension_ime_util::GetInputMethodIDByEngineID(id); |
101 } | 93 } |
102 | 94 |
103 InputMethodDescriptor GetDesc(const std::string& id, | 95 InputMethodDescriptor GetDesc(const std::string& id, |
104 const std::string& raw_layout, | 96 const std::string& raw_layout, |
105 const std::string& language_code, | 97 const std::string& language_code, |
106 const std::string& indicator) { | 98 const std::string& indicator) { |
107 std::vector<std::string> layouts; | 99 std::vector<std::string> layouts; |
108 layouts.push_back(raw_layout); | 100 layouts.push_back(raw_layout); |
109 std::vector<std::string> languages; | 101 std::vector<std::string> languages; |
110 languages.push_back(language_code); | 102 languages.push_back(language_code); |
(...skipping 12 matching lines...) Expand all Loading... |
123 } | 115 } |
124 | 116 |
125 FakeInputMethodDelegate delegate_; | 117 FakeInputMethodDelegate delegate_; |
126 InputMethodWhitelist whitelist_; | 118 InputMethodWhitelist whitelist_; |
127 TestableInputMethodUtil util_; | 119 TestableInputMethodUtil util_; |
128 }; | 120 }; |
129 | 121 |
130 TEST_F(InputMethodUtilTest, GetInputMethodShortNameTest) { | 122 TEST_F(InputMethodUtilTest, GetInputMethodShortNameTest) { |
131 // Test normal cases. Two-letter language code should be returned. | 123 // Test normal cases. Two-letter language code should be returned. |
132 { | 124 { |
133 InputMethodDescriptor desc = GetDesc("m17n:fa:isiri", // input method id | 125 InputMethodDescriptor desc = GetDesc("vkd_fa", // input method id |
134 "us", // keyboard layout name | 126 "us", // keyboard layout name |
135 "fa", // language name | 127 "fa", // language name |
136 ""); // indicator | 128 ""); // indicator |
137 EXPECT_EQ(ASCIIToUTF16("FA"), util_.GetInputMethodShortName(desc)); | 129 EXPECT_EQ(ASCIIToUTF16("FA"), util_.GetInputMethodShortName(desc)); |
138 } | 130 } |
139 { | 131 { |
140 InputMethodDescriptor desc = GetDesc("mozc-hangul", "us", "ko", ""); | 132 InputMethodDescriptor desc = GetDesc("hangul_2set", "us", "ko", ""); |
141 EXPECT_EQ(base::UTF8ToUTF16("\xed\x95\x9c"), | 133 EXPECT_EQ(base::UTF8ToUTF16("\xed\x95\x9c"), |
142 util_.GetInputMethodShortName(desc)); | 134 util_.GetInputMethodShortName(desc)); |
143 } | 135 } |
144 { | 136 { |
145 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", ""); | 137 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", ""); |
146 // Upper-case string of the unknown language code, "xx", should be returned. | 138 // Upper-case string of the unknown language code, "xx", should be returned. |
147 EXPECT_EQ(ASCIIToUTF16("XX"), util_.GetInputMethodShortName(desc)); | 139 EXPECT_EQ(ASCIIToUTF16("XX"), util_.GetInputMethodShortName(desc)); |
148 } | 140 } |
149 | 141 |
150 // Test special cases. | 142 // Test special cases. |
(...skipping 27 matching lines...) Expand all Loading... |
178 GetDesc("xkb:es:cat:cat", "es(cat)", "ca", "CAS"); | 170 GetDesc("xkb:es:cat:cat", "es(cat)", "ca", "CAS"); |
179 EXPECT_EQ(ASCIIToUTF16("CAS"), util_.GetInputMethodShortName(desc)); | 171 EXPECT_EQ(ASCIIToUTF16("CAS"), util_.GetInputMethodShortName(desc)); |
180 } | 172 } |
181 { | 173 { |
182 InputMethodDescriptor desc = | 174 InputMethodDescriptor desc = |
183 GetDesc(pinyin_ime_id, "us", "zh-CN", ""); | 175 GetDesc(pinyin_ime_id, "us", "zh-CN", ""); |
184 EXPECT_EQ(base::UTF8ToUTF16("\xe6\x8b\xbc"), | 176 EXPECT_EQ(base::UTF8ToUTF16("\xe6\x8b\xbc"), |
185 util_.GetInputMethodShortName(desc)); | 177 util_.GetInputMethodShortName(desc)); |
186 } | 178 } |
187 { | 179 { |
188 InputMethodDescriptor desc = | 180 InputMethodDescriptor desc = GetDesc(zhuyin_ime_id, "us", "zh-TW", ""); |
189 GetDesc(zhuyin_ime_id, "us", "zh-TW", ""); | |
190 EXPECT_EQ(base::UTF8ToUTF16("\xE6\xB3\xA8"), | 181 EXPECT_EQ(base::UTF8ToUTF16("\xE6\xB3\xA8"), |
191 util_.GetInputMethodShortName(desc)); | 182 util_.GetInputMethodShortName(desc)); |
192 } | 183 } |
193 } | 184 } |
194 | 185 |
195 TEST_F(InputMethodUtilTest, GetInputMethodMediumNameTest) { | 186 TEST_F(InputMethodUtilTest, GetInputMethodMediumNameTest) { |
196 { | 187 { |
197 // input methods with medium name equal to short name | 188 // input methods with medium name equal to short name |
198 const char * input_method_id[] = { | 189 const char * input_method_id[] = { |
199 "xkb:us:altgr-intl:eng", | 190 "xkb:us:altgr-intl:eng", |
200 "xkb:us:dvorak:eng", | 191 "xkb:us:dvorak:eng", |
201 "xkb:us:intl:eng", | 192 "xkb:us:intl:eng", |
202 "xkb:us:colemak:eng", | 193 "xkb:us:colemak:eng", |
203 "xkb:de:neo:ger", | 194 "xkb:de:neo:ger", |
204 "xkb:es:cat:cat", | 195 "xkb:es:cat:cat", |
205 "xkb:gb:dvorak:eng", | 196 "xkb:gb:dvorak:eng", |
206 }; | 197 }; |
207 const int len = ARRAYSIZE_UNSAFE(input_method_id); | 198 const int len = ARRAYSIZE_UNSAFE(input_method_id); |
208 for (int i=0; i<len; ++i) { | 199 for (int i=0; i<len; ++i) { |
209 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", ""); | 200 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", ""); |
210 base::string16 medium_name = util_.GetInputMethodMediumName(desc); | 201 base::string16 medium_name = util_.GetInputMethodMediumName(desc); |
211 base::string16 short_name = util_.GetInputMethodShortName(desc); | 202 base::string16 short_name = util_.GetInputMethodShortName(desc); |
212 EXPECT_EQ(medium_name,short_name); | 203 EXPECT_EQ(medium_name,short_name); |
213 } | 204 } |
214 } | 205 } |
215 { | 206 { |
216 // input methods with medium name not equal to short name | 207 // input methods with medium name not equal to short name |
217 const char * input_method_id[] = { | 208 const char * input_method_id[] = { |
218 "m17n:zh:cangjie", | |
219 "m17n:zh:quick", | |
220 pinyin_ime_id, | 209 pinyin_ime_id, |
221 zhuyin_ime_id, | 210 zhuyin_ime_id, |
222 "mozc-hangul", | |
223 pinyin_ime_id, | |
224 pinyin_ime_id, | |
225 }; | 211 }; |
226 const int len = ARRAYSIZE_UNSAFE(input_method_id); | 212 const int len = ARRAYSIZE_UNSAFE(input_method_id); |
227 for (int i=0; i<len; ++i) { | 213 for (int i=0; i<len; ++i) { |
228 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", ""); | 214 InputMethodDescriptor desc = GetDesc(input_method_id[i], "", "", ""); |
229 base::string16 medium_name = util_.GetInputMethodMediumName(desc); | 215 base::string16 medium_name = util_.GetInputMethodMediumName(desc); |
230 base::string16 short_name = util_.GetInputMethodShortName(desc); | 216 base::string16 short_name = util_.GetInputMethodShortName(desc); |
231 EXPECT_NE(medium_name,short_name); | 217 EXPECT_NE(medium_name,short_name); |
232 } | 218 } |
233 } | 219 } |
234 } | 220 } |
235 | 221 |
236 TEST_F(InputMethodUtilTest, GetInputMethodLongNameTest) { | 222 TEST_F(InputMethodUtilTest, GetInputMethodLongNameTest) { |
237 // For most languages input method or keyboard layout name is returned. | 223 // For most languages input method or keyboard layout name is returned. |
238 // See below for exceptions. | 224 // See below for exceptions. |
239 { | 225 { |
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", ""); | 226 InputMethodDescriptor desc = GetDesc("xkb:jp::jpn", "jp", "ja", ""); |
256 EXPECT_EQ(ASCIIToUTF16("Japanese"), | 227 EXPECT_EQ(ASCIIToUTF16("Japanese"), |
257 util_.GetInputMethodLongName(desc)); | 228 util_.GetInputMethodLongName(desc)); |
258 } | 229 } |
259 { | 230 { |
260 InputMethodDescriptor desc = | 231 InputMethodDescriptor desc = |
261 GetDesc("xkb:us:dvorak:eng", "us(dvorak)", "en-US", ""); | 232 GetDesc("xkb:us:dvorak:eng", "us(dvorak)", "en-US", ""); |
262 EXPECT_EQ(ASCIIToUTF16("US Dvorak"), | 233 EXPECT_EQ(ASCIIToUTF16("US Dvorak"), |
263 util_.GetInputMethodLongName(desc)); | 234 util_.GetInputMethodLongName(desc)); |
264 } | 235 } |
265 { | 236 { |
266 InputMethodDescriptor desc = | 237 InputMethodDescriptor desc = |
267 GetDesc("xkb:gb:dvorak:eng", "gb(dvorak)", "en-US", ""); | 238 GetDesc("xkb:gb:dvorak:eng", "gb(dvorak)", "en-US", ""); |
268 EXPECT_EQ(ASCIIToUTF16("UK Dvorak"), | 239 EXPECT_EQ(ASCIIToUTF16("UK Dvorak"), |
269 util_.GetInputMethodLongName(desc)); | 240 util_.GetInputMethodLongName(desc)); |
270 } | 241 } |
271 | 242 |
272 // For Arabic, Dutch, French, German and Hindi, | 243 // For Dutch, French, German and Hindi, |
273 // "language - keyboard layout" pair is returned. | 244 // "language - keyboard layout" pair is returned. |
274 { | 245 { |
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", ""); | 246 InputMethodDescriptor desc = GetDesc("xkb:be::nld", "be", "nl", ""); |
281 EXPECT_EQ(ASCIIToUTF16("Dutch - Belgian"), | 247 EXPECT_EQ(ASCIIToUTF16("Dutch - Belgian"), |
282 util_.GetInputMethodLongName(desc)); | 248 util_.GetInputMethodLongName(desc)); |
283 } | 249 } |
284 { | 250 { |
285 InputMethodDescriptor desc = GetDesc("xkb:fr::fra", "fr", "fr", ""); | 251 InputMethodDescriptor desc = GetDesc("xkb:fr::fra", "fr", "fr", ""); |
286 EXPECT_EQ(ASCIIToUTF16("French - French"), | 252 EXPECT_EQ(ASCIIToUTF16("French - French"), |
287 util_.GetInputMethodLongName(desc)); | 253 util_.GetInputMethodLongName(desc)); |
288 } | 254 } |
289 { | 255 { |
290 InputMethodDescriptor desc = GetDesc("xkb:be::fra", "be", "fr", ""); | 256 InputMethodDescriptor desc = GetDesc("xkb:be::fra", "be", "fr", ""); |
291 EXPECT_EQ(ASCIIToUTF16("French - Belgian"), | 257 EXPECT_EQ(ASCIIToUTF16("French - Belgian"), |
292 util_.GetInputMethodLongName(desc)); | 258 util_.GetInputMethodLongName(desc)); |
293 } | 259 } |
294 { | 260 { |
295 InputMethodDescriptor desc = GetDesc("xkb:de::ger", "de", "de", ""); | 261 InputMethodDescriptor desc = GetDesc("xkb:de::ger", "de", "de", ""); |
296 EXPECT_EQ(ASCIIToUTF16("German - German"), | 262 EXPECT_EQ(ASCIIToUTF16("German - German"), |
297 util_.GetInputMethodLongName(desc)); | 263 util_.GetInputMethodLongName(desc)); |
298 } | 264 } |
299 { | 265 { |
300 InputMethodDescriptor desc = GetDesc("xkb:be::ger", "be", "de", ""); | 266 InputMethodDescriptor desc = GetDesc("xkb:be::ger", "be", "de", ""); |
301 EXPECT_EQ(ASCIIToUTF16("German - Belgian"), | 267 EXPECT_EQ(ASCIIToUTF16("German - Belgian"), |
302 util_.GetInputMethodLongName(desc)); | 268 util_.GetInputMethodLongName(desc)); |
303 } | 269 } |
304 { | |
305 InputMethodDescriptor desc = GetDesc("m17n:hi:itrans", "us", "hi", ""); | |
306 EXPECT_EQ(ASCIIToUTF16("Hindi - Standard input method"), | |
307 util_.GetInputMethodLongName(desc)); | |
308 } | |
309 | 270 |
310 { | 271 { |
311 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", ""); | 272 InputMethodDescriptor desc = GetDesc("invalid-id", "us", "xx", ""); |
312 // You can safely ignore the "Resouce ID is not found for: invalid-id" | 273 // You can safely ignore the "Resouce ID is not found for: invalid-id" |
313 // error. | 274 // error. |
314 EXPECT_EQ(ASCIIToUTF16("invalid-id"), | 275 EXPECT_EQ(ASCIIToUTF16("invalid-id"), |
315 util_.GetInputMethodLongName(desc)); | 276 util_.GetInputMethodLongName(desc)); |
316 } | 277 } |
317 } | 278 } |
318 | 279 |
319 TEST_F(InputMethodUtilTest, TestIsValidInputMethodId) { | 280 TEST_F(InputMethodUtilTest, TestIsValidInputMethodId) { |
320 EXPECT_TRUE(util_.IsValidInputMethodId(Id("xkb:us:colemak:eng"))); | 281 EXPECT_TRUE(util_.IsValidInputMethodId(Id("xkb:us:colemak:eng"))); |
321 EXPECT_TRUE(util_.IsValidInputMethodId(pinyin_ime_id)); | 282 EXPECT_TRUE(util_.IsValidInputMethodId(Id(pinyin_ime_id))); |
322 EXPECT_FALSE(util_.IsValidInputMethodId("unsupported-input-method")); | 283 EXPECT_FALSE(util_.IsValidInputMethodId("unsupported-input-method")); |
323 } | 284 } |
324 | 285 |
325 TEST_F(InputMethodUtilTest, TestIsKeyboardLayout) { | 286 TEST_F(InputMethodUtilTest, TestIsKeyboardLayout) { |
326 EXPECT_TRUE(InputMethodUtil::IsKeyboardLayout("xkb:us::eng")); | 287 EXPECT_TRUE(InputMethodUtil::IsKeyboardLayout("xkb:us::eng")); |
327 EXPECT_FALSE(InputMethodUtil::IsKeyboardLayout(pinyin_ime_id)); | 288 EXPECT_FALSE(InputMethodUtil::IsKeyboardLayout(Id(pinyin_ime_id))); |
328 } | 289 } |
329 | 290 |
330 TEST_F(InputMethodUtilTest, TestGetKeyboardLayoutName) { | 291 TEST_F(InputMethodUtilTest, TestGetKeyboardLayoutName) { |
331 // Unsupported case. | 292 // Unsupported case. |
332 EXPECT_EQ("", util_.GetKeyboardLayoutName("UNSUPPORTED_ID")); | 293 EXPECT_EQ("", util_.GetKeyboardLayoutName("UNSUPPORTED_ID")); |
333 | 294 |
334 // Supported cases (samples). | 295 // Supported cases (samples). |
335 EXPECT_EQ("us", util_.GetKeyboardLayoutName(pinyin_ime_id)); | 296 EXPECT_EQ("us", util_.GetKeyboardLayoutName(Id(pinyin_ime_id))); |
336 EXPECT_EQ("es", util_.GetKeyboardLayoutName(Id("xkb:es::spa"))); | 297 EXPECT_EQ("es", util_.GetKeyboardLayoutName(Id("xkb:es::spa"))); |
337 EXPECT_EQ("es(cat)", util_.GetKeyboardLayoutName(Id("xkb:es:cat:cat"))); | 298 EXPECT_EQ("es(cat)", util_.GetKeyboardLayoutName(Id("xkb:es:cat:cat"))); |
338 EXPECT_EQ("gb(extd)", util_.GetKeyboardLayoutName(Id("xkb:gb:extd:eng"))); | 299 EXPECT_EQ("gb(extd)", util_.GetKeyboardLayoutName(Id("xkb:gb:extd:eng"))); |
339 EXPECT_EQ("us", util_.GetKeyboardLayoutName(Id("xkb:us::eng"))); | 300 EXPECT_EQ("us", util_.GetKeyboardLayoutName(Id("xkb:us::eng"))); |
340 EXPECT_EQ("us(dvorak)", util_.GetKeyboardLayoutName(Id("xkb:us:dvorak:eng"))); | 301 EXPECT_EQ("us(dvorak)", util_.GetKeyboardLayoutName(Id("xkb:us:dvorak:eng"))); |
341 EXPECT_EQ("us(colemak)", | 302 EXPECT_EQ("us(colemak)", |
342 util_.GetKeyboardLayoutName(Id("xkb:us:colemak:eng"))); | 303 util_.GetKeyboardLayoutName(Id("xkb:us:colemak:eng"))); |
343 EXPECT_EQ("de(neo)", util_.GetKeyboardLayoutName(Id("xkb:de:neo:ger"))); | 304 EXPECT_EQ("de(neo)", util_.GetKeyboardLayoutName(Id("xkb:de:neo:ger"))); |
344 } | 305 } |
345 | 306 |
346 TEST_F(InputMethodUtilTest, TestGetLanguageCodeFromInputMethodId) { | 307 TEST_F(InputMethodUtilTest, TestGetLanguageCodeFromInputMethodId) { |
347 // Make sure that the -CN is added properly. | 308 // Make sure that the -CN is added properly. |
348 EXPECT_EQ("zh-CN", util_.GetLanguageCodeFromInputMethodId(pinyin_ime_id)); | 309 EXPECT_EQ("zh-CN", util_.GetLanguageCodeFromInputMethodId(Id(pinyin_ime_id))); |
349 } | 310 } |
350 | 311 |
351 TEST_F(InputMethodUtilTest, TestGetInputMethodDisplayNameFromId) { | 312 TEST_F(InputMethodUtilTest, TestGetInputMethodDisplayNameFromId) { |
352 EXPECT_EQ("US", | 313 EXPECT_EQ("US", |
353 util_.GetInputMethodDisplayNameFromId("xkb:us::eng")); | 314 util_.GetInputMethodDisplayNameFromId("xkb:us::eng")); |
354 EXPECT_EQ("", util_.GetInputMethodDisplayNameFromId("nonexistent")); | 315 EXPECT_EQ("", util_.GetInputMethodDisplayNameFromId("nonexistent")); |
355 } | 316 } |
356 | 317 |
357 TEST_F(InputMethodUtilTest, TestGetInputMethodDescriptorFromId) { | 318 TEST_F(InputMethodUtilTest, TestGetInputMethodDescriptorFromId) { |
358 EXPECT_EQ(NULL, util_.GetInputMethodDescriptorFromId("non_existent")); | 319 EXPECT_EQ(NULL, util_.GetInputMethodDescriptorFromId("non_existent")); |
359 | 320 |
360 const InputMethodDescriptor* descriptor = | 321 const InputMethodDescriptor* descriptor = |
361 util_.GetInputMethodDescriptorFromId(pinyin_ime_id); | 322 util_.GetInputMethodDescriptorFromId(Id(pinyin_ime_id)); |
362 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. | 323 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. |
363 EXPECT_EQ(pinyin_ime_id, descriptor->id()); | 324 EXPECT_EQ(Id(pinyin_ime_id), descriptor->id()); |
364 EXPECT_EQ("us", descriptor->GetPreferredKeyboardLayout()); | 325 EXPECT_EQ("us", descriptor->GetPreferredKeyboardLayout()); |
365 // This used to be "zh" but now we have "zh-CN" in input_methods.h, | 326 // This used to be "zh" but now we have "zh-CN" in input_methods.h, |
366 // hence this should be zh-CN now. | 327 // hence this should be zh-CN now. |
367 ASSERT_TRUE(!descriptor->language_codes().empty()); | 328 ASSERT_TRUE(!descriptor->language_codes().empty()); |
368 EXPECT_EQ("zh-CN", descriptor->language_codes().at(0)); | 329 EXPECT_EQ("zh-CN", descriptor->language_codes().at(0)); |
369 } | 330 } |
370 | 331 |
371 TEST_F(InputMethodUtilTest, TestGetInputMethodIdsForLanguageCode) { | 332 TEST_F(InputMethodUtilTest, TestGetInputMethodIdsForLanguageCode) { |
372 std::multimap<std::string, std::string> language_code_to_ids_map; | 333 std::multimap<std::string, std::string> language_code_to_ids_map; |
373 language_code_to_ids_map.insert(std::make_pair("ja", pinyin_ime_id)); | 334 language_code_to_ids_map.insert(std::make_pair("ja", pinyin_ime_id)); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 | 373 |
413 // US keyboard + Chinese UI = US keyboard + Pinyin IME. | 374 // US keyboard + Chinese UI = US keyboard + Pinyin IME. |
414 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_Zh) { | 375 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_Zh) { |
415 const InputMethodDescriptor* descriptor = | 376 const InputMethodDescriptor* descriptor = |
416 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. | 377 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. |
417 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. | 378 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. |
418 std::vector<std::string> input_method_ids; | 379 std::vector<std::string> input_method_ids; |
419 util_.GetFirstLoginInputMethodIds("zh-CN", *descriptor, &input_method_ids); | 380 util_.GetFirstLoginInputMethodIds("zh-CN", *descriptor, &input_method_ids); |
420 ASSERT_EQ(2U, input_method_ids.size()); | 381 ASSERT_EQ(2U, input_method_ids.size()); |
421 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); | 382 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); |
422 EXPECT_EQ(pinyin_ime_id, input_method_ids[1]); // Pinyin for US keybaord. | 383 EXPECT_EQ(Id(pinyin_ime_id), input_method_ids[1]); // Pinyin for US keybaord. |
423 } | 384 } |
424 | 385 |
425 // US keyboard + Russian UI = US keyboard + Russsian keyboard | 386 // US keyboard + Russian UI = US keyboard + Russsian keyboard |
426 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_Ru) { | 387 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_Ru) { |
427 const InputMethodDescriptor* descriptor = | 388 const InputMethodDescriptor* descriptor = |
428 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. | 389 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. |
429 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. | 390 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. |
430 std::vector<std::string> input_method_ids; | 391 std::vector<std::string> input_method_ids; |
431 util_.GetFirstLoginInputMethodIds("ru", *descriptor, &input_method_ids); | 392 util_.GetFirstLoginInputMethodIds("ru", *descriptor, &input_method_ids); |
432 ASSERT_EQ(2U, input_method_ids.size()); | 393 ASSERT_EQ(2U, input_method_ids.size()); |
433 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); | 394 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); |
434 EXPECT_EQ(Id("xkb:ru::rus"), input_method_ids[1]); // Russian keyboard. | 395 EXPECT_EQ(Id("xkb:ru::rus"), input_method_ids[1]); // Russian keyboard. |
435 } | 396 } |
436 | 397 |
437 // US keyboard + Traditional Chinese = US keyboard + chewing. | 398 // US keyboard + Traditional Chinese = US keyboard + chewing. |
438 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_ZhTw) { | 399 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_ZhTw) { |
439 const InputMethodDescriptor* descriptor = | 400 const InputMethodDescriptor* descriptor = |
440 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. | 401 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. |
441 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. | 402 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. |
442 std::vector<std::string> input_method_ids; | 403 std::vector<std::string> input_method_ids; |
443 util_.GetFirstLoginInputMethodIds("zh-TW", *descriptor, &input_method_ids); | 404 util_.GetFirstLoginInputMethodIds("zh-TW", *descriptor, &input_method_ids); |
444 ASSERT_EQ(2U, input_method_ids.size()); | 405 ASSERT_EQ(2U, input_method_ids.size()); |
445 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); | 406 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); |
446 EXPECT_EQ(zhuyin_ime_id, input_method_ids[1]); // Chewing. | 407 EXPECT_EQ(Id(zhuyin_ime_id), input_method_ids[1]); // Chewing. |
447 } | 408 } |
448 | 409 |
449 // US keyboard + Thai = US keyboard + kesmanee. | 410 // US keyboard + Thai = US keyboard + kesmanee. |
450 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_Th) { | 411 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_Th) { |
451 const InputMethodDescriptor* descriptor = | 412 const InputMethodDescriptor* descriptor = |
452 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. | 413 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. |
453 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. | 414 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. |
454 std::vector<std::string> input_method_ids; | 415 std::vector<std::string> input_method_ids; |
455 util_.GetFirstLoginInputMethodIds("th", *descriptor, &input_method_ids); | 416 util_.GetFirstLoginInputMethodIds("th", *descriptor, &input_method_ids); |
456 ASSERT_EQ(2U, input_method_ids.size()); | 417 ASSERT_EQ(2U, input_method_ids.size()); |
457 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); | 418 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); |
458 EXPECT_EQ(std::string("_comp_ime_") + kKeyboardExtId + "vkd_th", | 419 EXPECT_EQ(Id("vkd_th"), input_method_ids[1]); // Kesmanee. |
459 input_method_ids[1]); // Kesmanee. | |
460 } | 420 } |
461 | 421 |
462 // US keyboard + Vietnamese = US keyboard + TCVN6064. | 422 // US keyboard + Vietnamese = US keyboard + TCVN6064. |
463 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_Vi) { | 423 TEST_F(InputMethodUtilTest, TestGetFirstLoginInputMethodIds_Us_And_Vi) { |
464 const InputMethodDescriptor* descriptor = | 424 const InputMethodDescriptor* descriptor = |
465 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. | 425 util_.GetInputMethodDescriptorFromId(Id("xkb:us::eng")); // US keyboard. |
466 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. | 426 ASSERT_TRUE(NULL != descriptor); // ASSERT_NE doesn't compile. |
467 std::vector<std::string> input_method_ids; | 427 std::vector<std::string> input_method_ids; |
468 util_.GetFirstLoginInputMethodIds("vi", *descriptor, &input_method_ids); | 428 util_.GetFirstLoginInputMethodIds("vi", *descriptor, &input_method_ids); |
469 ASSERT_EQ(2U, input_method_ids.size()); | 429 ASSERT_EQ(2U, input_method_ids.size()); |
470 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); | 430 EXPECT_EQ(Id("xkb:us::eng"), input_method_ids[0]); |
471 EXPECT_EQ(std::string("_comp_ime_") + kKeyboardExtId + "vkd_vi_tcvn", | 431 EXPECT_EQ(Id("vkd_vi_tcvn"), input_method_ids[1]); // TCVN6064. |
472 input_method_ids[1]); // TCVN6064. | |
473 } | 432 } |
474 | 433 |
475 TEST_F(InputMethodUtilTest, TestGetLanguageCodesFromInputMethodIds) { | 434 TEST_F(InputMethodUtilTest, TestGetLanguageCodesFromInputMethodIds) { |
476 std::vector<std::string> input_method_ids; | 435 std::vector<std::string> input_method_ids; |
477 input_method_ids.push_back(Id("xkb:us::eng")); // English US. | 436 input_method_ids.push_back(Id("xkb:us::eng")); // English US. |
478 input_method_ids.push_back(Id("xkb:us:dvorak:eng")); // English US Dvorak. | 437 input_method_ids.push_back(Id("xkb:us:dvorak:eng")); // English US Dvorak. |
479 input_method_ids.push_back(pinyin_ime_id); // Pinyin | 438 input_method_ids.push_back(Id(pinyin_ime_id)); // Pinyin |
480 input_method_ids.push_back(Id("xkb:fr::fra")); // French France. | 439 input_method_ids.push_back(Id("xkb:fr::fra")); // French France. |
481 std::vector<std::string> language_codes; | 440 std::vector<std::string> language_codes; |
482 util_.GetLanguageCodesFromInputMethodIds(input_method_ids, &language_codes); | 441 util_.GetLanguageCodesFromInputMethodIds(input_method_ids, &language_codes); |
483 ASSERT_EQ(3U, language_codes.size()); | 442 ASSERT_EQ(3U, language_codes.size()); |
484 EXPECT_EQ("en-US", language_codes[0]); | 443 EXPECT_EQ("en-US", language_codes[0]); |
485 EXPECT_EQ("zh-CN", language_codes[1]); | 444 EXPECT_EQ("zh-CN", language_codes[1]); |
486 EXPECT_EQ("fr", language_codes[2]); | 445 EXPECT_EQ("fr", language_codes[2]); |
487 } | 446 } |
488 | 447 |
489 // Test all supported descriptors to detect a typo in input_methods.txt. | 448 // Test all supported descriptors to detect a typo in input_methods.txt. |
(...skipping 13 matching lines...) Expand all Loading... |
503 EXPECT_FALSE(display_name.empty()) | 462 EXPECT_FALSE(display_name.empty()) |
504 << "Invalid language code " << language_code; | 463 << "Invalid language code " << language_code; |
505 // On error, GetDisplayNameForLocale() returns the |language_code| as-is. | 464 // On error, GetDisplayNameForLocale() returns the |language_code| as-is. |
506 EXPECT_NE(language_code, base::UTF16ToUTF8(display_name)) | 465 EXPECT_NE(language_code, base::UTF16ToUTF8(display_name)) |
507 << "Invalid language code " << language_code; | 466 << "Invalid language code " << language_code; |
508 } | 467 } |
509 } | 468 } |
510 | 469 |
511 } // namespace input_method | 470 } // namespace input_method |
512 } // namespace chromeos | 471 } // namespace chromeos |
OLD | NEW |