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 // For EXPECT_TRUE calls below. The operator has to be in the global namespace. | 10 // For EXPECT_TRUE calls below. The operator has to be in the global namespace. |
(...skipping 14 matching lines...) Expand all Loading... | |
25 } | 25 } |
26 | 26 |
27 } // namespace | 27 } // namespace |
28 | 28 |
29 namespace chromeos { | 29 namespace chromeos { |
30 namespace input_method { | 30 namespace input_method { |
31 | 31 |
32 class TestableVirtualKeyboardSelector : public VirtualKeyboardSelector { | 32 class TestableVirtualKeyboardSelector : public VirtualKeyboardSelector { |
33 public: | 33 public: |
34 // Change access rights. | 34 // Change access rights. |
35 using VirtualKeyboardSelector::SelectVirtualKeyboardInternal; | 35 using VirtualKeyboardSelector::SelectVirtualKeyboardWithoutPreferences; |
36 using VirtualKeyboardSelector::user_preference; | |
36 }; | 37 }; |
37 | 38 |
38 TEST(VirtualKeyboardSelectorTest, TestNoKeyboard) { | 39 TEST(VirtualKeyboardSelectorTest, TestNoKeyboard) { |
39 TestableVirtualKeyboardSelector selector; | 40 TestableVirtualKeyboardSelector selector; |
40 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("us")); | 41 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("us")); |
41 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); | 42 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); |
42 } | 43 } |
43 | 44 |
45 TEST(VirtualKeyboardSelectorTest, TestAddVirtualKeyboard) { | |
46 static const char* layouts[] = { "a", "b", "c" }; | |
47 | |
48 // The first two keyboards have the same URL. | |
49 VirtualKeyboard virtual_keyboard_1( | |
50 GURL("http://url1"), CreateLayoutSet(layouts), true /* is_system */); | |
51 VirtualKeyboard virtual_keyboard_2( | |
52 GURL("http://url1"), CreateLayoutSet(layouts), false /* is_system */); | |
53 VirtualKeyboard virtual_keyboard_3( | |
54 GURL("http://url2"), CreateLayoutSet(layouts), false /* is_system */); | |
55 | |
56 TestableVirtualKeyboardSelector selector; | |
57 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
58 virtual_keyboard_1.url(), | |
59 virtual_keyboard_1.supported_layouts(), | |
60 virtual_keyboard_1.is_system())); | |
61 | |
62 // You can't add the same keyboard twice. | |
63 EXPECT_FALSE(selector.AddVirtualKeyboard( | |
64 virtual_keyboard_1.url(), | |
65 virtual_keyboard_1.supported_layouts(), | |
66 virtual_keyboard_1.is_system())); | |
67 EXPECT_FALSE(selector.AddVirtualKeyboard( | |
68 virtual_keyboard_2.url(), | |
69 virtual_keyboard_2.supported_layouts(), | |
70 virtual_keyboard_2.is_system())); | |
71 | |
72 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
73 virtual_keyboard_3.url(), | |
74 virtual_keyboard_3.supported_layouts(), | |
75 virtual_keyboard_3.is_system())); | |
76 } | |
77 | |
44 TEST(VirtualKeyboardSelectorTest, TestSystemKeyboard) { | 78 TEST(VirtualKeyboardSelectorTest, TestSystemKeyboard) { |
45 static const char* layouts[] = { "a", "b", "c" }; | 79 static const char* layouts[] = { "a", "b", "c" }; |
46 VirtualKeyboard system_virtual_keyboard( | 80 VirtualKeyboard system_virtual_keyboard( |
47 GURL("http://system"), CreateLayoutSet(layouts), true /* is_system */); | 81 GURL("http://system"), CreateLayoutSet(layouts), true /* is_system */); |
48 | 82 |
49 TestableVirtualKeyboardSelector selector; | 83 TestableVirtualKeyboardSelector selector; |
50 selector.AddVirtualKeyboard(system_virtual_keyboard.url(), | 84 EXPECT_TRUE(selector.AddVirtualKeyboard( |
51 system_virtual_keyboard.supported_layouts(), | 85 system_virtual_keyboard.url(), |
52 system_virtual_keyboard.is_system()); | 86 system_virtual_keyboard.supported_layouts(), |
87 system_virtual_keyboard.is_system())); | |
53 | 88 |
54 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 89 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
55 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); | 90 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); |
56 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); | 91 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
57 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); | 92 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); |
58 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 93 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
59 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); | 94 EXPECT_TRUE(system_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); |
60 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); | 95 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); |
61 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); | 96 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); |
62 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); | 97 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); |
63 } | 98 } |
64 | 99 |
65 TEST(VirtualKeyboardSelectorTest, TestTwoSystemKeyboards) { | 100 TEST(VirtualKeyboardSelectorTest, TestTwoSystemKeyboards) { |
66 static const char* layouts_1[] = { "a", "b", "c" }; | 101 static const char* layouts_1[] = { "a", "b", "c" }; |
67 static const char* layouts_2[] = { "a", "c", "d" }; | 102 static const char* layouts_2[] = { "a", "c", "d" }; |
68 | 103 |
69 VirtualKeyboard system_virtual_keyboard_1( | 104 VirtualKeyboard system_virtual_keyboard_1( |
70 GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */); | 105 GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */); |
71 VirtualKeyboard system_virtual_keyboard_2( | 106 VirtualKeyboard system_virtual_keyboard_2( |
72 GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); | 107 GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); |
73 | 108 |
74 TestableVirtualKeyboardSelector selector; | 109 TestableVirtualKeyboardSelector selector; |
75 selector.AddVirtualKeyboard(system_virtual_keyboard_1.url(), | 110 EXPECT_TRUE(selector.AddVirtualKeyboard( |
76 system_virtual_keyboard_1.supported_layouts(), | 111 system_virtual_keyboard_1.url(), |
77 system_virtual_keyboard_1.is_system()); | 112 system_virtual_keyboard_1.supported_layouts(), |
78 selector.AddVirtualKeyboard(system_virtual_keyboard_2.url(), | 113 system_virtual_keyboard_1.is_system())); |
79 system_virtual_keyboard_2.supported_layouts(), | 114 EXPECT_TRUE(selector.AddVirtualKeyboard( |
80 system_virtual_keyboard_2.is_system()); | 115 system_virtual_keyboard_2.url(), |
116 system_virtual_keyboard_2.supported_layouts(), | |
117 system_virtual_keyboard_2.is_system())); | |
81 | 118 |
82 // At this point, system_virtual_keyboard_2 has higher priority since it's | 119 // At this point, system_virtual_keyboard_2 has higher priority since it's |
83 // added later than system_virtual_keyboard_1. | 120 // added later than system_virtual_keyboard_1. |
84 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 121 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
85 EXPECT_TRUE(system_virtual_keyboard_2 == | 122 EXPECT_TRUE(system_virtual_keyboard_2 == |
86 *selector.SelectVirtualKeyboard("a")); | 123 *selector.SelectVirtualKeyboard("a")); |
87 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 124 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
88 EXPECT_TRUE(system_virtual_keyboard_2 == | 125 EXPECT_TRUE(system_virtual_keyboard_2 == |
89 *selector.SelectVirtualKeyboard("c")); | 126 *selector.SelectVirtualKeyboard("c")); |
90 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); | 127 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
91 EXPECT_TRUE(system_virtual_keyboard_2 == | 128 EXPECT_TRUE(system_virtual_keyboard_2 == |
92 *selector.SelectVirtualKeyboard("d")); | 129 *selector.SelectVirtualKeyboard("d")); |
93 | 130 |
94 // Request "b". system_virtual_keyboard_1 should be returned. | 131 // Request "b". system_virtual_keyboard_1 should be returned. |
95 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); | 132 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
96 EXPECT_TRUE(system_virtual_keyboard_1 == | 133 EXPECT_TRUE(system_virtual_keyboard_1 == |
97 *selector.SelectVirtualKeyboard("b")); | 134 *selector.SelectVirtualKeyboard("b")); |
98 | 135 |
99 // Now system_virtual_keyboard_1 should be selected for 'a' and 'c' since | 136 // Now system_virtual_keyboard_1 should be selected for 'a' and 'c' since |
100 // it's the current virtual keyboard. | 137 // it's the current virtual keyboard. |
101 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 138 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
102 EXPECT_TRUE(system_virtual_keyboard_1 == | 139 EXPECT_TRUE(system_virtual_keyboard_1 == |
103 *selector.SelectVirtualKeyboard("a")); | 140 *selector.SelectVirtualKeyboard("a")); |
104 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 141 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
105 EXPECT_TRUE(system_virtual_keyboard_1 == | 142 EXPECT_TRUE(system_virtual_keyboard_1 == |
106 *selector.SelectVirtualKeyboard("c")); | 143 *selector.SelectVirtualKeyboard("c")); |
107 | 144 |
108 // Request "d" again. system_virtual_keyboard_2 should be returned. | 145 // Request "d" again. system_virtual_keyboard_2 should be returned. |
109 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); | 146 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
110 EXPECT_TRUE(system_virtual_keyboard_2 == | 147 EXPECT_TRUE(system_virtual_keyboard_2 == |
111 *selector.SelectVirtualKeyboard("d")); | 148 *selector.SelectVirtualKeyboard("d")); |
112 // This time, system_virtual_keyboard_2 should be selected for 'a' and 'c'. | 149 // This time, system_virtual_keyboard_2 should be selected for 'a' and 'c'. |
113 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 150 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
114 EXPECT_TRUE(system_virtual_keyboard_2 == | 151 EXPECT_TRUE(system_virtual_keyboard_2 == |
115 *selector.SelectVirtualKeyboard("a")); | 152 *selector.SelectVirtualKeyboard("a")); |
116 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 153 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
117 EXPECT_TRUE(system_virtual_keyboard_2 == | 154 EXPECT_TRUE(system_virtual_keyboard_2 == |
118 *selector.SelectVirtualKeyboard("c")); | 155 *selector.SelectVirtualKeyboard("c")); |
119 } | 156 } |
120 | 157 |
121 TEST(VirtualKeyboardSelectorTest, TestUserKeyboard) { | 158 TEST(VirtualKeyboardSelectorTest, TestUserKeyboard) { |
122 static const char* layouts[] = { "a", "b", "c" }; | 159 static const char* layouts[] = { "a", "b", "c" }; |
123 VirtualKeyboard user_virtual_keyboard( | 160 VirtualKeyboard user_virtual_keyboard( |
124 GURL("http://user"), CreateLayoutSet(layouts), false /* is_system */); | 161 GURL("http://user"), CreateLayoutSet(layouts), false /* is_system */); |
125 | 162 |
126 TestableVirtualKeyboardSelector selector; | 163 TestableVirtualKeyboardSelector selector; |
127 selector.AddVirtualKeyboard(user_virtual_keyboard.url(), | 164 EXPECT_TRUE(selector.AddVirtualKeyboard( |
128 user_virtual_keyboard.supported_layouts(), | 165 user_virtual_keyboard.url(), |
129 user_virtual_keyboard.is_system()); | 166 user_virtual_keyboard.supported_layouts(), |
130 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 167 user_virtual_keyboard.is_system())); |
168 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | |
131 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); | 169 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("a")); |
132 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); | 170 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
133 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); | 171 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("b")); |
134 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 172 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
135 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); | 173 EXPECT_TRUE(user_virtual_keyboard == *selector.SelectVirtualKeyboard("c")); |
136 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); | 174 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("d")); |
137 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); | 175 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("aa")); |
138 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); | 176 EXPECT_EQ(NULL, selector.SelectVirtualKeyboard("")); |
139 } | 177 } |
140 | 178 |
141 TEST(VirtualKeyboardSelectorTest, TestTwoUserKeyboards) { | 179 TEST(VirtualKeyboardSelectorTest, TestTwoUserKeyboards) { |
142 static const char* layouts_1[] = { "a", "b", "c" }; | 180 static const char* layouts_1[] = { "a", "b", "c" }; |
143 static const char* layouts_2[] = { "a", "c", "d" }; | 181 static const char* layouts_2[] = { "a", "c", "d" }; |
144 | 182 |
145 VirtualKeyboard user_virtual_keyboard_1( | 183 VirtualKeyboard user_virtual_keyboard_1( |
146 GURL("http://user1"), CreateLayoutSet(layouts_1), false /* is_system */); | 184 GURL("http://user1"), CreateLayoutSet(layouts_1), false /* is_system */); |
147 VirtualKeyboard user_virtual_keyboard_2( | 185 VirtualKeyboard user_virtual_keyboard_2( |
148 GURL("http://user2"), CreateLayoutSet(layouts_2), false /* is_system */); | 186 GURL("http://user2"), CreateLayoutSet(layouts_2), false /* is_system */); |
149 | 187 |
150 TestableVirtualKeyboardSelector selector; | 188 TestableVirtualKeyboardSelector selector; |
151 selector.AddVirtualKeyboard(user_virtual_keyboard_1.url(), | 189 EXPECT_TRUE(selector.AddVirtualKeyboard( |
152 user_virtual_keyboard_1.supported_layouts(), | 190 user_virtual_keyboard_1.url(), |
153 user_virtual_keyboard_1.is_system()); | 191 user_virtual_keyboard_1.supported_layouts(), |
154 selector.AddVirtualKeyboard(user_virtual_keyboard_2.url(), | 192 user_virtual_keyboard_1.is_system())); |
155 user_virtual_keyboard_2.supported_layouts(), | 193 EXPECT_TRUE(selector.AddVirtualKeyboard( |
156 user_virtual_keyboard_2.is_system()); | 194 user_virtual_keyboard_2.url(), |
195 user_virtual_keyboard_2.supported_layouts(), | |
196 user_virtual_keyboard_2.is_system())); | |
157 | 197 |
158 // At this point, user_virtual_keyboard_2 has higher priority since it's | 198 // At this point, user_virtual_keyboard_2 has higher priority since it's |
159 // added later than user_virtual_keyboard_1. | 199 // added later than user_virtual_keyboard_1. |
160 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 200 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
161 EXPECT_TRUE(user_virtual_keyboard_2 == | 201 EXPECT_TRUE(user_virtual_keyboard_2 == |
162 *selector.SelectVirtualKeyboard("a")); | 202 *selector.SelectVirtualKeyboard("a")); |
163 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 203 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
164 EXPECT_TRUE(user_virtual_keyboard_2 == | 204 EXPECT_TRUE(user_virtual_keyboard_2 == |
165 *selector.SelectVirtualKeyboard("c")); | 205 *selector.SelectVirtualKeyboard("c")); |
166 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); | 206 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
167 EXPECT_TRUE(user_virtual_keyboard_2 == | 207 EXPECT_TRUE(user_virtual_keyboard_2 == |
168 *selector.SelectVirtualKeyboard("d")); | 208 *selector.SelectVirtualKeyboard("d")); |
169 | 209 |
170 // Request "b". user_virtual_keyboard_1 should be returned. | 210 // Request "b". user_virtual_keyboard_1 should be returned. |
171 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); | 211 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
172 EXPECT_TRUE(user_virtual_keyboard_1 == | 212 EXPECT_TRUE(user_virtual_keyboard_1 == |
173 *selector.SelectVirtualKeyboard("b")); | 213 *selector.SelectVirtualKeyboard("b")); |
174 | 214 |
175 // Now user_virtual_keyboard_1 should be selected for 'a' and 'c' since | 215 // Now user_virtual_keyboard_1 should be selected for 'a' and 'c' since |
176 // it's the current virtual keyboard. | 216 // it's the current virtual keyboard. |
177 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 217 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
178 EXPECT_TRUE(user_virtual_keyboard_1 == | 218 EXPECT_TRUE(user_virtual_keyboard_1 == |
179 *selector.SelectVirtualKeyboard("a")); | 219 *selector.SelectVirtualKeyboard("a")); |
180 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 220 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
181 EXPECT_TRUE(user_virtual_keyboard_1 == | 221 EXPECT_TRUE(user_virtual_keyboard_1 == |
182 *selector.SelectVirtualKeyboard("c")); | 222 *selector.SelectVirtualKeyboard("c")); |
183 | 223 |
184 // Request "d" again. user_virtual_keyboard_2 should be returned. | 224 // Request "d" again. user_virtual_keyboard_2 should be returned. |
185 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); | 225 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
186 EXPECT_TRUE(user_virtual_keyboard_2 == | 226 EXPECT_TRUE(user_virtual_keyboard_2 == |
187 *selector.SelectVirtualKeyboard("d")); | 227 *selector.SelectVirtualKeyboard("d")); |
188 // This time, user_virtual_keyboard_2 should be selected for 'a' and 'c'. | 228 // This time, user_virtual_keyboard_2 should be selected for 'a' and 'c'. |
189 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 229 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
190 EXPECT_TRUE(user_virtual_keyboard_2 == | 230 EXPECT_TRUE(user_virtual_keyboard_2 == |
191 *selector.SelectVirtualKeyboard("a")); | 231 *selector.SelectVirtualKeyboard("a")); |
192 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 232 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
193 EXPECT_TRUE(user_virtual_keyboard_2 == | 233 EXPECT_TRUE(user_virtual_keyboard_2 == |
194 *selector.SelectVirtualKeyboard("c")); | 234 *selector.SelectVirtualKeyboard("c")); |
195 } | 235 } |
196 | 236 |
197 TEST(VirtualKeyboardSelectorTest, TestUserSystemMixed) { | 237 TEST(VirtualKeyboardSelectorTest, TestUserSystemMixed) { |
198 static const char* ulayouts_1[] = { "a", "b", "c" }; | 238 static const char* ulayouts_1[] = { "a", "b", "c" }; |
199 static const char* ulayouts_2[] = { "a", "c", "d" }; | 239 static const char* ulayouts_2[] = { "a", "c", "d" }; |
200 static const char* layouts_1[] = { "a", "x", "y" }; | 240 static const char* layouts_1[] = { "a", "x", "y" }; |
201 static const char* layouts_2[] = { "a", "y", "z" }; | 241 static const char* layouts_2[] = { "a", "y", "z" }; |
202 | 242 |
203 VirtualKeyboard user_virtual_keyboard_1( | 243 VirtualKeyboard user_virtual_keyboard_1( |
204 GURL("http://user1"), CreateLayoutSet(ulayouts_1), false /* is_system */); | 244 GURL("http://user1"), CreateLayoutSet(ulayouts_1), false /* is_system */); |
205 VirtualKeyboard user_virtual_keyboard_2( | 245 VirtualKeyboard user_virtual_keyboard_2( |
206 GURL("http://user2"), CreateLayoutSet(ulayouts_2), false /* is_system */); | 246 GURL("http://user2"), CreateLayoutSet(ulayouts_2), false /* is_system */); |
207 VirtualKeyboard system_virtual_keyboard_1( | 247 VirtualKeyboard system_virtual_keyboard_1( |
208 GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */); | 248 GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */); |
209 VirtualKeyboard system_virtual_keyboard_2( | 249 VirtualKeyboard system_virtual_keyboard_2( |
210 GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); | 250 GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); |
211 | 251 |
212 TestableVirtualKeyboardSelector selector; | 252 TestableVirtualKeyboardSelector selector; |
213 selector.AddVirtualKeyboard(user_virtual_keyboard_1.url(), | 253 EXPECT_TRUE(selector.AddVirtualKeyboard( |
214 user_virtual_keyboard_1.supported_layouts(), | 254 user_virtual_keyboard_1.url(), |
215 user_virtual_keyboard_1.is_system()); | 255 user_virtual_keyboard_1.supported_layouts(), |
216 selector.AddVirtualKeyboard(user_virtual_keyboard_2.url(), | 256 user_virtual_keyboard_1.is_system())); |
217 user_virtual_keyboard_2.supported_layouts(), | 257 EXPECT_TRUE(selector.AddVirtualKeyboard( |
218 user_virtual_keyboard_2.is_system()); | 258 user_virtual_keyboard_2.url(), |
219 selector.AddVirtualKeyboard(system_virtual_keyboard_1.url(), | 259 user_virtual_keyboard_2.supported_layouts(), |
220 system_virtual_keyboard_1.supported_layouts(), | 260 user_virtual_keyboard_2.is_system())); |
221 system_virtual_keyboard_1.is_system()); | 261 EXPECT_TRUE(selector.AddVirtualKeyboard( |
222 selector.AddVirtualKeyboard(system_virtual_keyboard_2.url(), | 262 system_virtual_keyboard_1.url(), |
223 system_virtual_keyboard_2.supported_layouts(), | 263 system_virtual_keyboard_1.supported_layouts(), |
224 system_virtual_keyboard_2.is_system()); | 264 system_virtual_keyboard_1.is_system())); |
265 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
266 system_virtual_keyboard_2.url(), | |
267 system_virtual_keyboard_2.supported_layouts(), | |
268 system_virtual_keyboard_2.is_system())); | |
225 | 269 |
226 // At this point, user_virtual_keyboard_2 has the highest priority. | 270 // At this point, user_virtual_keyboard_2 has the highest priority. |
227 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 271 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
228 EXPECT_TRUE(user_virtual_keyboard_2 == | 272 EXPECT_TRUE(user_virtual_keyboard_2 == |
229 *selector.SelectVirtualKeyboard("a")); | 273 *selector.SelectVirtualKeyboard("a")); |
230 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 274 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
231 EXPECT_TRUE(user_virtual_keyboard_2 == | 275 EXPECT_TRUE(user_virtual_keyboard_2 == |
232 *selector.SelectVirtualKeyboard("c")); | 276 *selector.SelectVirtualKeyboard("c")); |
233 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("d")); | 277 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); |
234 EXPECT_TRUE(user_virtual_keyboard_2 == | 278 EXPECT_TRUE(user_virtual_keyboard_2 == |
235 *selector.SelectVirtualKeyboard("d")); | 279 *selector.SelectVirtualKeyboard("d")); |
236 | 280 |
237 // Request "b". user_virtual_keyboard_1 should be returned. | 281 // Request "b". user_virtual_keyboard_1 should be returned. |
238 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("b")); | 282 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); |
239 EXPECT_TRUE(user_virtual_keyboard_1 == | 283 EXPECT_TRUE(user_virtual_keyboard_1 == |
240 *selector.SelectVirtualKeyboard("b")); | 284 *selector.SelectVirtualKeyboard("b")); |
241 // Now user_virtual_keyboard_1 should be selected for 'a' and 'c' since | 285 // Now user_virtual_keyboard_1 should be selected for 'a' and 'c' since |
242 // it's the current virtual keyboard. | 286 // it's the current virtual keyboard. |
243 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 287 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
244 EXPECT_TRUE(user_virtual_keyboard_1 == | 288 EXPECT_TRUE(user_virtual_keyboard_1 == |
245 *selector.SelectVirtualKeyboard("a")); | 289 *selector.SelectVirtualKeyboard("a")); |
246 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 290 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
247 EXPECT_TRUE(user_virtual_keyboard_1 == | 291 EXPECT_TRUE(user_virtual_keyboard_1 == |
248 *selector.SelectVirtualKeyboard("c")); | 292 *selector.SelectVirtualKeyboard("c")); |
249 | 293 |
250 // Request "x". system_virtual_keyboard_2 should be returned (since it's | 294 // Request "x". system_virtual_keyboard_2 should be returned (since it's |
251 // added later than system_virtual_keyboard_1). | 295 // added later than system_virtual_keyboard_1). |
252 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("x")); | 296 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x")); |
253 EXPECT_TRUE(system_virtual_keyboard_1 == | 297 EXPECT_TRUE(system_virtual_keyboard_1 == |
254 *selector.SelectVirtualKeyboard("x")); | 298 *selector.SelectVirtualKeyboard("x")); |
255 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("y")); | 299 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); |
256 EXPECT_TRUE(system_virtual_keyboard_1 == | 300 EXPECT_TRUE(system_virtual_keyboard_1 == |
257 *selector.SelectVirtualKeyboard("y")); | 301 *selector.SelectVirtualKeyboard("y")); |
258 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 302 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
259 EXPECT_TRUE(system_virtual_keyboard_1 == | 303 EXPECT_TRUE(system_virtual_keyboard_1 == |
260 *selector.SelectVirtualKeyboard("a")); | 304 *selector.SelectVirtualKeyboard("a")); |
261 | 305 |
262 // Switch to system_virtual_keyboard_2. | 306 // Switch to system_virtual_keyboard_2. |
263 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("z")); | 307 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("z")); |
264 EXPECT_TRUE(system_virtual_keyboard_2 == | 308 EXPECT_TRUE(system_virtual_keyboard_2 == |
265 *selector.SelectVirtualKeyboard("z")); | 309 *selector.SelectVirtualKeyboard("z")); |
266 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("y")); | 310 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); |
267 EXPECT_TRUE(system_virtual_keyboard_2 == | 311 EXPECT_TRUE(system_virtual_keyboard_2 == |
268 *selector.SelectVirtualKeyboard("y")); | 312 *selector.SelectVirtualKeyboard("y")); |
269 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 313 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
270 EXPECT_TRUE(system_virtual_keyboard_2 == | 314 EXPECT_TRUE(system_virtual_keyboard_2 == |
271 *selector.SelectVirtualKeyboard("a")); | 315 *selector.SelectVirtualKeyboard("a")); |
272 | 316 |
273 // Switch back to system_virtual_keyboard_2. | 317 // Switch back to system_virtual_keyboard_2. |
274 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("x")); | 318 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x")); |
275 EXPECT_TRUE(system_virtual_keyboard_1 == | 319 EXPECT_TRUE(system_virtual_keyboard_1 == |
276 *selector.SelectVirtualKeyboard("x")); | 320 *selector.SelectVirtualKeyboard("x")); |
277 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("y")); | 321 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); |
278 EXPECT_TRUE(system_virtual_keyboard_1 == | 322 EXPECT_TRUE(system_virtual_keyboard_1 == |
279 *selector.SelectVirtualKeyboard("y")); | 323 *selector.SelectVirtualKeyboard("y")); |
280 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("a")); | 324 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); |
281 EXPECT_TRUE(system_virtual_keyboard_1 == | 325 EXPECT_TRUE(system_virtual_keyboard_1 == |
282 *selector.SelectVirtualKeyboard("a")); | 326 *selector.SelectVirtualKeyboard("a")); |
283 | 327 |
284 // Switch back to user_virtual_keyboard_1. | 328 // Switch back to user_virtual_keyboard_1. |
285 ASSERT_TRUE(selector.SelectVirtualKeyboardInternal("c")); | 329 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); |
286 EXPECT_TRUE(user_virtual_keyboard_2 == | 330 EXPECT_TRUE(user_virtual_keyboard_2 == |
287 *selector.SelectVirtualKeyboard("c")); | 331 *selector.SelectVirtualKeyboard("c")); |
288 } | 332 } |
289 | 333 |
290 TEST(VirtualKeyboardTest, TestUrl) { | 334 TEST(VirtualKeyboardTest, TestUrl) { |
291 static const char* layouts[] = { "a", "b", "c" }; | 335 static const char* layouts[] = { "a", "b", "c" }; |
292 VirtualKeyboard system_virtual_keyboard( | 336 VirtualKeyboard system_virtual_keyboard( |
293 GURL("http://system"), CreateLayoutSet(layouts), true); | 337 GURL("http://system"), CreateLayoutSet(layouts), true); |
294 | 338 |
295 EXPECT_EQ("http://system/index.html#a", | 339 EXPECT_EQ("http://system/index.html#a", |
296 system_virtual_keyboard.GetURLForLayout("a").spec()); | 340 system_virtual_keyboard.GetURLForLayout("a").spec()); |
297 EXPECT_EQ("http://system/index.html#b", | 341 EXPECT_EQ("http://system/index.html#b", |
298 system_virtual_keyboard.GetURLForLayout("b").spec()); | 342 system_virtual_keyboard.GetURLForLayout("b").spec()); |
299 EXPECT_EQ("http://system/index.html#c", | 343 EXPECT_EQ("http://system/index.html#c", |
300 system_virtual_keyboard.GetURLForLayout("c").spec()); | 344 system_virtual_keyboard.GetURLForLayout("c").spec()); |
301 EXPECT_EQ("http://system/index.html#not-supported", | 345 EXPECT_EQ("http://system/index.html#not-supported", |
302 system_virtual_keyboard.GetURLForLayout("not-supported").spec()); | 346 system_virtual_keyboard.GetURLForLayout("not-supported").spec()); |
303 EXPECT_EQ("http://system/index.html#not(supported)", | 347 EXPECT_EQ("http://system/index.html#not(supported)", |
304 system_virtual_keyboard.GetURLForLayout("not(supported)").spec()); | 348 system_virtual_keyboard.GetURLForLayout("not(supported)").spec()); |
305 EXPECT_EQ("http://system/", | 349 EXPECT_EQ("http://system/", |
306 system_virtual_keyboard.GetURLForLayout("").spec()); | 350 system_virtual_keyboard.GetURLForLayout("").spec()); |
307 } | 351 } |
308 | 352 |
353 TEST(VirtualKeyboardSelectorTest, TestSetUserPreference1) { | |
354 static const char* layouts[] = { "a", "b", "c" }; | |
355 | |
356 VirtualKeyboard user_virtual_keyboard( | |
357 GURL("http://user"), CreateLayoutSet(layouts), false /* is_system */); | |
358 | |
359 TestableVirtualKeyboardSelector selector; | |
360 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
361 user_virtual_keyboard.url(), | |
362 user_virtual_keyboard.supported_layouts(), | |
363 user_virtual_keyboard.is_system())); | |
364 | |
365 EXPECT_EQ(0U, selector.user_preference().size()); | |
366 EXPECT_FALSE(selector.SetUserPreference("bad_layout", GURL("http://user"))); | |
367 EXPECT_EQ(0U, selector.user_preference().size()); | |
368 EXPECT_FALSE(selector.SetUserPreference("a", GURL("http://bad_url"))); | |
369 EXPECT_EQ(0U, selector.user_preference().size()); | |
370 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://user"))); | |
371 EXPECT_EQ(1U, selector.user_preference().size()); | |
372 EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://user"))); | |
373 EXPECT_EQ(2U, selector.user_preference().size()); | |
374 EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://user"))); | |
375 EXPECT_EQ(3U, selector.user_preference().size()); | |
376 } | |
377 | |
378 TEST(VirtualKeyboardSelectorTest, TestSetUserPreference2) { | |
379 static const char* layouts[] = { "a", "b", "c" }; | |
380 | |
381 VirtualKeyboard system_virtual_keyboard( | |
382 GURL("http://system"), CreateLayoutSet(layouts), true /* is_system */); | |
383 | |
384 TestableVirtualKeyboardSelector selector; | |
385 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
386 system_virtual_keyboard.url(), | |
387 system_virtual_keyboard.supported_layouts(), | |
388 system_virtual_keyboard.is_system())); | |
389 | |
390 EXPECT_FALSE(selector.SetUserPreference("bad_layout", GURL("http://system"))); | |
391 EXPECT_FALSE(selector.SetUserPreference("a", GURL("http://bad_url"))); | |
392 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system"))); | |
393 EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://system"))); | |
394 EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://system"))); | |
bryeung
2011/08/04 17:41:41
nit: this test should have the same size checks as
Yusuke Sato
2011/08/05 02:09:44
Done.
| |
395 } | |
396 | |
397 TEST(VirtualKeyboardSelectorTest, TestSetUserPreferenceUserSystemMixed) { | |
398 static const char* ulayouts_1[] = { "a", "b", "c" }; | |
399 static const char* ulayouts_2[] = { "a", "c", "d" }; | |
400 static const char* layouts_1[] = { "a", "x", "y" }; | |
401 static const char* layouts_2[] = { "a", "y", "z" }; | |
402 | |
403 VirtualKeyboard user_virtual_keyboard_1( | |
404 GURL("http://user1"), CreateLayoutSet(ulayouts_1), false /* is_system */); | |
405 VirtualKeyboard user_virtual_keyboard_2( | |
406 GURL("http://user2"), CreateLayoutSet(ulayouts_2), false /* is_system */); | |
407 VirtualKeyboard system_virtual_keyboard_1( | |
408 GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */); | |
409 VirtualKeyboard system_virtual_keyboard_2( | |
410 GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */); | |
411 | |
412 TestableVirtualKeyboardSelector selector; | |
413 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
414 user_virtual_keyboard_1.url(), | |
415 user_virtual_keyboard_1.supported_layouts(), | |
416 user_virtual_keyboard_1.is_system())); | |
417 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
418 user_virtual_keyboard_2.url(), | |
419 user_virtual_keyboard_2.supported_layouts(), | |
420 user_virtual_keyboard_2.is_system())); | |
421 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
422 system_virtual_keyboard_1.url(), | |
423 system_virtual_keyboard_1.supported_layouts(), | |
424 system_virtual_keyboard_1.is_system())); | |
425 EXPECT_TRUE(selector.AddVirtualKeyboard( | |
426 system_virtual_keyboard_2.url(), | |
427 system_virtual_keyboard_2.supported_layouts(), | |
428 system_virtual_keyboard_2.is_system())); | |
429 | |
430 // Set and then remove user pref (=NOP). | |
431 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system1"))); | |
432 selector.RemoveUserPreference("a"); | |
433 | |
434 // At this point, user_virtual_keyboard_2 has the highest priority. | |
435 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | |
436 EXPECT_TRUE(user_virtual_keyboard_2 == | |
437 *selector.SelectVirtualKeyboard("a")); | |
438 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | |
439 EXPECT_TRUE(user_virtual_keyboard_2 == | |
440 *selector.SelectVirtualKeyboard("c")); | |
441 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d")); | |
442 EXPECT_TRUE(user_virtual_keyboard_2 == | |
443 *selector.SelectVirtualKeyboard("d")); | |
444 | |
445 // Request "b". user_virtual_keyboard_1 should be returned. | |
446 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b")); | |
447 EXPECT_TRUE(user_virtual_keyboard_1 == | |
448 *selector.SelectVirtualKeyboard("b")); | |
449 | |
450 // Set user pref. | |
451 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://user2"))); | |
452 | |
453 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | |
454 EXPECT_TRUE(user_virtual_keyboard_2 == // follow the user pref. | |
455 *selector.SelectVirtualKeyboard("a")); | |
456 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | |
457 EXPECT_TRUE(user_virtual_keyboard_2 == | |
458 *selector.SelectVirtualKeyboard("c")); | |
459 | |
460 // Request "x". system_virtual_keyboard_2 should be returned (since it's | |
461 // added later than system_virtual_keyboard_1). | |
462 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x")); | |
463 EXPECT_TRUE(system_virtual_keyboard_1 == | |
464 *selector.SelectVirtualKeyboard("x")); | |
465 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); | |
466 EXPECT_TRUE(system_virtual_keyboard_1 == | |
467 *selector.SelectVirtualKeyboard("y")); | |
468 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | |
469 EXPECT_TRUE(user_virtual_keyboard_2 == // follow the user pref. | |
470 *selector.SelectVirtualKeyboard("a")); | |
471 | |
472 // Switch to system_virtual_keyboard_2. | |
473 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("z")); | |
474 EXPECT_TRUE(system_virtual_keyboard_2 == | |
475 *selector.SelectVirtualKeyboard("z")); | |
476 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); | |
477 EXPECT_TRUE(system_virtual_keyboard_2 == | |
478 *selector.SelectVirtualKeyboard("y")); | |
479 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | |
480 EXPECT_TRUE(user_virtual_keyboard_2 == // follow the user pref. | |
481 *selector.SelectVirtualKeyboard("a")); | |
482 | |
483 // Switch back to system_virtual_keyboard_2. | |
484 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x")); | |
485 EXPECT_TRUE(system_virtual_keyboard_1 == | |
486 *selector.SelectVirtualKeyboard("x")); | |
487 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y")); | |
488 EXPECT_TRUE(system_virtual_keyboard_1 == | |
489 *selector.SelectVirtualKeyboard("y")); | |
490 | |
491 // Remove it. | |
492 selector.RemoveUserPreference("a"); | |
493 | |
494 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a")); | |
495 EXPECT_TRUE(system_virtual_keyboard_1 == // user pref is no longer available | |
496 *selector.SelectVirtualKeyboard("a")); | |
497 | |
498 // Switch back to user_virtual_keyboard_1. | |
499 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c")); | |
500 EXPECT_TRUE(user_virtual_keyboard_2 == | |
501 *selector.SelectVirtualKeyboard("c")); | |
502 } | |
503 | |
309 } // namespace input_method | 504 } // namespace input_method |
310 } // namespace chromeos | 505 } // namespace chromeos |
OLD | NEW |