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_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 |
OLD | NEW |