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