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

Side by Side Diff: chrome/browser/ui/webui/options/chromeos/virtual_keyboard_manager_handler_unittest.cc

Issue 9814030: get rid of old options pages (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more fixes Created 8 years, 9 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/options/chromeos/virtual_keyboard_manager_hand ler.h"
6
7 #include <map>
8 #include <set>
9 #include <string>
10
11 #include "base/logging.h"
12 #include "base/values.h"
13 #include "chrome/browser/chromeos/input_method/virtual_keyboard_selector.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15
16 namespace {
17
18 typedef std::multimap<
19 std::string, const chromeos::input_method::VirtualKeyboard*> LayoutToKeyboard;
20 typedef std::map<
21 GURL, const chromeos::input_method::VirtualKeyboard*> UrlToKeyboard;
22
23 template <size_t L>
24 std::set<std::string> CreateLayoutSet(const char* (&layouts)[L]) {
25 return std::set<std::string>(layouts, layouts + L);
26 }
27
28 } // namespace
29
30 namespace chromeos {
31
32 class Testee : public VirtualKeyboardManagerHandler {
33 public:
34 // Change access rights.
35 using VirtualKeyboardManagerHandler::ValidateUrl;
36 using VirtualKeyboardManagerHandler::CreateVirtualKeyboardList;
37 };
38
39 TEST(VirtualKeyboardManagerHandler, TestValidateUrl) {
40 static const char* layouts1[] = { "a", "b" };
41 static const char* layouts2[] = { "b" };
42 input_method::VirtualKeyboard virtual_keyboard_1(
43 GURL("http://url1/"), "name 1", CreateLayoutSet(layouts1), true);
44 input_method::VirtualKeyboard virtual_keyboard_2(
45 GURL("http://url2/"), "name 2", CreateLayoutSet(layouts2), true);
46
47 input_method::VirtualKeyboardSelector selector;
48 ASSERT_TRUE(selector.AddVirtualKeyboard(
49 virtual_keyboard_1.url(),
50 virtual_keyboard_1.name(),
51 virtual_keyboard_1.supported_layouts(),
52 virtual_keyboard_1.is_system()));
53 ASSERT_TRUE(selector.AddVirtualKeyboard(
54 virtual_keyboard_2.url(),
55 virtual_keyboard_2.name(),
56 virtual_keyboard_2.supported_layouts(),
57 virtual_keyboard_2.is_system()));
58
59 const UrlToKeyboard& url_to_keyboard = selector.url_to_keyboard();
60 ASSERT_EQ(2U, url_to_keyboard.size());
61
62 EXPECT_TRUE(Testee::ValidateUrl(url_to_keyboard, "a", "http://url1/"));
63 EXPECT_TRUE(Testee::ValidateUrl(url_to_keyboard, "b", "http://url1/"));
64 EXPECT_TRUE(Testee::ValidateUrl(url_to_keyboard, "b", "http://url2/"));
65
66 EXPECT_FALSE(Testee::ValidateUrl(url_to_keyboard, "a", "http://url3/"));
67 EXPECT_FALSE(Testee::ValidateUrl(url_to_keyboard, "b", "http://url3/"));
68 EXPECT_FALSE(Testee::ValidateUrl(url_to_keyboard, "c", "http://url1/"));
69 EXPECT_FALSE(Testee::ValidateUrl(url_to_keyboard, "c", "http://url2/"));
70 }
71
72 TEST(VirtualKeyboardManagerHandler, TestSingleKeyboard) {
73 static const char* layouts[] = { "a", "b" };
74 input_method::VirtualKeyboard virtual_keyboard_1(
75 GURL("http://url1/"), "name 1", CreateLayoutSet(layouts), true);
76
77 input_method::VirtualKeyboardSelector selector;
78 ASSERT_TRUE(selector.AddVirtualKeyboard(
79 virtual_keyboard_1.url(),
80 virtual_keyboard_1.name(),
81 virtual_keyboard_1.supported_layouts(),
82 virtual_keyboard_1.is_system()));
83
84 const LayoutToKeyboard& layout_to_keyboard = selector.layout_to_keyboard();
85 ASSERT_EQ(arraysize(layouts), layout_to_keyboard.size());
86 const UrlToKeyboard& url_to_keyboard = selector.url_to_keyboard();
87 ASSERT_EQ(1U, url_to_keyboard.size());
88
89 scoped_ptr<ListValue> keyboards(Testee::CreateVirtualKeyboardList(
90 layout_to_keyboard, url_to_keyboard, NULL));
91 ASSERT_TRUE(keyboards.get());
92 ASSERT_EQ(arraysize(layouts), keyboards->GetSize());
93
94 DictionaryValue* dictionary_value;
95 std::string string_value;
96 ListValue* list_value;
97
98 // Check the first element (for the layout "a").
99 ASSERT_TRUE(keyboards->GetDictionary(0, &dictionary_value));
100 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
101 EXPECT_EQ("a", string_value);
102 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
103 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
104 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
105 ASSERT_EQ(1U, list_value->GetSize());
106 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
107 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
108 EXPECT_EQ("http://url1/", string_value);
109 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
110 EXPECT_EQ("name 1", string_value);
111
112 // Check the second element (for the layout "b").
113 ASSERT_TRUE(keyboards->GetDictionary(1, &dictionary_value));
114 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
115 EXPECT_EQ("b", string_value);
116 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
117 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
118 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
119 ASSERT_EQ(1U, list_value->GetSize());
120 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
121 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
122 EXPECT_EQ("http://url1/", string_value);
123 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
124 EXPECT_EQ("name 1", string_value);
125 }
126
127 TEST(VirtualKeyboardManagerHandler, TestSingleKeyboardWithPref) {
128 static const char* layouts[] = { "a", "b" };
129 input_method::VirtualKeyboard virtual_keyboard_1(
130 GURL("http://url1/"), "name 1", CreateLayoutSet(layouts), true);
131
132 input_method::VirtualKeyboardSelector selector;
133 ASSERT_TRUE(selector.AddVirtualKeyboard(
134 virtual_keyboard_1.url(),
135 virtual_keyboard_1.name(),
136 virtual_keyboard_1.supported_layouts(),
137 virtual_keyboard_1.is_system()));
138
139 const LayoutToKeyboard& layout_to_keyboard = selector.layout_to_keyboard();
140 ASSERT_EQ(arraysize(layouts), layout_to_keyboard.size());
141 const UrlToKeyboard& url_to_keyboard = selector.url_to_keyboard();
142 ASSERT_EQ(1U, url_to_keyboard.size());
143
144 // create pref object.
145 scoped_ptr<DictionaryValue> pref(new DictionaryValue);
146 pref->SetString("b", "http://url1/");
147
148 scoped_ptr<ListValue> keyboards(Testee::CreateVirtualKeyboardList(
149 layout_to_keyboard, url_to_keyboard, pref.get()));
150 ASSERT_TRUE(keyboards.get());
151 ASSERT_EQ(arraysize(layouts), keyboards->GetSize());
152
153 DictionaryValue* dictionary_value;
154 std::string string_value;
155 ListValue* list_value;
156
157 // Check the first element (for the layout "a").
158 ASSERT_TRUE(keyboards->GetDictionary(0, &dictionary_value));
159 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
160 EXPECT_EQ("a", string_value);
161 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
162 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
163 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
164 ASSERT_EQ(1U, list_value->GetSize());
165 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
166 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
167 EXPECT_EQ("http://url1/", string_value);
168 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
169 EXPECT_EQ("name 1", string_value);
170
171 // Check the second element (for the layout "b").
172 ASSERT_TRUE(keyboards->GetDictionary(1, &dictionary_value));
173 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
174 EXPECT_EQ("b", string_value);
175 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
176 EXPECT_TRUE(dictionary_value->GetString("preferredKeyboard", &string_value));
177 EXPECT_EQ("http://url1/", string_value);
178 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
179 ASSERT_EQ(1U, list_value->GetSize());
180 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
181 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
182 EXPECT_EQ("http://url1/", string_value);
183 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
184 EXPECT_EQ("name 1", string_value);
185 }
186
187 TEST(VirtualKeyboardManagerHandler, TestSingleKeyboardWithTwoPrefs) {
188 static const char* layouts[] = { "a", "b" };
189 input_method::VirtualKeyboard virtual_keyboard_1(
190 GURL("http://url1/"), "name 1", CreateLayoutSet(layouts), true);
191
192 input_method::VirtualKeyboardSelector selector;
193 ASSERT_TRUE(selector.AddVirtualKeyboard(
194 virtual_keyboard_1.url(),
195 virtual_keyboard_1.name(),
196 virtual_keyboard_1.supported_layouts(),
197 virtual_keyboard_1.is_system()));
198
199 const LayoutToKeyboard& layout_to_keyboard = selector.layout_to_keyboard();
200 ASSERT_EQ(arraysize(layouts), layout_to_keyboard.size());
201 const UrlToKeyboard& url_to_keyboard = selector.url_to_keyboard();
202 ASSERT_EQ(1U, url_to_keyboard.size());
203
204 // create pref object.
205 scoped_ptr<DictionaryValue> pref(new DictionaryValue);
206 pref->SetString("a", "http://url1/");
207 pref->SetString("b", "http://url1/");
208
209 scoped_ptr<ListValue> keyboards(Testee::CreateVirtualKeyboardList(
210 layout_to_keyboard, url_to_keyboard, pref.get()));
211 ASSERT_TRUE(keyboards.get());
212 ASSERT_EQ(arraysize(layouts), keyboards->GetSize());
213
214 DictionaryValue* dictionary_value;
215 std::string string_value;
216 ListValue* list_value;
217
218 // Check the first element (for the layout "a").
219 ASSERT_TRUE(keyboards->GetDictionary(0, &dictionary_value));
220 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
221 EXPECT_EQ("a", string_value);
222 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
223 EXPECT_TRUE(dictionary_value->GetString("preferredKeyboard", &string_value));
224 EXPECT_EQ("http://url1/", string_value);
225 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
226 ASSERT_EQ(1U, list_value->GetSize());
227 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
228 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
229 EXPECT_EQ("http://url1/", string_value);
230 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
231 EXPECT_EQ("name 1", string_value);
232
233 // Check the second element (for the layout "b").
234 ASSERT_TRUE(keyboards->GetDictionary(1, &dictionary_value));
235 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
236 EXPECT_EQ("b", string_value);
237 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
238 EXPECT_TRUE(dictionary_value->GetString("preferredKeyboard", &string_value));
239 EXPECT_EQ("http://url1/", string_value);
240 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
241 ASSERT_EQ(1U, list_value->GetSize());
242 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
243 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
244 EXPECT_EQ("http://url1/", string_value);
245 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
246 EXPECT_EQ("name 1", string_value);
247 }
248
249 TEST(VirtualKeyboardManagerHandler, TestSingleKeyboardWithBadPref1) {
250 static const char* layouts[] = { "a", "b" };
251 input_method::VirtualKeyboard virtual_keyboard_1(
252 GURL("http://url1/"), "name 1", CreateLayoutSet(layouts), true);
253
254 input_method::VirtualKeyboardSelector selector;
255 ASSERT_TRUE(selector.AddVirtualKeyboard(
256 virtual_keyboard_1.url(),
257 virtual_keyboard_1.name(),
258 virtual_keyboard_1.supported_layouts(),
259 virtual_keyboard_1.is_system()));
260
261 const LayoutToKeyboard& layout_to_keyboard = selector.layout_to_keyboard();
262 ASSERT_EQ(arraysize(layouts), layout_to_keyboard.size());
263 const UrlToKeyboard& url_to_keyboard = selector.url_to_keyboard();
264 ASSERT_EQ(1U, url_to_keyboard.size());
265
266 // create pref object.
267 scoped_ptr<DictionaryValue> pref(new DictionaryValue);
268 pref->SetString("unknownlayout", "http://url1/");
269
270 scoped_ptr<ListValue> keyboards(Testee::CreateVirtualKeyboardList(
271 layout_to_keyboard, url_to_keyboard, pref.get()));
272 ASSERT_TRUE(keyboards.get());
273 ASSERT_EQ(arraysize(layouts), keyboards->GetSize());
274
275 DictionaryValue* dictionary_value;
276 std::string string_value;
277 ListValue* list_value;
278
279 // Check the first element (for the layout "a").
280 ASSERT_TRUE(keyboards->GetDictionary(0, &dictionary_value));
281 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
282 EXPECT_EQ("a", string_value);
283 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
284 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
285 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
286 ASSERT_EQ(1U, list_value->GetSize());
287 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
288 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
289 EXPECT_EQ("http://url1/", string_value);
290 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
291 EXPECT_EQ("name 1", string_value);
292
293 // Check the second element (for the layout "b").
294 ASSERT_TRUE(keyboards->GetDictionary(1, &dictionary_value));
295 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
296 EXPECT_EQ("b", string_value);
297 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
298 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
299 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
300 ASSERT_EQ(1U, list_value->GetSize());
301 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
302 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
303 EXPECT_EQ("http://url1/", string_value);
304 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
305 EXPECT_EQ("name 1", string_value);
306 }
307
308 TEST(VirtualKeyboardManagerHandler, TestSingleKeyboardWithBadPref2) {
309 static const char* layouts[] = { "a", "b" };
310 input_method::VirtualKeyboard virtual_keyboard_1(
311 GURL("http://url1/"), "name 1", CreateLayoutSet(layouts), true);
312
313 input_method::VirtualKeyboardSelector selector;
314 ASSERT_TRUE(selector.AddVirtualKeyboard(
315 virtual_keyboard_1.url(),
316 virtual_keyboard_1.name(),
317 virtual_keyboard_1.supported_layouts(),
318 virtual_keyboard_1.is_system()));
319
320 const LayoutToKeyboard& layout_to_keyboard = selector.layout_to_keyboard();
321 ASSERT_EQ(arraysize(layouts), layout_to_keyboard.size());
322 const UrlToKeyboard& url_to_keyboard = selector.url_to_keyboard();
323 ASSERT_EQ(1U, url_to_keyboard.size());
324
325 // create pref object.
326 scoped_ptr<DictionaryValue> pref(new DictionaryValue);
327 pref->SetString("a", "http://unknownurl/");
328
329 scoped_ptr<ListValue> keyboards(Testee::CreateVirtualKeyboardList(
330 layout_to_keyboard, url_to_keyboard, pref.get()));
331 ASSERT_TRUE(keyboards.get());
332 ASSERT_EQ(arraysize(layouts), keyboards->GetSize());
333
334 DictionaryValue* dictionary_value;
335 std::string string_value;
336 ListValue* list_value;
337
338 // Check the first element (for the layout "a").
339 ASSERT_TRUE(keyboards->GetDictionary(0, &dictionary_value));
340 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
341 EXPECT_EQ("a", string_value);
342 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
343 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
344 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
345 ASSERT_EQ(1U, list_value->GetSize());
346 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
347 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
348 EXPECT_EQ("http://url1/", string_value);
349 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
350 EXPECT_EQ("name 1", string_value);
351
352 // Check the second element (for the layout "b").
353 ASSERT_TRUE(keyboards->GetDictionary(1, &dictionary_value));
354 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
355 EXPECT_EQ("b", string_value);
356 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
357 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
358 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
359 ASSERT_EQ(1U, list_value->GetSize());
360 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
361 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
362 EXPECT_EQ("http://url1/", string_value);
363 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
364 EXPECT_EQ("name 1", string_value);
365 }
366
367 TEST(VirtualKeyboardManagerHandler, TestSingleKeyboardWithBadPref3) {
368 static const char* layout1[] = { "a" };
369 static const char* layout2[] = { "b" };
370 input_method::VirtualKeyboard virtual_keyboard_1(
371 GURL("http://url1/"), "name 1", CreateLayoutSet(layout1), true);
372 input_method::VirtualKeyboard virtual_keyboard_2(
373 GURL("http://url2/"), "name 2", CreateLayoutSet(layout2), true);
374
375 input_method::VirtualKeyboardSelector selector;
376 ASSERT_TRUE(selector.AddVirtualKeyboard(
377 virtual_keyboard_1.url(),
378 virtual_keyboard_1.name(),
379 virtual_keyboard_1.supported_layouts(),
380 virtual_keyboard_1.is_system()));
381 ASSERT_TRUE(selector.AddVirtualKeyboard(
382 virtual_keyboard_2.url(),
383 virtual_keyboard_2.name(),
384 virtual_keyboard_2.supported_layouts(),
385 virtual_keyboard_2.is_system()));
386
387 const LayoutToKeyboard& layout_to_keyboard = selector.layout_to_keyboard();
388 ASSERT_EQ(2U, layout_to_keyboard.size());
389 const UrlToKeyboard& url_to_keyboard = selector.url_to_keyboard();
390 ASSERT_EQ(2U, url_to_keyboard.size());
391
392 // create pref object.
393 scoped_ptr<DictionaryValue> pref(new DictionaryValue);
394 pref->SetString("a", "http://url2/"); // url2 does not support "a".
395
396 scoped_ptr<ListValue> keyboards(Testee::CreateVirtualKeyboardList(
397 layout_to_keyboard, url_to_keyboard, pref.get()));
398 ASSERT_TRUE(keyboards.get());
399 ASSERT_EQ(2U, keyboards->GetSize());
400
401 DictionaryValue* dictionary_value;
402 std::string string_value;
403 ListValue* list_value;
404
405 // Check the first element (for the layout "a").
406 ASSERT_TRUE(keyboards->GetDictionary(0, &dictionary_value));
407 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
408 EXPECT_EQ("a", string_value);
409 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
410 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
411 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
412 ASSERT_EQ(1U, list_value->GetSize());
413 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
414 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
415 EXPECT_EQ("http://url1/", string_value);
416 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
417 EXPECT_EQ("name 1", string_value);
418
419 // Check the second element (for the layout "b").
420 ASSERT_TRUE(keyboards->GetDictionary(1, &dictionary_value));
421 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
422 EXPECT_EQ("b", string_value);
423 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
424 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
425 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
426 ASSERT_EQ(1U, list_value->GetSize());
427 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
428 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
429 EXPECT_EQ("http://url2/", string_value);
430 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
431 EXPECT_EQ("name 2", string_value);
432 }
433
434 TEST(VirtualKeyboardManagerHandler, TestMultipleKeyboards) {
435 static const char* layouts1[] = { "a", "b" };
436 static const char* layouts2[] = { "c" };
437 static const char* layouts3[] = { "b", "d" };
438 input_method::VirtualKeyboard virtual_keyboard_1(
439 GURL("http://url1/"), "name 1", CreateLayoutSet(layouts1), true);
440 input_method::VirtualKeyboard virtual_keyboard_2(
441 GURL("http://url2/"), "name 2", CreateLayoutSet(layouts2), false);
442 input_method::VirtualKeyboard virtual_keyboard_3(
443 GURL("http://url3/"), "name 3", CreateLayoutSet(layouts3), true);
444
445 input_method::VirtualKeyboardSelector selector;
446 ASSERT_TRUE(selector.AddVirtualKeyboard(
447 virtual_keyboard_1.url(),
448 virtual_keyboard_1.name(),
449 virtual_keyboard_1.supported_layouts(),
450 virtual_keyboard_1.is_system()));
451 ASSERT_TRUE(selector.AddVirtualKeyboard(
452 virtual_keyboard_2.url(),
453 virtual_keyboard_2.name(),
454 virtual_keyboard_2.supported_layouts(),
455 virtual_keyboard_2.is_system()));
456 ASSERT_TRUE(selector.AddVirtualKeyboard(
457 virtual_keyboard_3.url(),
458 virtual_keyboard_3.name(),
459 virtual_keyboard_3.supported_layouts(),
460 virtual_keyboard_3.is_system()));
461
462 const LayoutToKeyboard& layout_to_keyboard = selector.layout_to_keyboard();
463 ASSERT_EQ(arraysize(layouts1) + arraysize(layouts2) + arraysize(layouts3),
464 layout_to_keyboard.size());
465 const UrlToKeyboard& url_to_keyboard = selector.url_to_keyboard();
466 ASSERT_EQ(3U, url_to_keyboard.size());
467
468 scoped_ptr<ListValue> keyboards(Testee::CreateVirtualKeyboardList(
469 layout_to_keyboard, url_to_keyboard, NULL));
470 ASSERT_TRUE(keyboards.get());
471 ASSERT_EQ(4U /* a, b, c, and d */, keyboards->GetSize());
472
473 DictionaryValue* dictionary_value;
474 std::string string_value;
475 ListValue* list_value;
476 bool boolean_value = false;
477
478 // Check the first element (for the layout "a").
479 ASSERT_TRUE(keyboards->GetDictionary(0, &dictionary_value));
480 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
481 EXPECT_EQ("a", string_value);
482 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
483 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
484 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
485 ASSERT_EQ(1U, list_value->GetSize());
486 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
487 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
488 EXPECT_EQ("http://url1/", string_value);
489 EXPECT_TRUE(dictionary_value->GetBoolean("isSystem", &boolean_value));
490 EXPECT_TRUE(boolean_value);
491 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
492 EXPECT_EQ("name 1", string_value);
493
494 // Check the second element (for the layout "b").
495 ASSERT_TRUE(keyboards->GetDictionary(1, &dictionary_value));
496 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
497 EXPECT_EQ("b", string_value);
498 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
499 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
500 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
501 ASSERT_EQ(2U, list_value->GetSize()); // keyboard1 and 3.
502 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
503 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
504 EXPECT_EQ("http://url1/", string_value);
505 EXPECT_TRUE(dictionary_value->GetBoolean("isSystem", &boolean_value));
506 EXPECT_TRUE(boolean_value);
507 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
508 EXPECT_EQ("name 1", string_value);
509 ASSERT_TRUE(list_value->GetDictionary(1, &dictionary_value));
510 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
511 EXPECT_EQ("http://url3/", string_value);
512 EXPECT_TRUE(dictionary_value->GetBoolean("isSystem", &boolean_value));
513 EXPECT_TRUE(boolean_value);
514 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
515 EXPECT_EQ("name 3", string_value);
516
517 // 3rd.
518 ASSERT_TRUE(keyboards->GetDictionary(2, &dictionary_value));
519 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
520 EXPECT_EQ("c", string_value);
521 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
522 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
523 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
524 ASSERT_EQ(1U, list_value->GetSize());
525 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
526 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
527 EXPECT_EQ("http://url2/", string_value);
528 EXPECT_TRUE(dictionary_value->GetBoolean("isSystem", &boolean_value));
529 EXPECT_FALSE(boolean_value);
530 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
531 EXPECT_EQ("name 2", string_value);
532
533 // 4th.
534 ASSERT_TRUE(keyboards->GetDictionary(3, &dictionary_value));
535 EXPECT_TRUE(dictionary_value->GetString("layout", &string_value));
536 EXPECT_EQ("d", string_value);
537 EXPECT_TRUE(dictionary_value->GetString("layoutName", &string_value));
538 EXPECT_FALSE(dictionary_value->GetString("preferredKeyboard", &string_value));
539 ASSERT_TRUE(dictionary_value->GetList("supportedKeyboards", &list_value));
540 ASSERT_EQ(1U, list_value->GetSize());
541 ASSERT_TRUE(list_value->GetDictionary(0, &dictionary_value));
542 EXPECT_TRUE(dictionary_value->GetString("url", &string_value));
543 EXPECT_EQ("http://url3/", string_value);
544 EXPECT_TRUE(dictionary_value->GetBoolean("isSystem", &boolean_value));
545 EXPECT_TRUE(boolean_value);
546 EXPECT_TRUE(dictionary_value->GetString("name", &string_value));
547 EXPECT_EQ("name 3", string_value);
548 }
549
550 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698