| 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 |