OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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/virtual_keyboard_selector.h" | 5 #include "chrome/browser/chromeos/input_method/virtual_keyboard_selector.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace ime = ::chromeos::input_method; | |
11 | |
10 // For EXPECT_TRUE calls below. The operator has to be in the global namespace. | 12 // For EXPECT_TRUE calls below. The operator has to be in the global namespace. |
11 static bool operator==(const chromeos::input_method::VirtualKeyboard& lhs, | 13 static bool operator==( |
12 const chromeos::input_method::VirtualKeyboard& rhs) { | 14 const ime::VirtualKeyboard& lhs, const ime::VirtualKeyboard& rhs) { |
13 return lhs.GetURLForLayout("") == rhs.GetURLForLayout(""); | 15 return lhs.GetURLForLayout("") == rhs.GetURLForLayout(""); |
14 } | 16 } |
15 | 17 |
16 namespace { | 18 namespace { |
17 | 19 |
20 typedef std::multimap< | |
21 std::string, const ime::VirtualKeyboard*> LayoutToKeyboard; | |
22 | |
23 // Returns true if [start, end) contains all of the |urls|. | |
mazda
2011/08/09 02:28:24
The comment sounds differently from the actual beh
Yusuke Sato
2011/08/09 05:25:49
Done.
| |
24 template <size_t L> bool CheckUrls(LayoutToKeyboard::const_iterator start, | |
25 LayoutToKeyboard::const_iterator end, | |
26 const char* (&urls)[L]) { | |
27 std::set<GURL> url_set; | |
28 for (size_t i = 0; i < L; ++i) { | |
29 url_set.insert(GURL(urls[i])); | |
30 } | |
31 LayoutToKeyboard::const_iterator iter; | |
32 for (iter = start; iter != end; ++iter) { | |
33 if (url_set.erase(iter->second->url()) != 1) { | |
34 LOG(ERROR) << "Unexpected URL: " << iter->second->url().spec(); | |
35 return false; | |
36 } | |
37 } | |
38 return url_set.empty(); | |
39 } | |
40 | |
18 template <size_t L> | 41 template <size_t L> |
19 std::set<std::string> CreateLayoutSet(const char* (&layouts)[L]) { | 42 std::set<std::string> CreateLayoutSet(const char* (&layouts)[L]) { |
20 std::set<std::string> result; | 43 std::set<std::string> result; |
21 for (size_t i = 0; i < L; ++i) { | 44 for (size_t i = 0; i < L; ++i) { |
22 result.insert(layouts[i]); | 45 result.insert(layouts[i]); |
23 } | 46 } |
24 return result; | 47 return result; |
25 } | 48 } |
26 | 49 |
27 } // namespace | 50 } // namespace |
(...skipping 12 matching lines...) Expand all Loading... | |
40 TestableVirtualKeyboardSelector selector; | 63 TestableVirtualKeyboardSelector selector; |
41 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("us")); | 64 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("us")); |
42 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); | 65 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); |
43 } | 66 } |
44 | 67 |
45 TEST(VirtualKeyboardSelectorTest, TestAddVirtualKeyboard) { | 68 TEST(VirtualKeyboardSelectorTest, TestAddVirtualKeyboard) { |
46 static const char* layouts[] = { "a", "b", "c" }; | 69 static const char* layouts[] = { "a", "b", "c" }; |
47 | 70 |
48 // The first two keyboards have the same URL. | 71 // The first two keyboards have the same URL. |
49 VirtualKeyboard virtual_keyboard_1( | 72 VirtualKeyboard virtual_keyboard_1( |
50 GURL("http://url1"), CreateLayoutSet(layouts), true /* is_system */); | 73 GURL("http://url1"), "", CreateLayoutSet(layouts), true /* is_system */); |
51 VirtualKeyboard virtual_keyboard_2( | 74 VirtualKeyboard virtual_keyboard_2( |
52 GURL("http://url1"), CreateLayoutSet(layouts), false /* is_system */); | 75 GURL("http://url1"), "", CreateLayoutSet(layouts), false /* is_system */); |
53 VirtualKeyboard virtual_keyboard_3( | 76 VirtualKeyboard virtual_keyboard_3( |
54 GURL("http://url2"), CreateLayoutSet(layouts), false /* is_system */); | 77 GURL("http://url2"), "", CreateLayoutSet(layouts), false /* is_system */); |
55 | 78 |
56 TestableVirtualKeyboardSelector selector; | 79 TestableVirtualKeyboardSelector selector; |
57 EXPECT_TRUE(selector.AddVirtualKeyboard( | 80 EXPECT_TRUE(selector.AddVirtualKeyboard( |
58 virtual_keyboard_1.url(), | 81 virtual_keyboard_1.url(), |
82 virtual_keyboard_1.name(), | |
59 virtual_keyboard_1.supported_layouts(), | 83 virtual_keyboard_1.supported_layouts(), |
60 virtual_keyboard_1.is_system())); | 84 virtual_keyboard_1.is_system())); |
61 | 85 |
62 // You can't add the same keyboard twice. | 86 // You can't add the same keyboard twice. |
63 EXPECT_FALSE(selector.AddVirtualKeyboard( | 87 EXPECT_FALSE(selector.AddVirtualKeyboard( |
64 virtual_keyboard_1.url(), | 88 virtual_keyboard_1.url(), |
89 virtual_keyboard_1.name(), | |
65 virtual_keyboard_1.supported_layouts(), | 90 virtual_keyboard_1.supported_layouts(), |
66 virtual_keyboard_1.is_system())); | 91 virtual_keyboard_1.is_system())); |
67 EXPECT_FALSE(selector.AddVirtualKeyboard( | 92 EXPECT_FALSE(selector.AddVirtualKeyboard( |
68 virtual_keyboard_2.url(), | 93 virtual_keyboard_2.url(), |
94 virtual_keyboard_2.name(), | |
69 virtual_keyboard_2.supported_layouts(), | 95 virtual_keyboard_2.supported_layouts(), |
70 virtual_keyboard_2.is_system())); | 96 virtual_keyboard_2.is_system())); |
71 | 97 |
72 EXPECT_TRUE(selector.AddVirtualKeyboard( | 98 EXPECT_TRUE(selector.AddVirtualKeyboard( |
73 virtual_keyboard_3.url(), | 99 virtual_keyboard_3.url(), |
100 virtual_keyboard_3.name(), | |
74 virtual_keyboard_3.supported_layouts(), | 101 virtual_keyboard_3.supported_layouts(), |
75 virtual_keyboard_3.is_system())); | 102 virtual_keyboard_3.is_system())); |
76 } | 103 } |
77 | 104 |
78 TEST(VirtualKeyboardSelectorTest, TestSystemKeyboard) { | 105 TEST(VirtualKeyboardSelectorTest, TestSystemKeyboard) { |
79 static const char* layouts[] = { "a", "b", "c" }; | 106 static const char* layouts[] = { "a", "b", "c" }; |
80 VirtualKeyboard system_virtual_keyboard( | 107 VirtualKeyboard system_virtual_keyboard( |
81 GURL("http://system"), CreateLayoutSet(layouts), true /* is_system */); | 108 GURL("http://system"), "", CreateLayoutSet(layouts), true /* is_system */) ; |
82 | 109 |
83 TestableVirtualKeyboardSelector selector; | 110 TestableVirtualKeyboardSelector selector; |
84 EXPECT_TRUE(selector.AddVirtualKeyboard( | 111 EXPECT_TRUE(selector.AddVirtualKeyboard( |
85 system_virtual_keyboard.url(), | 112 system_virtual_keyboard.url(), |
113 system_virtual_keyboard.name(), | |
86 system_virtual_keyboard.supported_layouts(), | 114 system_virtual_keyboard.supported_layouts(), |
87 system_virtual_keyboard.is_system())); | 115 system_virtual_keyboard.is_system())); |
88 | 116 |
89 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | 117 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
90 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); | 118 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); |
91 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); | 119 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
92 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); | 120 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); |
93 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | 121 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
94 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); | 122 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); |
95 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); | 123 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); |
96 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); | 124 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); |
97 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); | 125 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); |
98 } | 126 } |
99 | 127 |
100 TEST(VirtualKeyboardSelectorTest, TestTwoSystemKeyboards) { | 128 TEST(VirtualKeyboardSelectorTest, TestTwoSystemKeyboards) { |
101 static const char* layouts_1[] = { "a", "b", "c" }; | 129 static const char* layouts_1[] = { "a", "b", "c" }; |
102 static const char* layouts_2[] = { "a", "c", "d" }; | 130 static const char* layouts_2[] = { "a", "c", "d" }; |
103 | 131 |
104 VirtualKeyboard system_virtual_keyboard_1( | 132 VirtualKeyboard system_virtual_keyboard_1( |
105 GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */); | 133 GURL("http://system1"), "", CreateLayoutSet(layouts_1), |
134 true /* is_system */); | |
106 VirtualKeyboard system_virtual_keyboard_2( | 135 VirtualKeyboard system_virtual_keyboard_2( |
107 GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); | 136 GURL("http://system2"), "", CreateLayoutSet(layouts_2), |
137 true /* is_system */); | |
108 | 138 |
109 TestableVirtualKeyboardSelector selector; | 139 TestableVirtualKeyboardSelector selector; |
110 EXPECT_TRUE(selector.AddVirtualKeyboard( | 140 EXPECT_TRUE(selector.AddVirtualKeyboard( |
111 system_virtual_keyboard_1.url(), | 141 system_virtual_keyboard_1.url(), |
142 system_virtual_keyboard_1.name(), | |
112 system_virtual_keyboard_1.supported_layouts(), | 143 system_virtual_keyboard_1.supported_layouts(), |
113 system_virtual_keyboard_1.is_system())); | 144 system_virtual_keyboard_1.is_system())); |
114 EXPECT_TRUE(selector.AddVirtualKeyboard( | 145 EXPECT_TRUE(selector.AddVirtualKeyboard( |
115 system_virtual_keyboard_2.url(), | 146 system_virtual_keyboard_2.url(), |
147 system_virtual_keyboard_2.name(), | |
116 system_virtual_keyboard_2.supported_layouts(), | 148 system_virtual_keyboard_2.supported_layouts(), |
117 system_virtual_keyboard_2.is_system())); | 149 system_virtual_keyboard_2.is_system())); |
118 | 150 |
119 // At this point, system_virtual_keyboard_2 has higher priority since it's | 151 // At this point, system_virtual_keyboard_2 has higher priority since it's |
120 // added later than system_virtual_keyboard_1. | 152 // added later than system_virtual_keyboard_1. |
121 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | 153 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
122 EXPECT_TRUE(system_virtual_keyboard_2 == | 154 EXPECT_TRUE(system_virtual_keyboard_2 == |
123 *selector.SelectVirtualKeyboard("a")); | 155 *selector.SelectVirtualKeyboard("a")); |
124 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | 156 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
125 EXPECT_TRUE(system_virtual_keyboard_2 == | 157 EXPECT_TRUE(system_virtual_keyboard_2 == |
(...skipping 25 matching lines...) Expand all Loading... | |
151 EXPECT_TRUE(system_virtual_keyboard_2 == | 183 EXPECT_TRUE(system_virtual_keyboard_2 == |
152 *selector.SelectVirtualKeyboard("a")); | 184 *selector.SelectVirtualKeyboard("a")); |
153 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | 185 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
154 EXPECT_TRUE(system_virtual_keyboard_2 == | 186 EXPECT_TRUE(system_virtual_keyboard_2 == |
155 *selector.SelectVirtualKeyboard("c")); | 187 *selector.SelectVirtualKeyboard("c")); |
156 } | 188 } |
157 | 189 |
158 TEST(VirtualKeyboardSelectorTest, TestUserKeyboard) { | 190 TEST(VirtualKeyboardSelectorTest, TestUserKeyboard) { |
159 static const char* layouts[] = { "a", "b", "c" }; | 191 static const char* layouts[] = { "a", "b", "c" }; |
160 VirtualKeyboard user_virtual_keyboard( | 192 VirtualKeyboard user_virtual_keyboard( |
161 GURL("http://user"), CreateLayoutSet(layouts), false /* is_system */); | 193 GURL("http://user"), "", CreateLayoutSet(layouts), false /* is_system */); |
162 | 194 |
163 TestableVirtualKeyboardSelector selector; | 195 TestableVirtualKeyboardSelector selector; |
164 EXPECT_TRUE(selector.AddVirtualKeyboard( | 196 EXPECT_TRUE(selector.AddVirtualKeyboard( |
165 user_virtual_keyboard.url(), | 197 user_virtual_keyboard.url(), |
198 user_virtual_keyboard.name(), | |
166 user_virtual_keyboard.supported_layouts(), | 199 user_virtual_keyboard.supported_layouts(), |
167 user_virtual_keyboard.is_system())); | 200 user_virtual_keyboard.is_system())); |
168 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | 201 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
169 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); | 202 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); |
170 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); | 203 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
171 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); | 204 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); |
172 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | 205 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
173 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); | 206 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); |
174 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); | 207 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); |
175 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); | 208 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); |
176 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); | 209 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); |
177 } | 210 } |
178 | 211 |
179 TEST(VirtualKeyboardSelectorTest, TestTwoUserKeyboards) { | 212 TEST(VirtualKeyboardSelectorTest, TestTwoUserKeyboards) { |
180 static const char* layouts_1[] = { "a", "b", "c" }; | 213 static const char* layouts_1[] = { "a", "b", "c" }; |
181 static const char* layouts_2[] = { "a", "c", "d" }; | 214 static const char* layouts_2[] = { "a", "c", "d" }; |
182 | 215 |
183 VirtualKeyboard user_virtual_keyboard_1( | 216 VirtualKeyboard user_virtual_keyboard_1( |
184 GURL("http://user1"), CreateLayoutSet(layouts_1), false /* is_system */); | 217 GURL("http://user1"), "", CreateLayoutSet(layouts_1), |
218 false /* is_system */); | |
185 VirtualKeyboard user_virtual_keyboard_2( | 219 VirtualKeyboard user_virtual_keyboard_2( |
186 GURL("http://user2"), CreateLayoutSet(layouts_2), false /* is_system */); | 220 GURL("http://user2"), "", CreateLayoutSet(layouts_2), |
221 false /* is_system */); | |
187 | 222 |
188 TestableVirtualKeyboardSelector selector; | 223 TestableVirtualKeyboardSelector selector; |
189 EXPECT_TRUE(selector.AddVirtualKeyboard( | 224 EXPECT_TRUE(selector.AddVirtualKeyboard( |
190 user_virtual_keyboard_1.url(), | 225 user_virtual_keyboard_1.url(), |
226 user_virtual_keyboard_1.name(), | |
191 user_virtual_keyboard_1.supported_layouts(), | 227 user_virtual_keyboard_1.supported_layouts(), |
192 user_virtual_keyboard_1.is_system())); | 228 user_virtual_keyboard_1.is_system())); |
193 EXPECT_TRUE(selector.AddVirtualKeyboard( | 229 EXPECT_TRUE(selector.AddVirtualKeyboard( |
194 user_virtual_keyboard_2.url(), | 230 user_virtual_keyboard_2.url(), |
231 user_virtual_keyboard_2.name(), | |
195 user_virtual_keyboard_2.supported_layouts(), | 232 user_virtual_keyboard_2.supported_layouts(), |
196 user_virtual_keyboard_2.is_system())); | 233 user_virtual_keyboard_2.is_system())); |
197 | 234 |
198 // At this point, user_virtual_keyboard_2 has higher priority since it's | 235 // At this point, user_virtual_keyboard_2 has higher priority since it's |
199 // added later than user_virtual_keyboard_1. | 236 // added later than user_virtual_keyboard_1. |
200 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | 237 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
201 EXPECT_TRUE(user_virtual_keyboard_2 == | 238 EXPECT_TRUE(user_virtual_keyboard_2 == |
202 *selector.SelectVirtualKeyboard("a")); | 239 *selector.SelectVirtualKeyboard("a")); |
203 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | 240 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
204 EXPECT_TRUE(user_virtual_keyboard_2 == | 241 EXPECT_TRUE(user_virtual_keyboard_2 == |
(...skipping 29 matching lines...) Expand all Loading... | |
234 *selector.SelectVirtualKeyboard("c")); | 271 *selector.SelectVirtualKeyboard("c")); |
235 } | 272 } |
236 | 273 |
237 TEST(VirtualKeyboardSelectorTest, TestUserSystemMixed) { | 274 TEST(VirtualKeyboardSelectorTest, TestUserSystemMixed) { |
238 static const char* ulayouts_1[] = { "a", "b", "c" }; | 275 static const char* ulayouts_1[] = { "a", "b", "c" }; |
239 static const char* ulayouts_2[] = { "a", "c", "d" }; | 276 static const char* ulayouts_2[] = { "a", "c", "d" }; |
240 static const char* layouts_1[] = { "a", "x", "y" }; | 277 static const char* layouts_1[] = { "a", "x", "y" }; |
241 static const char* layouts_2[] = { "a", "y", "z" }; | 278 static const char* layouts_2[] = { "a", "y", "z" }; |
242 | 279 |
243 VirtualKeyboard user_virtual_keyboard_1( | 280 VirtualKeyboard user_virtual_keyboard_1( |
244 GURL("http://user1"), CreateLayoutSet(ulayouts_1), false /* is_system */); | 281 GURL("http://user1"), "", CreateLayoutSet(ulayouts_1), |
282 false /* is_system */); | |
245 VirtualKeyboard user_virtual_keyboard_2( | 283 VirtualKeyboard user_virtual_keyboard_2( |
246 GURL("http://user2"), CreateLayoutSet(ulayouts_2), false /* is_system */); | 284 GURL("http://user2"), "", CreateLayoutSet(ulayouts_2), |
285 false /* is_system */); | |
247 VirtualKeyboard system_virtual_keyboard_1( | 286 VirtualKeyboard system_virtual_keyboard_1( |
248 GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */); | 287 GURL("http://system1"), "", CreateLayoutSet(layouts_1), |
288 true /* is_system */); | |
249 VirtualKeyboard system_virtual_keyboard_2( | 289 VirtualKeyboard system_virtual_keyboard_2( |
250 GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); | 290 GURL("http://system2"), "", CreateLayoutSet(layouts_2), |
291 true /* is_system */); | |
251 | 292 |
252 TestableVirtualKeyboardSelector selector; | 293 TestableVirtualKeyboardSelector selector; |
253 EXPECT_TRUE(selector.AddVirtualKeyboard( | 294 EXPECT_TRUE(selector.AddVirtualKeyboard( |
254 user_virtual_keyboard_1.url(), | 295 user_virtual_keyboard_1.url(), |
296 user_virtual_keyboard_1.name(), | |
255 user_virtual_keyboard_1.supported_layouts(), | 297 user_virtual_keyboard_1.supported_layouts(), |
256 user_virtual_keyboard_1.is_system())); | 298 user_virtual_keyboard_1.is_system())); |
257 EXPECT_TRUE(selector.AddVirtualKeyboard( | 299 EXPECT_TRUE(selector.AddVirtualKeyboard( |
258 user_virtual_keyboard_2.url(), | 300 user_virtual_keyboard_2.url(), |
301 user_virtual_keyboard_2.name(), | |
259 user_virtual_keyboard_2.supported_layouts(), | 302 user_virtual_keyboard_2.supported_layouts(), |
260 user_virtual_keyboard_2.is_system())); | 303 user_virtual_keyboard_2.is_system())); |
261 EXPECT_TRUE(selector.AddVirtualKeyboard( | 304 EXPECT_TRUE(selector.AddVirtualKeyboard( |
262 system_virtual_keyboard_1.url(), | 305 system_virtual_keyboard_1.url(), |
306 system_virtual_keyboard_1.name(), | |
263 system_virtual_keyboard_1.supported_layouts(), | 307 system_virtual_keyboard_1.supported_layouts(), |
264 system_virtual_keyboard_1.is_system())); | 308 system_virtual_keyboard_1.is_system())); |
265 EXPECT_TRUE(selector.AddVirtualKeyboard( | 309 EXPECT_TRUE(selector.AddVirtualKeyboard( |
266 system_virtual_keyboard_2.url(), | 310 system_virtual_keyboard_2.url(), |
311 system_virtual_keyboard_2.name(), | |
267 system_virtual_keyboard_2.supported_layouts(), | 312 system_virtual_keyboard_2.supported_layouts(), |
268 system_virtual_keyboard_2.is_system())); | 313 system_virtual_keyboard_2.is_system())); |
269 | 314 |
270 // At this point, user_virtual_keyboard_2 has the highest priority. | 315 // At this point, user_virtual_keyboard_2 has the highest priority. |
271 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | 316 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
272 EXPECT_TRUE(user_virtual_keyboard_2 == | 317 EXPECT_TRUE(user_virtual_keyboard_2 == |
273 *selector.SelectVirtualKeyboard("a")); | 318 *selector.SelectVirtualKeyboard("a")); |
274 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | 319 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
275 EXPECT_TRUE(user_virtual_keyboard_2 == | 320 EXPECT_TRUE(user_virtual_keyboard_2 == |
276 *selector.SelectVirtualKeyboard("c")); | 321 *selector.SelectVirtualKeyboard("c")); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
327 | 372 |
328 // Switch back to user_virtual_keyboard_1. | 373 // Switch back to user_virtual_keyboard_1. |
329 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | 374 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
330 EXPECT_TRUE(user_virtual_keyboard_2 == | 375 EXPECT_TRUE(user_virtual_keyboard_2 == |
331 *selector.SelectVirtualKeyboard("c")); | 376 *selector.SelectVirtualKeyboard("c")); |
332 } | 377 } |
333 | 378 |
334 TEST(VirtualKeyboardTest, TestUrl) { | 379 TEST(VirtualKeyboardTest, TestUrl) { |
335 static const char* layouts[] = { "a", "b", "c" }; | 380 static const char* layouts[] = { "a", "b", "c" }; |
336 VirtualKeyboard system_virtual_keyboard( | 381 VirtualKeyboard system_virtual_keyboard( |
337 GURL("http://system"), CreateLayoutSet(layouts), true); | 382 GURL("http://system"), "", CreateLayoutSet(layouts), true); |
338 | 383 |
339 EXPECT_EQ("http://system/index.html#a", | 384 EXPECT_EQ("http://system/index.html#a", |
340 system_virtual_keyboard.GetURLForLayout("a").spec()); | 385 system_virtual_keyboard.GetURLForLayout("a").spec()); |
341 EXPECT_EQ("http://system/index.html#b", | 386 EXPECT_EQ("http://system/index.html#b", |
342 system_virtual_keyboard.GetURLForLayout("b").spec()); | 387 system_virtual_keyboard.GetURLForLayout("b").spec()); |
343 EXPECT_EQ("http://system/index.html#c", | 388 EXPECT_EQ("http://system/index.html#c", |
344 system_virtual_keyboard.GetURLForLayout("c").spec()); | 389 system_virtual_keyboard.GetURLForLayout("c").spec()); |
345 EXPECT_EQ("http://system/index.html#not-supported", | 390 EXPECT_EQ("http://system/index.html#not-supported", |
346 system_virtual_keyboard.GetURLForLayout("not-supported").spec()); | 391 system_virtual_keyboard.GetURLForLayout("not-supported").spec()); |
347 EXPECT_EQ("http://system/index.html#not(supported)", | 392 EXPECT_EQ("http://system/index.html#not(supported)", |
348 system_virtual_keyboard.GetURLForLayout("not(supported)").spec()); | 393 system_virtual_keyboard.GetURLForLayout("not(supported)").spec()); |
349 EXPECT_EQ("http://system/", | 394 EXPECT_EQ("http://system/", |
350 system_virtual_keyboard.GetURLForLayout("").spec()); | 395 system_virtual_keyboard.GetURLForLayout("").spec()); |
351 } | 396 } |
352 | 397 |
353 TEST(VirtualKeyboardSelectorTest, TestSetUserPreference1) { | 398 TEST(VirtualKeyboardSelectorTest, TestSetUserPreference1) { |
354 static const char* layouts[] = { "a", "b", "c" }; | 399 static const char* layouts[] = { "a", "b", "c" }; |
355 | 400 |
356 VirtualKeyboard user_virtual_keyboard( | 401 VirtualKeyboard user_virtual_keyboard( |
357 GURL("http://user"), CreateLayoutSet(layouts), false /* is_system */); | 402 GURL("http://user"), "", CreateLayoutSet(layouts), false /* is_system */); |
358 | 403 |
359 TestableVirtualKeyboardSelector selector; | 404 TestableVirtualKeyboardSelector selector; |
360 EXPECT_TRUE(selector.AddVirtualKeyboard( | 405 EXPECT_TRUE(selector.AddVirtualKeyboard( |
361 user_virtual_keyboard.url(), | 406 user_virtual_keyboard.url(), |
407 user_virtual_keyboard.name(), | |
362 user_virtual_keyboard.supported_layouts(), | 408 user_virtual_keyboard.supported_layouts(), |
363 user_virtual_keyboard.is_system())); | 409 user_virtual_keyboard.is_system())); |
364 | 410 |
365 EXPECT_EQ(0U, selector.user_preference().size()); | 411 EXPECT_EQ(0U, selector.user_preference().size()); |
366 EXPECT_FALSE(selector.SetUserPreference("bad_layout", GURL("http://user"))); | 412 EXPECT_FALSE(selector.SetUserPreference("bad_layout", GURL("http://user"))); |
367 EXPECT_EQ(0U, selector.user_preference().size()); | 413 EXPECT_EQ(0U, selector.user_preference().size()); |
368 EXPECT_FALSE(selector.SetUserPreference("a", GURL("http://bad_url"))); | 414 EXPECT_FALSE(selector.SetUserPreference("a", GURL("http://bad_url"))); |
369 EXPECT_EQ(0U, selector.user_preference().size()); | 415 EXPECT_EQ(0U, selector.user_preference().size()); |
370 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://user"))); | 416 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://user"))); |
371 EXPECT_EQ(1U, selector.user_preference().size()); | 417 EXPECT_EQ(1U, selector.user_preference().size()); |
372 EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://user"))); | 418 EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://user"))); |
373 EXPECT_EQ(2U, selector.user_preference().size()); | 419 EXPECT_EQ(2U, selector.user_preference().size()); |
374 EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://user"))); | 420 EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://user"))); |
375 EXPECT_EQ(3U, selector.user_preference().size()); | 421 EXPECT_EQ(3U, selector.user_preference().size()); |
376 } | 422 } |
377 | 423 |
378 TEST(VirtualKeyboardSelectorTest, TestSetUserPreference2) { | 424 TEST(VirtualKeyboardSelectorTest, TestSetUserPreference2) { |
379 static const char* layouts[] = { "a", "b", "c" }; | 425 static const char* layouts[] = { "a", "b", "c" }; |
380 | 426 |
381 VirtualKeyboard system_virtual_keyboard( | 427 VirtualKeyboard system_virtual_keyboard( |
382 GURL("http://system"), CreateLayoutSet(layouts), true /* is_system */); | 428 GURL("http://system"), "", CreateLayoutSet(layouts), |
429 true /* is_system */); | |
383 | 430 |
384 TestableVirtualKeyboardSelector selector; | 431 TestableVirtualKeyboardSelector selector; |
385 EXPECT_TRUE(selector.AddVirtualKeyboard( | 432 EXPECT_TRUE(selector.AddVirtualKeyboard( |
386 system_virtual_keyboard.url(), | 433 system_virtual_keyboard.url(), |
434 system_virtual_keyboard.name(), | |
387 system_virtual_keyboard.supported_layouts(), | 435 system_virtual_keyboard.supported_layouts(), |
388 system_virtual_keyboard.is_system())); | 436 system_virtual_keyboard.is_system())); |
389 | 437 |
390 EXPECT_EQ(0U, selector.user_preference().size()); | 438 EXPECT_EQ(0U, selector.user_preference().size()); |
391 EXPECT_FALSE(selector.SetUserPreference("bad_layout", GURL("http://system"))); | 439 EXPECT_FALSE(selector.SetUserPreference("bad_layout", GURL("http://system"))); |
392 EXPECT_EQ(0U, selector.user_preference().size()); | 440 EXPECT_EQ(0U, selector.user_preference().size()); |
393 EXPECT_FALSE(selector.SetUserPreference("a", GURL("http://bad_url"))); | 441 EXPECT_FALSE(selector.SetUserPreference("a", GURL("http://bad_url"))); |
394 EXPECT_EQ(0U, selector.user_preference().size()); | 442 EXPECT_EQ(0U, selector.user_preference().size()); |
395 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system"))); | 443 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system"))); |
396 EXPECT_EQ(1U, selector.user_preference().size()); | 444 EXPECT_EQ(1U, selector.user_preference().size()); |
397 EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://system"))); | 445 EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://system"))); |
398 EXPECT_EQ(2U, selector.user_preference().size()); | 446 EXPECT_EQ(2U, selector.user_preference().size()); |
399 EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://system"))); | 447 EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://system"))); |
400 EXPECT_EQ(3U, selector.user_preference().size()); | 448 EXPECT_EQ(3U, selector.user_preference().size()); |
401 } | 449 } |
402 | 450 |
403 TEST(VirtualKeyboardSelectorTest, TestRemoveUserPreference) { | 451 TEST(VirtualKeyboardSelectorTest, TestRemoveUserPreference) { |
404 static const char* layouts[] = { "a", "b", "c" }; | 452 static const char* layouts[] = { "a", "b", "c" }; |
405 | 453 |
406 VirtualKeyboard user_virtual_keyboard_1( | 454 VirtualKeyboard user_virtual_keyboard_1( |
407 GURL("http://user1"), CreateLayoutSet(layouts), false /* is_system */); | 455 GURL("http://user1"), "", CreateLayoutSet(layouts), |
456 false /* is_system */); | |
408 VirtualKeyboard user_virtual_keyboard_2( | 457 VirtualKeyboard user_virtual_keyboard_2( |
409 GURL("http://user2"), CreateLayoutSet(layouts), false /* is_system */); | 458 GURL("http://user2"), "", CreateLayoutSet(layouts), |
459 false /* is_system */); | |
410 | 460 |
411 TestableVirtualKeyboardSelector selector; | 461 TestableVirtualKeyboardSelector selector; |
412 EXPECT_TRUE(selector.AddVirtualKeyboard( | 462 EXPECT_TRUE(selector.AddVirtualKeyboard( |
413 user_virtual_keyboard_1.url(), | 463 user_virtual_keyboard_1.url(), |
464 user_virtual_keyboard_1.name(), | |
414 user_virtual_keyboard_1.supported_layouts(), | 465 user_virtual_keyboard_1.supported_layouts(), |
415 user_virtual_keyboard_1.is_system())); | 466 user_virtual_keyboard_1.is_system())); |
416 EXPECT_TRUE(selector.AddVirtualKeyboard( | 467 EXPECT_TRUE(selector.AddVirtualKeyboard( |
417 user_virtual_keyboard_2.url(), | 468 user_virtual_keyboard_2.url(), |
469 user_virtual_keyboard_2.name(), | |
418 user_virtual_keyboard_2.supported_layouts(), | 470 user_virtual_keyboard_2.supported_layouts(), |
419 user_virtual_keyboard_2.is_system())); | 471 user_virtual_keyboard_2.is_system())); |
420 | 472 |
421 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://user1"))); | 473 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://user1"))); |
422 EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://user1"))); | 474 EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://user1"))); |
423 EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://user1"))); | 475 EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://user1"))); |
424 EXPECT_EQ(3U, selector.user_preference().size()); | 476 EXPECT_EQ(3U, selector.user_preference().size()); |
425 | 477 |
426 selector.RemoveUserPreference("b"); | 478 selector.RemoveUserPreference("b"); |
427 EXPECT_EQ(2U, selector.user_preference().size()); | 479 EXPECT_EQ(2U, selector.user_preference().size()); |
428 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); | 480 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
429 // user_virtual_keyboard_2 should be selected here since the keyboard is | 481 // user_virtual_keyboard_2 should be selected here since the keyboard is |
430 // added most recently and the user preference on "b" is already removed. | 482 // added most recently and the user preference on "b" is already removed. |
431 EXPECT_TRUE(user_virtual_keyboard_2 == *selector.SelectVirtualKeyboard("b")); | 483 EXPECT_TRUE(user_virtual_keyboard_2 == *selector.SelectVirtualKeyboard("b")); |
432 | 484 |
433 selector.ClearAllUserPreferences(); | 485 selector.ClearAllUserPreferences(); |
434 EXPECT_EQ(0U, selector.user_preference().size()); | 486 EXPECT_EQ(0U, selector.user_preference().size()); |
435 } | 487 } |
436 | 488 |
437 TEST(VirtualKeyboardSelectorTest, TestSetUserPreferenceUserSystemMixed) { | 489 TEST(VirtualKeyboardSelectorTest, TestSetUserPreferenceUserSystemMixed) { |
438 static const char* ulayouts_1[] = { "a", "b", "c" }; | 490 static const char* ulayouts_1[] = { "a", "b", "c" }; |
439 static const char* ulayouts_2[] = { "a", "c", "d" }; | 491 static const char* ulayouts_2[] = { "a", "c", "d" }; |
440 static const char* layouts_1[] = { "a", "x", "y" }; | 492 static const char* layouts_1[] = { "a", "x", "y" }; |
441 static const char* layouts_2[] = { "a", "y", "z" }; | 493 static const char* layouts_2[] = { "a", "y", "z" }; |
442 | 494 |
443 VirtualKeyboard user_virtual_keyboard_1( | 495 VirtualKeyboard user_virtual_keyboard_1( |
444 GURL("http://user1"), CreateLayoutSet(ulayouts_1), false /* is_system */); | 496 GURL("http://user1"), "", CreateLayoutSet(ulayouts_1), |
497 false /* is_system */); | |
445 VirtualKeyboard user_virtual_keyboard_2( | 498 VirtualKeyboard user_virtual_keyboard_2( |
446 GURL("http://user2"), CreateLayoutSet(ulayouts_2), false /* is_system */); | 499 GURL("http://user2"), "", CreateLayoutSet(ulayouts_2), |
500 false /* is_system */); | |
447 VirtualKeyboard system_virtual_keyboard_1( | 501 VirtualKeyboard system_virtual_keyboard_1( |
448 GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */); | 502 GURL("http://system1"), "", CreateLayoutSet(layouts_1), |
503 true /* is_system */); | |
449 VirtualKeyboard system_virtual_keyboard_2( | 504 VirtualKeyboard system_virtual_keyboard_2( |
450 GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); | 505 GURL("http://system2"), "", CreateLayoutSet(layouts_2), |
506 true /* is_system */); | |
451 | 507 |
452 TestableVirtualKeyboardSelector selector; | 508 TestableVirtualKeyboardSelector selector; |
453 EXPECT_TRUE(selector.AddVirtualKeyboard( | 509 EXPECT_TRUE(selector.AddVirtualKeyboard( |
454 user_virtual_keyboard_1.url(), | 510 user_virtual_keyboard_1.url(), |
511 user_virtual_keyboard_1.name(), | |
455 user_virtual_keyboard_1.supported_layouts(), | 512 user_virtual_keyboard_1.supported_layouts(), |
456 user_virtual_keyboard_1.is_system())); | 513 user_virtual_keyboard_1.is_system())); |
457 EXPECT_TRUE(selector.AddVirtualKeyboard( | 514 EXPECT_TRUE(selector.AddVirtualKeyboard( |
458 user_virtual_keyboard_2.url(), | 515 user_virtual_keyboard_2.url(), |
516 user_virtual_keyboard_2.name(), | |
459 user_virtual_keyboard_2.supported_layouts(), | 517 user_virtual_keyboard_2.supported_layouts(), |
460 user_virtual_keyboard_2.is_system())); | 518 user_virtual_keyboard_2.is_system())); |
461 EXPECT_TRUE(selector.AddVirtualKeyboard( | 519 EXPECT_TRUE(selector.AddVirtualKeyboard( |
462 system_virtual_keyboard_1.url(), | 520 system_virtual_keyboard_1.url(), |
521 system_virtual_keyboard_1.name(), | |
463 system_virtual_keyboard_1.supported_layouts(), | 522 system_virtual_keyboard_1.supported_layouts(), |
464 system_virtual_keyboard_1.is_system())); | 523 system_virtual_keyboard_1.is_system())); |
465 EXPECT_TRUE(selector.AddVirtualKeyboard( | 524 EXPECT_TRUE(selector.AddVirtualKeyboard( |
466 system_virtual_keyboard_2.url(), | 525 system_virtual_keyboard_2.url(), |
526 system_virtual_keyboard_2.name(), | |
467 system_virtual_keyboard_2.supported_layouts(), | 527 system_virtual_keyboard_2.supported_layouts(), |
468 system_virtual_keyboard_2.is_system())); | 528 system_virtual_keyboard_2.is_system())); |
469 | 529 |
470 // Set and then remove user prefs (=NOP). | 530 // Set and then remove user prefs (=NOP). |
471 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system1"))); | 531 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system1"))); |
472 EXPECT_TRUE(selector.SetUserPreference("z", GURL("http://system2"))); | 532 EXPECT_TRUE(selector.SetUserPreference("z", GURL("http://system2"))); |
473 selector.ClearAllUserPreferences(); | 533 selector.ClearAllUserPreferences(); |
474 | 534 |
475 // At this point, user_virtual_keyboard_2 has the highest priority. | 535 // At this point, user_virtual_keyboard_2 has the highest priority. |
476 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | 536 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
535 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | 595 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
536 EXPECT_TRUE(system_virtual_keyboard_1 == // user pref is no longer available | 596 EXPECT_TRUE(system_virtual_keyboard_1 == // user pref is no longer available |
537 *selector.SelectVirtualKeyboard("a")); | 597 *selector.SelectVirtualKeyboard("a")); |
538 | 598 |
539 // Switch back to user_virtual_keyboard_1. | 599 // Switch back to user_virtual_keyboard_1. |
540 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | 600 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
541 EXPECT_TRUE(user_virtual_keyboard_2 == | 601 EXPECT_TRUE(user_virtual_keyboard_2 == |
542 *selector.SelectVirtualKeyboard("c")); | 602 *selector.SelectVirtualKeyboard("c")); |
543 } | 603 } |
544 | 604 |
605 TEST(VirtualKeyboardSelectorTest, TestUrlToExtensionMapping) { | |
606 static const char* ulayouts_1[] = { "a", "b", "c" }; | |
607 static const char* ulayouts_2[] = { "a", "c", "d" }; | |
608 static const char* slayouts_1[] = { "a", "x", "y" }; | |
609 | |
610 VirtualKeyboard user_virtual_keyboard_1( | |
611 GURL("http://user1"), "", CreateLayoutSet(ulayouts_1), | |
612 false /* is_system */); | |
613 VirtualKeyboard user_virtual_keyboard_2( | |
614 GURL("http://user2"), "", CreateLayoutSet(ulayouts_2), | |
615 false /* is_system */); | |
616 VirtualKeyboard system_virtual_keyboard_1( | |
617 GURL("http://system1"), "", CreateLayoutSet(slayouts_1), | |
618 true /* is_system */); | |
619 | |
620 TestableVirtualKeyboardSelector selector; | |
621 | |
622 const std::map<GURL, const VirtualKeyboard*>& result1 = | |
623 selector.url_to_keyboard(); | |
624 EXPECT_TRUE(result1.empty()); | |
625 | |
626 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
627 user_virtual_keyboard_1.url(), | |
628 user_virtual_keyboard_1.name(), | |
629 user_virtual_keyboard_1.supported_layouts(), | |
630 user_virtual_keyboard_1.is_system())); | |
631 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
632 user_virtual_keyboard_2.url(), | |
633 user_virtual_keyboard_2.name(), | |
634 user_virtual_keyboard_2.supported_layouts(), | |
635 user_virtual_keyboard_2.is_system())); | |
636 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
637 system_virtual_keyboard_1.url(), | |
638 system_virtual_keyboard_1.name(), | |
639 system_virtual_keyboard_1.supported_layouts(), | |
640 system_virtual_keyboard_1.is_system())); | |
641 | |
642 const std::map<GURL, const VirtualKeyboard*>& result2 = | |
643 selector.url_to_keyboard(); | |
644 EXPECT_EQ(3U, result2.size()); | |
645 ASSERT_EQ(1U, result2.count(GURL("http://user1"))); | |
646 EXPECT_TRUE(user_virtual_keyboard_1 == | |
647 *result2.find(GURL("http://user1"))->second); | |
648 ASSERT_EQ(1U, result2.count(GURL("http://user2"))); | |
649 EXPECT_TRUE(user_virtual_keyboard_2 == | |
650 *result2.find(GURL("http://user2"))->second); | |
651 ASSERT_EQ(1U, result2.count(GURL("http://system1"))); | |
652 EXPECT_TRUE(system_virtual_keyboard_1 == | |
653 *result2.find(GURL("http://system1"))->second); | |
654 EXPECT_EQ(0U, result2.count(GURL("http://system2"))); | |
655 } | |
656 | |
657 TEST(VirtualKeyboardSelectorTest, TestLayoutToExtensionMapping) { | |
658 static const char* ulayouts_1[] = { "a", "b", "c" }; | |
659 static const char* ulayouts_2[] = { "a", "c", "d" }; | |
660 static const char* slayouts_1[] = { "a", "x", "y" }; | |
661 static const char* slayouts_2[] = { "a", "y", "z" }; | |
662 | |
663 VirtualKeyboard user_virtual_keyboard_1( | |
664 GURL("http://user1"), "", CreateLayoutSet(ulayouts_1), | |
665 false /* is_system */); | |
666 VirtualKeyboard user_virtual_keyboard_2( | |
667 GURL("http://user2"), "", CreateLayoutSet(ulayouts_2), | |
668 false /* is_system */); | |
669 VirtualKeyboard system_virtual_keyboard_1( | |
670 GURL("http://system1"), "", CreateLayoutSet(slayouts_1), | |
671 true /* is_system */); | |
672 VirtualKeyboard system_virtual_keyboard_2( | |
673 GURL("http://system2"), "", CreateLayoutSet(slayouts_2), | |
674 true /* is_system */); | |
675 | |
676 TestableVirtualKeyboardSelector selector; | |
677 | |
678 const LayoutToKeyboard& result1 = selector.layout_to_keyboard(); | |
679 EXPECT_TRUE(result1.empty()); | |
680 | |
681 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
682 user_virtual_keyboard_1.url(), | |
683 user_virtual_keyboard_1.name(), | |
684 user_virtual_keyboard_1.supported_layouts(), | |
685 user_virtual_keyboard_1.is_system())); | |
686 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
687 user_virtual_keyboard_2.url(), | |
688 user_virtual_keyboard_2.name(), | |
689 user_virtual_keyboard_2.supported_layouts(), | |
690 user_virtual_keyboard_2.is_system())); | |
691 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
692 system_virtual_keyboard_1.url(), | |
693 system_virtual_keyboard_1.name(), | |
694 system_virtual_keyboard_1.supported_layouts(), | |
695 system_virtual_keyboard_1.is_system())); | |
696 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
697 system_virtual_keyboard_2.url(), | |
698 system_virtual_keyboard_2.name(), | |
699 system_virtual_keyboard_2.supported_layouts(), | |
700 system_virtual_keyboard_2.is_system())); | |
701 | |
702 const LayoutToKeyboard& result2 = selector.layout_to_keyboard(); | |
703 EXPECT_EQ(arraysize(ulayouts_1) + | |
704 arraysize(ulayouts_2) + | |
705 arraysize(slayouts_1) + | |
706 arraysize(slayouts_2), | |
707 result2.size()); | |
708 | |
709 std::pair<LayoutToKeyboard::const_iterator, | |
710 LayoutToKeyboard::const_iterator> range; | |
711 EXPECT_EQ(4U, result2.count("a")); | |
712 { | |
713 static const char* urls[] = { "http://user1", "http://user2", | |
714 "http://system1", "http://system2" }; | |
715 range = result2.equal_range("a"); | |
716 EXPECT_TRUE(CheckUrls(range.first, range.second, urls)); | |
717 } | |
718 EXPECT_EQ(2U, result2.count("c")); | |
719 { | |
720 static const char* urls[] = { "http://user1", "http://user2" }; | |
721 range = result2.equal_range("c"); | |
722 EXPECT_TRUE(CheckUrls(range.first, range.second, urls)); | |
723 } | |
724 EXPECT_EQ(1U, result2.count("z")); | |
725 { | |
726 static const char* urls[] = { "http://system2" }; | |
727 range = result2.equal_range("z"); | |
728 EXPECT_TRUE(CheckUrls(range.first, range.second, urls)); | |
729 } | |
730 EXPECT_EQ(0U, result2.count("Z")); | |
731 } | |
732 | |
545 } // namespace input_method | 733 } // namespace input_method |
546 } // namespace chromeos | 734 } // namespace chromeos |
OLD | NEW |