Chromium Code Reviews| 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 |