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