Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: chrome/browser/chromeos/input_method/virtual_keyboard_selector_unittest.cc

Issue 7497028: Add SetUserPreference function to VirtualKeyboardSelector (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review fix Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/chromeos/input_method/virtual_keyboard_selector.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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_EQ(0U, selector.user_preference().size());
391 EXPECT_FALSE(selector.SetUserPreference("bad_layout", GURL("http://system")));
392 EXPECT_EQ(0U, selector.user_preference().size());
393 EXPECT_FALSE(selector.SetUserPreference("a", GURL("http://bad_url")));
394 EXPECT_EQ(0U, selector.user_preference().size());
395 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system")));
396 EXPECT_EQ(1U, selector.user_preference().size());
397 EXPECT_TRUE(selector.SetUserPreference("b", GURL("http://system")));
398 EXPECT_EQ(2U, selector.user_preference().size());
399 EXPECT_TRUE(selector.SetUserPreference("c", GURL("http://system")));
400 EXPECT_EQ(3U, selector.user_preference().size());
401 }
402
403 TEST(VirtualKeyboardSelectorTest, TestSetUserPreferenceUserSystemMixed) {
404 static const char* ulayouts_1[] = { "a", "b", "c" };
405 static const char* ulayouts_2[] = { "a", "c", "d" };
406 static const char* layouts_1[] = { "a", "x", "y" };
407 static const char* layouts_2[] = { "a", "y", "z" };
408
409 VirtualKeyboard user_virtual_keyboard_1(
410 GURL("http://user1"), CreateLayoutSet(ulayouts_1), false /* is_system */);
411 VirtualKeyboard user_virtual_keyboard_2(
412 GURL("http://user2"), CreateLayoutSet(ulayouts_2), false /* is_system */);
413 VirtualKeyboard system_virtual_keyboard_1(
414 GURL("http://system1"), CreateLayoutSet(layouts_1), true /* is_system */);
415 VirtualKeyboard system_virtual_keyboard_2(
416 GURL("http://system2"), CreateLayoutSet(layouts_2), true /* is_system */);
417
418 TestableVirtualKeyboardSelector selector;
419 EXPECT_TRUE(selector.AddVirtualKeyboard(
420 user_virtual_keyboard_1.url(),
421 user_virtual_keyboard_1.supported_layouts(),
422 user_virtual_keyboard_1.is_system()));
423 EXPECT_TRUE(selector.AddVirtualKeyboard(
424 user_virtual_keyboard_2.url(),
425 user_virtual_keyboard_2.supported_layouts(),
426 user_virtual_keyboard_2.is_system()));
427 EXPECT_TRUE(selector.AddVirtualKeyboard(
428 system_virtual_keyboard_1.url(),
429 system_virtual_keyboard_1.supported_layouts(),
430 system_virtual_keyboard_1.is_system()));
431 EXPECT_TRUE(selector.AddVirtualKeyboard(
432 system_virtual_keyboard_2.url(),
433 system_virtual_keyboard_2.supported_layouts(),
434 system_virtual_keyboard_2.is_system()));
435
436 // Set and then remove user pref (=NOP).
437 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://system1")));
438 selector.RemoveUserPreference("a");
439
440 // At this point, user_virtual_keyboard_2 has the highest priority.
441 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a"));
442 EXPECT_TRUE(user_virtual_keyboard_2 ==
443 *selector.SelectVirtualKeyboard("a"));
444 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c"));
445 EXPECT_TRUE(user_virtual_keyboard_2 ==
446 *selector.SelectVirtualKeyboard("c"));
447 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("d"));
448 EXPECT_TRUE(user_virtual_keyboard_2 ==
449 *selector.SelectVirtualKeyboard("d"));
450
451 // Request "b". user_virtual_keyboard_1 should be returned.
452 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("b"));
453 EXPECT_TRUE(user_virtual_keyboard_1 ==
454 *selector.SelectVirtualKeyboard("b"));
455
456 // Set user pref.
457 EXPECT_TRUE(selector.SetUserPreference("a", GURL("http://user2")));
458
459 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a"));
460 EXPECT_TRUE(user_virtual_keyboard_2 == // follow the user pref.
461 *selector.SelectVirtualKeyboard("a"));
462 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c"));
463 EXPECT_TRUE(user_virtual_keyboard_2 ==
464 *selector.SelectVirtualKeyboard("c"));
465
466 // Request "x". system_virtual_keyboard_2 should be returned (since it's
467 // added later than system_virtual_keyboard_1).
468 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x"));
469 EXPECT_TRUE(system_virtual_keyboard_1 ==
470 *selector.SelectVirtualKeyboard("x"));
471 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y"));
472 EXPECT_TRUE(system_virtual_keyboard_1 ==
473 *selector.SelectVirtualKeyboard("y"));
474 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a"));
475 EXPECT_TRUE(user_virtual_keyboard_2 == // follow the user pref.
476 *selector.SelectVirtualKeyboard("a"));
477
478 // Switch to system_virtual_keyboard_2.
479 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("z"));
480 EXPECT_TRUE(system_virtual_keyboard_2 ==
481 *selector.SelectVirtualKeyboard("z"));
482 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y"));
483 EXPECT_TRUE(system_virtual_keyboard_2 ==
484 *selector.SelectVirtualKeyboard("y"));
485 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a"));
486 EXPECT_TRUE(user_virtual_keyboard_2 == // follow the user pref.
487 *selector.SelectVirtualKeyboard("a"));
488
489 // Switch back to system_virtual_keyboard_2.
490 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("x"));
491 EXPECT_TRUE(system_virtual_keyboard_1 ==
492 *selector.SelectVirtualKeyboard("x"));
493 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("y"));
494 EXPECT_TRUE(system_virtual_keyboard_1 ==
495 *selector.SelectVirtualKeyboard("y"));
496
497 // Remove it.
498 selector.RemoveUserPreference("a");
499
500 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("a"));
501 EXPECT_TRUE(system_virtual_keyboard_1 == // user pref is no longer available
502 *selector.SelectVirtualKeyboard("a"));
503
504 // Switch back to user_virtual_keyboard_1.
505 ASSERT_TRUE(selector.SelectVirtualKeyboardWithoutPreferences("c"));
506 EXPECT_TRUE(user_virtual_keyboard_2 ==
507 *selector.SelectVirtualKeyboard("c"));
508 }
509
309 } // namespace input_method 510 } // namespace input_method
310 } // namespace chromeos 511 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/input_method/virtual_keyboard_selector.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698