OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/autofill/core/browser/autofill_field.h" | 5 #include "components/autofill/core/browser/autofill_field.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
11 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
13 #include "components/autofill/core/browser/autofill_type.h" | 13 #include "components/autofill/core/browser/autofill_type.h" |
| 14 #include "components/autofill/core/browser/country_names.h" |
14 #include "components/autofill/core/browser/field_types.h" | 15 #include "components/autofill/core/browser/field_types.h" |
15 #include "components/autofill/core/common/autofill_util.h" | 16 #include "components/autofill/core/common/autofill_util.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
17 | 18 |
18 using base::ASCIIToUTF16; | 19 using base::ASCIIToUTF16; |
19 using base::StringToInt; | 20 using base::StringToInt; |
20 using base::UTF8ToUTF16; | 21 using base::UTF8ToUTF16; |
21 | 22 |
22 namespace autofill { | 23 namespace autofill { |
23 namespace { | 24 namespace { |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 }; | 132 }; |
132 | 133 |
133 // Returns the offset to be set within the credit card number field. | 134 // Returns the offset to be set within the credit card number field. |
134 size_t GetNumberOffset(size_t index, const TestCase& test) { | 135 size_t GetNumberOffset(size_t index, const TestCase& test) { |
135 size_t result = 0; | 136 size_t result = 0; |
136 for (size_t i = 0; i < index; ++i) | 137 for (size_t i = 0; i < index; ++i) |
137 result += test.splits_[i]; | 138 result += test.splits_[i]; |
138 return result; | 139 return result; |
139 } | 140 } |
140 | 141 |
141 TEST(AutofillFieldTest, Type) { | 142 class AutofillFieldTest : public testing::Test { |
| 143 public: |
| 144 AutofillFieldTest() { CountryNames::SetLocaleString("en-US"); } |
| 145 }; |
| 146 |
| 147 TEST_F(AutofillFieldTest, Type) { |
142 AutofillField field; | 148 AutofillField field; |
143 ASSERT_EQ(NO_SERVER_DATA, field.server_type()); | 149 ASSERT_EQ(NO_SERVER_DATA, field.server_type()); |
144 ASSERT_EQ(UNKNOWN_TYPE, field.heuristic_type()); | 150 ASSERT_EQ(UNKNOWN_TYPE, field.heuristic_type()); |
145 | 151 |
146 // |server_type_| is NO_SERVER_DATA, so |heuristic_type_| is returned. | 152 // |server_type_| is NO_SERVER_DATA, so |heuristic_type_| is returned. |
147 EXPECT_EQ(UNKNOWN_TYPE, field.Type().GetStorableType()); | 153 EXPECT_EQ(UNKNOWN_TYPE, field.Type().GetStorableType()); |
148 | 154 |
149 // Set the heuristic type and check it. | 155 // Set the heuristic type and check it. |
150 field.set_heuristic_type(NAME_FIRST); | 156 field.set_heuristic_type(NAME_FIRST); |
151 EXPECT_EQ(NAME_FIRST, field.Type().GetStorableType()); | 157 EXPECT_EQ(NAME_FIRST, field.Type().GetStorableType()); |
152 EXPECT_EQ(NAME, field.Type().group()); | 158 EXPECT_EQ(NAME, field.Type().group()); |
153 | 159 |
154 // Set the server type and check it. | 160 // Set the server type and check it. |
155 field.set_server_type(ADDRESS_BILLING_LINE1); | 161 field.set_server_type(ADDRESS_BILLING_LINE1); |
156 EXPECT_EQ(ADDRESS_HOME_LINE1, field.Type().GetStorableType()); | 162 EXPECT_EQ(ADDRESS_HOME_LINE1, field.Type().GetStorableType()); |
157 EXPECT_EQ(ADDRESS_BILLING, field.Type().group()); | 163 EXPECT_EQ(ADDRESS_BILLING, field.Type().group()); |
158 | 164 |
159 // Remove the server type to make sure the heuristic type is preserved. | 165 // Remove the server type to make sure the heuristic type is preserved. |
160 field.set_server_type(NO_SERVER_DATA); | 166 field.set_server_type(NO_SERVER_DATA); |
161 EXPECT_EQ(NAME_FIRST, field.Type().GetStorableType()); | 167 EXPECT_EQ(NAME_FIRST, field.Type().GetStorableType()); |
162 EXPECT_EQ(NAME, field.Type().group()); | 168 EXPECT_EQ(NAME, field.Type().group()); |
163 } | 169 } |
164 | 170 |
165 TEST(AutofillFieldTest, IsEmpty) { | 171 TEST_F(AutofillFieldTest, IsEmpty) { |
166 AutofillField field; | 172 AutofillField field; |
167 ASSERT_EQ(base::string16(), field.value); | 173 ASSERT_EQ(base::string16(), field.value); |
168 | 174 |
169 // Field value is empty. | 175 // Field value is empty. |
170 EXPECT_TRUE(field.IsEmpty()); | 176 EXPECT_TRUE(field.IsEmpty()); |
171 | 177 |
172 // Field value is non-empty. | 178 // Field value is non-empty. |
173 field.value = ASCIIToUTF16("Value"); | 179 field.value = ASCIIToUTF16("Value"); |
174 EXPECT_FALSE(field.IsEmpty()); | 180 EXPECT_FALSE(field.IsEmpty()); |
175 } | 181 } |
176 | 182 |
177 TEST(AutofillFieldTest, FieldSignature) { | 183 TEST_F(AutofillFieldTest, FieldSignature) { |
178 AutofillField field; | 184 AutofillField field; |
179 ASSERT_EQ(base::string16(), field.name); | 185 ASSERT_EQ(base::string16(), field.name); |
180 ASSERT_EQ(std::string(), field.form_control_type); | 186 ASSERT_EQ(std::string(), field.form_control_type); |
181 | 187 |
182 // Signature is empty. | 188 // Signature is empty. |
183 EXPECT_EQ("2085434232", field.FieldSignature()); | 189 EXPECT_EQ("2085434232", field.FieldSignature()); |
184 | 190 |
185 // Field name is set. | 191 // Field name is set. |
186 field.name = ASCIIToUTF16("Name"); | 192 field.name = ASCIIToUTF16("Name"); |
187 EXPECT_EQ("1606968241", field.FieldSignature()); | 193 EXPECT_EQ("1606968241", field.FieldSignature()); |
188 | 194 |
189 // Field form control type is set. | 195 // Field form control type is set. |
190 field.form_control_type = "text"; | 196 field.form_control_type = "text"; |
191 EXPECT_EQ("502192749", field.FieldSignature()); | 197 EXPECT_EQ("502192749", field.FieldSignature()); |
192 | 198 |
193 // Heuristic type does not affect FieldSignature. | 199 // Heuristic type does not affect FieldSignature. |
194 field.set_heuristic_type(NAME_FIRST); | 200 field.set_heuristic_type(NAME_FIRST); |
195 EXPECT_EQ("502192749", field.FieldSignature()); | 201 EXPECT_EQ("502192749", field.FieldSignature()); |
196 | 202 |
197 // Server type does not affect FieldSignature. | 203 // Server type does not affect FieldSignature. |
198 field.set_server_type(NAME_LAST); | 204 field.set_server_type(NAME_LAST); |
199 EXPECT_EQ("502192749", field.FieldSignature()); | 205 EXPECT_EQ("502192749", field.FieldSignature()); |
200 } | 206 } |
201 | 207 |
202 TEST(AutofillFieldTest, IsFieldFillable) { | 208 TEST_F(AutofillFieldTest, IsFieldFillable) { |
203 AutofillField field; | 209 AutofillField field; |
204 ASSERT_EQ(UNKNOWN_TYPE, field.Type().GetStorableType()); | 210 ASSERT_EQ(UNKNOWN_TYPE, field.Type().GetStorableType()); |
205 | 211 |
206 // Type is unknown. | 212 // Type is unknown. |
207 EXPECT_FALSE(field.IsFieldFillable()); | 213 EXPECT_FALSE(field.IsFieldFillable()); |
208 | 214 |
209 // Only heuristic type is set. | 215 // Only heuristic type is set. |
210 field.set_heuristic_type(NAME_FIRST); | 216 field.set_heuristic_type(NAME_FIRST); |
211 EXPECT_TRUE(field.IsFieldFillable()); | 217 EXPECT_TRUE(field.IsFieldFillable()); |
212 | 218 |
213 // Only server type is set. | 219 // Only server type is set. |
214 field.set_heuristic_type(UNKNOWN_TYPE); | 220 field.set_heuristic_type(UNKNOWN_TYPE); |
215 field.set_server_type(NAME_LAST); | 221 field.set_server_type(NAME_LAST); |
216 EXPECT_TRUE(field.IsFieldFillable()); | 222 EXPECT_TRUE(field.IsFieldFillable()); |
217 | 223 |
218 // Both types set. | 224 // Both types set. |
219 field.set_heuristic_type(NAME_FIRST); | 225 field.set_heuristic_type(NAME_FIRST); |
220 field.set_server_type(NAME_LAST); | 226 field.set_server_type(NAME_LAST); |
221 EXPECT_TRUE(field.IsFieldFillable()); | 227 EXPECT_TRUE(field.IsFieldFillable()); |
222 | 228 |
223 // Field has autocomplete="off" set. Since autofill was able to make a | 229 // Field has autocomplete="off" set. Since autofill was able to make a |
224 // prediction, it is still considered a fillable field. | 230 // prediction, it is still considered a fillable field. |
225 field.should_autocomplete = false; | 231 field.should_autocomplete = false; |
226 EXPECT_TRUE(field.IsFieldFillable()); | 232 EXPECT_TRUE(field.IsFieldFillable()); |
227 } | 233 } |
228 | 234 |
229 // Verify that non credit card related fields with the autocomplete attribute | 235 // Verify that non credit card related fields with the autocomplete attribute |
230 // set to off don't get filled on desktop. | 236 // set to off don't get filled on desktop. |
231 TEST(AutofillFieldTest, FillFormField_AutocompleteOff_AddressField) { | 237 TEST_F(AutofillFieldTest, FillFormField_AutocompleteOff_AddressField) { |
232 AutofillField field; | 238 AutofillField field; |
233 field.should_autocomplete = false; | 239 field.should_autocomplete = false; |
234 | 240 |
235 // Non credit card related field. | 241 // Non credit card related field. |
236 AutofillField::FillFormField(field, ASCIIToUTF16("Test"), "en-US", "en-US", | 242 AutofillField::FillFormField(field, ASCIIToUTF16("Test"), "en-US", "en-US", |
237 &field); | 243 &field); |
238 | 244 |
239 // Verifiy that the field is filled on mobile but not on desktop. | 245 // Verifiy that the field is filled on mobile but not on desktop. |
240 if (IsDesktopPlatform()) { | 246 if (IsDesktopPlatform()) { |
241 EXPECT_EQ(base::string16(), field.value); | 247 EXPECT_EQ(base::string16(), field.value); |
242 } else { | 248 } else { |
243 EXPECT_EQ(ASCIIToUTF16("Test"), field.value); | 249 EXPECT_EQ(ASCIIToUTF16("Test"), field.value); |
244 } | 250 } |
245 } | 251 } |
246 | 252 |
247 // Verify that credit card related fields with the autocomplete attribute | 253 // Verify that credit card related fields with the autocomplete attribute |
248 // set to off get filled. | 254 // set to off get filled. |
249 TEST(AutofillFieldTest, FillFormField_AutocompleteOff_CreditCardField) { | 255 TEST_F(AutofillFieldTest, FillFormField_AutocompleteOff_CreditCardField) { |
250 AutofillField field; | 256 AutofillField field; |
251 field.should_autocomplete = false; | 257 field.should_autocomplete = false; |
252 | 258 |
253 // Credit card related field. | 259 // Credit card related field. |
254 field.set_heuristic_type(CREDIT_CARD_NUMBER); | 260 field.set_heuristic_type(CREDIT_CARD_NUMBER); |
255 AutofillField::FillFormField(field, ASCIIToUTF16("4111111111111111"), "en-US", | 261 AutofillField::FillFormField(field, ASCIIToUTF16("4111111111111111"), "en-US", |
256 "en-US", &field); | 262 "en-US", &field); |
257 | 263 |
258 // Verify that the field is filled. | 264 // Verify that the field is filled. |
259 EXPECT_EQ(ASCIIToUTF16("4111111111111111"), field.value); | 265 EXPECT_EQ(ASCIIToUTF16("4111111111111111"), field.value); |
260 } | 266 } |
261 | 267 |
262 TEST(AutofillFieldTest, FillPhoneNumber) { | 268 TEST_F(AutofillFieldTest, FillPhoneNumber) { |
263 AutofillField field; | 269 AutofillField field; |
264 field.SetHtmlType(HTML_TYPE_TEL_LOCAL_PREFIX, HtmlFieldMode()); | 270 field.SetHtmlType(HTML_TYPE_TEL_LOCAL_PREFIX, HtmlFieldMode()); |
265 | 271 |
266 // Fill with a non-phone number; should fill normally. | 272 // Fill with a non-phone number; should fill normally. |
267 AutofillField::FillFormField( | 273 AutofillField::FillFormField( |
268 field, ASCIIToUTF16("Oh hai"), "en-US", "en-US", &field); | 274 field, ASCIIToUTF16("Oh hai"), "en-US", "en-US", &field); |
269 EXPECT_EQ(ASCIIToUTF16("Oh hai"), field.value); | 275 EXPECT_EQ(ASCIIToUTF16("Oh hai"), field.value); |
270 | 276 |
271 // Fill with a phone number; should fill just the prefix. | 277 // Fill with a phone number; should fill just the prefix. |
272 AutofillField::FillFormField( | 278 AutofillField::FillFormField( |
273 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field); | 279 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field); |
274 EXPECT_EQ(ASCIIToUTF16("555"), field.value); | 280 EXPECT_EQ(ASCIIToUTF16("555"), field.value); |
275 | 281 |
276 // Now reset the type, and set a max-length instead. | 282 // Now reset the type, and set a max-length instead. |
277 field.SetHtmlType(HTML_TYPE_UNSPECIFIED, HtmlFieldMode()); | 283 field.SetHtmlType(HTML_TYPE_UNSPECIFIED, HtmlFieldMode()); |
278 field.set_heuristic_type(PHONE_HOME_NUMBER); | 284 field.set_heuristic_type(PHONE_HOME_NUMBER); |
279 field.max_length = 4; | 285 field.max_length = 4; |
280 | 286 |
281 // Fill with a phone-number; should fill just the suffix. | 287 // Fill with a phone-number; should fill just the suffix. |
282 AutofillField::FillFormField( | 288 AutofillField::FillFormField( |
283 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field); | 289 field, ASCIIToUTF16("5551234"), "en-US", "en-US", &field); |
284 EXPECT_EQ(ASCIIToUTF16("1234"), field.value); | 290 EXPECT_EQ(ASCIIToUTF16("1234"), field.value); |
285 } | 291 } |
286 | 292 |
287 TEST(AutofillFieldTest, FillSelectControlByValue) { | 293 TEST_F(AutofillFieldTest, FillSelectControlByValue) { |
288 std::vector<const char*> kOptions = { | 294 std::vector<const char*> kOptions = { |
289 "Eenie", "Meenie", "Miney", "Mo", | 295 "Eenie", "Meenie", "Miney", "Mo", |
290 }; | 296 }; |
291 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()), | 297 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()), |
292 base::string16()); | 298 base::string16()); |
293 | 299 |
294 // Set semantically empty contents for each option, so that only the values | 300 // Set semantically empty contents for each option, so that only the values |
295 // can be used for matching. | 301 // can be used for matching. |
296 for (size_t i = 0; i < field.option_contents.size(); ++i) | 302 for (size_t i = 0; i < field.option_contents.size(); ++i) |
297 field.option_contents[i] = base::SizeTToString16(i); | 303 field.option_contents[i] = base::SizeTToString16(i); |
298 | 304 |
299 AutofillField::FillFormField( | 305 AutofillField::FillFormField( |
300 field, ASCIIToUTF16("Meenie"), "en-US", "en-US", &field); | 306 field, ASCIIToUTF16("Meenie"), "en-US", "en-US", &field); |
301 EXPECT_EQ(ASCIIToUTF16("Meenie"), field.value); | 307 EXPECT_EQ(ASCIIToUTF16("Meenie"), field.value); |
302 } | 308 } |
303 | 309 |
304 TEST(AutofillFieldTest, FillSelectControlByContents) { | 310 TEST_F(AutofillFieldTest, FillSelectControlByContents) { |
305 std::vector<const char*> kOptions = { | 311 std::vector<const char*> kOptions = { |
306 "Eenie", "Meenie", "Miney", "Mo", | 312 "Eenie", "Meenie", "Miney", "Mo", |
307 }; | 313 }; |
308 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()), | 314 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()), |
309 base::string16()); | 315 base::string16()); |
310 | 316 |
311 // Set semantically empty values for each option, so that only the contents | 317 // Set semantically empty values for each option, so that only the contents |
312 // can be used for matching. | 318 // can be used for matching. |
313 for (size_t i = 0; i < field.option_values.size(); ++i) | 319 for (size_t i = 0; i < field.option_values.size(); ++i) |
314 field.option_values[i] = base::SizeTToString16(i); | 320 field.option_values[i] = base::SizeTToString16(i); |
315 | 321 |
316 AutofillField::FillFormField( | 322 AutofillField::FillFormField( |
317 field, ASCIIToUTF16("Miney"), "en-US", "en-US", &field); | 323 field, ASCIIToUTF16("Miney"), "en-US", "en-US", &field); |
318 EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney". | 324 EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney". |
319 } | 325 } |
320 | 326 |
321 TEST(AutofillFieldTest, FillSelectControlWithFullCountryNames) { | 327 TEST_F(AutofillFieldTest, FillSelectControlWithFullCountryNames) { |
322 std::vector<const char*> kCountries = {"Albania", "Canada"}; | 328 std::vector<const char*> kCountries = {"Albania", "Canada"}; |
323 AutofillField field( | 329 AutofillField field( |
324 GenerateSelectFieldWithOptions(kCountries, kCountries.size()), | 330 GenerateSelectFieldWithOptions(kCountries, kCountries.size()), |
325 base::string16()); | 331 base::string16()); |
326 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); | 332 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); |
327 | 333 |
328 AutofillField::FillFormField( | 334 AutofillField::FillFormField( |
329 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); | 335 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); |
330 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); | 336 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); |
331 } | 337 } |
332 | 338 |
333 TEST(AutofillFieldTest, FillSelectControlWithAbbreviatedCountryNames) { | 339 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedCountryNames) { |
334 std::vector<const char*> kCountries = {"AL", "CA"}; | 340 std::vector<const char*> kCountries = {"AL", "CA"}; |
335 AutofillField field( | 341 AutofillField field( |
336 GenerateSelectFieldWithOptions(kCountries, kCountries.size()), | 342 GenerateSelectFieldWithOptions(kCountries, kCountries.size()), |
337 base::string16()); | 343 base::string16()); |
338 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); | 344 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); |
339 | 345 |
340 AutofillField::FillFormField( | 346 AutofillField::FillFormField( |
341 field, ASCIIToUTF16("Canada"), "en-US", "en-US", &field); | 347 field, ASCIIToUTF16("Canada"), "en-US", "en-US", &field); |
342 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); | 348 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); |
343 } | 349 } |
344 | 350 |
345 TEST(AutofillFieldTest, FillSelectControlWithFullStateNames) { | 351 TEST_F(AutofillFieldTest, FillSelectControlWithFullStateNames) { |
346 std::vector<const char*> kStates = {"Alabama", "California"}; | 352 std::vector<const char*> kStates = {"Alabama", "California"}; |
347 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), | 353 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), |
348 base::string16()); | 354 base::string16()); |
349 field.set_heuristic_type(ADDRESS_HOME_STATE); | 355 field.set_heuristic_type(ADDRESS_HOME_STATE); |
350 | 356 |
351 AutofillField::FillFormField( | 357 AutofillField::FillFormField( |
352 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); | 358 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); |
353 EXPECT_EQ(ASCIIToUTF16("California"), field.value); | 359 EXPECT_EQ(ASCIIToUTF16("California"), field.value); |
354 } | 360 } |
355 | 361 |
356 TEST(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) { | 362 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) { |
357 std::vector<const char*> kStates = {"AL", "CA"}; | 363 std::vector<const char*> kStates = {"AL", "CA"}; |
358 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), | 364 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), |
359 base::string16()); | 365 base::string16()); |
360 field.set_heuristic_type(ADDRESS_HOME_STATE); | 366 field.set_heuristic_type(ADDRESS_HOME_STATE); |
361 | 367 |
362 AutofillField::FillFormField( | 368 AutofillField::FillFormField( |
363 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); | 369 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); |
364 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); | 370 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); |
365 } | 371 } |
366 | 372 |
367 TEST(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) { | 373 TEST_F(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) { |
368 { | 374 { |
369 std::vector<const char*> kStates = { | 375 std::vector<const char*> kStates = { |
370 "SC - South Carolina", "CA - California", "NC - North Carolina", | 376 "SC - South Carolina", "CA - California", "NC - North Carolina", |
371 }; | 377 }; |
372 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), | 378 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), |
373 base::string16()); | 379 base::string16()); |
374 field.set_heuristic_type(ADDRESS_HOME_STATE); | 380 field.set_heuristic_type(ADDRESS_HOME_STATE); |
375 | 381 |
376 AutofillField::FillFormField( | 382 AutofillField::FillFormField( |
377 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); | 383 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), | 424 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), |
419 base::string16()); | 425 base::string16()); |
420 field.set_heuristic_type(ADDRESS_HOME_STATE); | 426 field.set_heuristic_type(ADDRESS_HOME_STATE); |
421 | 427 |
422 AutofillField::FillFormField( | 428 AutofillField::FillFormField( |
423 field, ASCIIToUTF16("North Carolina"), "en-US", "en-US", &field); | 429 field, ASCIIToUTF16("North Carolina"), "en-US", "en-US", &field); |
424 EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value); | 430 EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value); |
425 } | 431 } |
426 } | 432 } |
427 | 433 |
428 TEST(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) { | 434 TEST_F(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) { |
429 { | 435 { |
430 std::vector<const char*> kStates = { | 436 std::vector<const char*> kStates = { |
431 "NC - North Carolina", "CA - California", | 437 "NC - North Carolina", "CA - California", |
432 }; | 438 }; |
433 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), | 439 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), |
434 base::string16()); | 440 base::string16()); |
435 field.set_heuristic_type(ADDRESS_HOME_STATE); | 441 field.set_heuristic_type(ADDRESS_HOME_STATE); |
436 | 442 |
437 AutofillField::FillFormField( | 443 AutofillField::FillFormField( |
438 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); | 444 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); |
439 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value); | 445 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value); |
440 } | 446 } |
441 | 447 |
442 { | 448 { |
443 std::vector<const char*> kNotStates = { | 449 std::vector<const char*> kNotStates = { |
444 "NCNCA", "SCNCA", | 450 "NCNCA", "SCNCA", |
445 }; | 451 }; |
446 AutofillField field( | 452 AutofillField field( |
447 GenerateSelectFieldWithOptions(kNotStates, kNotStates.size()), | 453 GenerateSelectFieldWithOptions(kNotStates, kNotStates.size()), |
448 base::string16()); | 454 base::string16()); |
449 field.set_heuristic_type(ADDRESS_HOME_STATE); | 455 field.set_heuristic_type(ADDRESS_HOME_STATE); |
450 | 456 |
451 AutofillField::FillFormField( | 457 AutofillField::FillFormField( |
452 field, ASCIIToUTF16("NC"), "en-US", "en-US", &field); | 458 field, ASCIIToUTF16("NC"), "en-US", "en-US", &field); |
453 EXPECT_EQ(base::string16(), field.value); | 459 EXPECT_EQ(base::string16(), field.value); |
454 } | 460 } |
455 } | 461 } |
456 | 462 |
457 TEST(AutofillFieldTest, FillSelectControlWithExpirationMonth) { | 463 TEST_F(AutofillFieldTest, FillSelectControlWithExpirationMonth) { |
458 typedef struct { | 464 typedef struct { |
459 std::vector<const char*> select_values; | 465 std::vector<const char*> select_values; |
460 std::vector<const char*> select_contents; | 466 std::vector<const char*> select_contents; |
461 } TestCase; | 467 } TestCase; |
462 | 468 |
463 TestCase test_cases[] = { | 469 TestCase test_cases[] = { |
464 // Values start at 1. | 470 // Values start at 1. |
465 {{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}, | 471 {{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}, |
466 NotNumericMonthsContentsNoPlaceholder()}, | 472 NotNumericMonthsContentsNoPlaceholder()}, |
467 // Values start at 0. | 473 // Values start at 0. |
(...skipping 15 matching lines...) Expand all Loading... |
483 | 489 |
484 for (TestCase test_case : test_cases) { | 490 for (TestCase test_case : test_cases) { |
485 ASSERT_EQ(test_case.select_values.size(), test_case.select_contents.size()); | 491 ASSERT_EQ(test_case.select_values.size(), test_case.select_contents.size()); |
486 | 492 |
487 TestFillingExpirationMonth(test_case.select_values, | 493 TestFillingExpirationMonth(test_case.select_values, |
488 test_case.select_contents, | 494 test_case.select_contents, |
489 test_case.select_values.size()); | 495 test_case.select_values.size()); |
490 } | 496 } |
491 } | 497 } |
492 | 498 |
493 TEST(AutofillFieldTest, FillSelectControlWithAbbreviatedMonthName) { | 499 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedMonthName) { |
494 std::vector<const char*> kMonthsAbbreviated = { | 500 std::vector<const char*> kMonthsAbbreviated = { |
495 "Jan", "Feb", "Mar", "Apr", "May", "Jun", | 501 "Jan", "Feb", "Mar", "Apr", "May", "Jun", |
496 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", | 502 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", |
497 }; | 503 }; |
498 AutofillField field(GenerateSelectFieldWithOptions(kMonthsAbbreviated, | 504 AutofillField field(GenerateSelectFieldWithOptions(kMonthsAbbreviated, |
499 kMonthsAbbreviated.size()), | 505 kMonthsAbbreviated.size()), |
500 base::string16()); | 506 base::string16()); |
501 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); | 507 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); |
502 | 508 |
503 AutofillField::FillFormField( | 509 AutofillField::FillFormField( |
504 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); | 510 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); |
505 EXPECT_EQ(ASCIIToUTF16("Apr"), field.value); | 511 EXPECT_EQ(ASCIIToUTF16("Apr"), field.value); |
506 } | 512 } |
507 | 513 |
508 TEST(AutofillFieldTest, FillSelectControlWithFullMonthName) { | 514 TEST_F(AutofillFieldTest, FillSelectControlWithFullMonthName) { |
509 std::vector<const char*> kMonthsFull = { | 515 std::vector<const char*> kMonthsFull = { |
510 "January", "February", "March", "April", "May", "June", | 516 "January", "February", "March", "April", "May", "June", |
511 "July", "August", "September", "October", "November", "December", | 517 "July", "August", "September", "October", "November", "December", |
512 }; | 518 }; |
513 AutofillField field( | 519 AutofillField field( |
514 GenerateSelectFieldWithOptions(kMonthsFull, kMonthsFull.size()), | 520 GenerateSelectFieldWithOptions(kMonthsFull, kMonthsFull.size()), |
515 base::string16()); | 521 base::string16()); |
516 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); | 522 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); |
517 | 523 |
518 AutofillField::FillFormField( | 524 AutofillField::FillFormField( |
519 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); | 525 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); |
520 EXPECT_EQ(ASCIIToUTF16("April"), field.value); | 526 EXPECT_EQ(ASCIIToUTF16("April"), field.value); |
521 } | 527 } |
522 | 528 |
523 TEST(AutofillFieldTest, FillSelectControlWithFrenchMonthName) { | 529 TEST_F(AutofillFieldTest, FillSelectControlWithFrenchMonthName) { |
524 std::vector<const char*> kMonthsFrench = {"JANV", "FÉVR.", "MARS", | 530 std::vector<const char*> kMonthsFrench = {"JANV", "FÉVR.", "MARS", |
525 "décembre"}; | 531 "décembre"}; |
526 AutofillField field( | 532 AutofillField field( |
527 GenerateSelectFieldWithOptions(kMonthsFrench, kMonthsFrench.size()), | 533 GenerateSelectFieldWithOptions(kMonthsFrench, kMonthsFrench.size()), |
528 base::string16()); | 534 base::string16()); |
529 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); | 535 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); |
530 | 536 |
531 AutofillField::FillFormField( | 537 AutofillField::FillFormField( |
532 field, ASCIIToUTF16("02"), "fr-FR", "fr-FR", &field); | 538 field, ASCIIToUTF16("02"), "fr-FR", "fr-FR", &field); |
533 EXPECT_EQ(UTF8ToUTF16("FÉVR."), field.value); | 539 EXPECT_EQ(UTF8ToUTF16("FÉVR."), field.value); |
534 | 540 |
535 AutofillField::FillFormField( | 541 AutofillField::FillFormField( |
536 field, ASCIIToUTF16("01"), "fr-FR", "fr-FR", &field); | 542 field, ASCIIToUTF16("01"), "fr-FR", "fr-FR", &field); |
537 EXPECT_EQ(UTF8ToUTF16("JANV"), field.value); | 543 EXPECT_EQ(UTF8ToUTF16("JANV"), field.value); |
538 | 544 |
539 AutofillField::FillFormField( | 545 AutofillField::FillFormField( |
540 field, ASCIIToUTF16("12"), "fr-FR", "fr-FR", &field); | 546 field, ASCIIToUTF16("12"), "fr-FR", "fr-FR", &field); |
541 EXPECT_EQ(UTF8ToUTF16("décembre"), field.value); | 547 EXPECT_EQ(UTF8ToUTF16("décembre"), field.value); |
542 } | 548 } |
543 | 549 |
544 TEST(AutofillFieldTest, FillSelectControlWithNumericMonthSansLeadingZero) { | 550 TEST_F(AutofillFieldTest, FillSelectControlWithNumericMonthSansLeadingZero) { |
545 std::vector<const char*> kMonthsNumeric = { | 551 std::vector<const char*> kMonthsNumeric = { |
546 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", | 552 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", |
547 }; | 553 }; |
548 AutofillField field( | 554 AutofillField field( |
549 GenerateSelectFieldWithOptions(kMonthsNumeric, kMonthsNumeric.size()), | 555 GenerateSelectFieldWithOptions(kMonthsNumeric, kMonthsNumeric.size()), |
550 base::string16()); | 556 base::string16()); |
551 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); | 557 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); |
552 | 558 |
553 AutofillField::FillFormField( | 559 AutofillField::FillFormField( |
554 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); | 560 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); |
555 EXPECT_EQ(ASCIIToUTF16("4"), field.value); | 561 EXPECT_EQ(ASCIIToUTF16("4"), field.value); |
556 } | 562 } |
557 | 563 |
558 TEST(AutofillFieldTest, FillSelectControlWithTwoDigitCreditCardYear) { | 564 TEST_F(AutofillFieldTest, FillSelectControlWithTwoDigitCreditCardYear) { |
559 std::vector<const char*> kYears = {"12", "13", "14", "15", | 565 std::vector<const char*> kYears = {"12", "13", "14", "15", |
560 "16", "17", "18", "19"}; | 566 "16", "17", "18", "19"}; |
561 AutofillField field(GenerateSelectFieldWithOptions(kYears, kYears.size()), | 567 AutofillField field(GenerateSelectFieldWithOptions(kYears, kYears.size()), |
562 base::string16()); | 568 base::string16()); |
563 field.set_heuristic_type(CREDIT_CARD_EXP_2_DIGIT_YEAR); | 569 field.set_heuristic_type(CREDIT_CARD_EXP_2_DIGIT_YEAR); |
564 | 570 |
565 AutofillField::FillFormField( | 571 AutofillField::FillFormField( |
566 field, ASCIIToUTF16("2017"), "en-US", "en-US", &field); | 572 field, ASCIIToUTF16("2017"), "en-US", "en-US", &field); |
567 EXPECT_EQ(ASCIIToUTF16("17"), field.value); | 573 EXPECT_EQ(ASCIIToUTF16("17"), field.value); |
568 } | 574 } |
569 | 575 |
570 TEST(AutofillFieldTest, FillSelectControlWithCreditCardType) { | 576 TEST_F(AutofillFieldTest, FillSelectControlWithCreditCardType) { |
571 std::vector<const char*> kCreditCardTypes = {"Visa", "Master Card", "AmEx", | 577 std::vector<const char*> kCreditCardTypes = {"Visa", "Master Card", "AmEx", |
572 "discover"}; | 578 "discover"}; |
573 AutofillField field( | 579 AutofillField field( |
574 GenerateSelectFieldWithOptions(kCreditCardTypes, kCreditCardTypes.size()), | 580 GenerateSelectFieldWithOptions(kCreditCardTypes, kCreditCardTypes.size()), |
575 base::string16()); | 581 base::string16()); |
576 field.set_heuristic_type(CREDIT_CARD_TYPE); | 582 field.set_heuristic_type(CREDIT_CARD_TYPE); |
577 | 583 |
578 // Normal case: | 584 // Normal case: |
579 AutofillField::FillFormField( | 585 AutofillField::FillFormField( |
580 field, ASCIIToUTF16("Visa"), "en-US", "en-US", &field); | 586 field, ASCIIToUTF16("Visa"), "en-US", "en-US", &field); |
581 EXPECT_EQ(ASCIIToUTF16("Visa"), field.value); | 587 EXPECT_EQ(ASCIIToUTF16("Visa"), field.value); |
582 | 588 |
583 // Filling should be able to handle intervening whitespace: | 589 // Filling should be able to handle intervening whitespace: |
584 AutofillField::FillFormField( | 590 AutofillField::FillFormField( |
585 field, ASCIIToUTF16("MasterCard"), "en-US", "en-US", &field); | 591 field, ASCIIToUTF16("MasterCard"), "en-US", "en-US", &field); |
586 EXPECT_EQ(ASCIIToUTF16("Master Card"), field.value); | 592 EXPECT_EQ(ASCIIToUTF16("Master Card"), field.value); |
587 | 593 |
588 // American Express is sometimes abbreviated as AmEx: | 594 // American Express is sometimes abbreviated as AmEx: |
589 AutofillField::FillFormField( | 595 AutofillField::FillFormField( |
590 field, ASCIIToUTF16("American Express"), "en-US", "en-US", &field); | 596 field, ASCIIToUTF16("American Express"), "en-US", "en-US", &field); |
591 EXPECT_EQ(ASCIIToUTF16("AmEx"), field.value); | 597 EXPECT_EQ(ASCIIToUTF16("AmEx"), field.value); |
592 | 598 |
593 // Case insensitivity: | 599 // Case insensitivity: |
594 AutofillField::FillFormField( | 600 AutofillField::FillFormField( |
595 field, ASCIIToUTF16("Discover"), "en-US", "en-US", &field); | 601 field, ASCIIToUTF16("Discover"), "en-US", "en-US", &field); |
596 EXPECT_EQ(ASCIIToUTF16("discover"), field.value); | 602 EXPECT_EQ(ASCIIToUTF16("discover"), field.value); |
597 } | 603 } |
598 | 604 |
599 TEST(AutofillFieldTest, FillMonthControl) { | 605 TEST_F(AutofillFieldTest, FillMonthControl) { |
600 AutofillField field; | 606 AutofillField field; |
601 field.form_control_type = "month"; | 607 field.form_control_type = "month"; |
602 | 608 |
603 // Try a month with two digits. | 609 // Try a month with two digits. |
604 AutofillField::FillFormField( | 610 AutofillField::FillFormField( |
605 field, ASCIIToUTF16("12/2017"), "en-US", "en-US", &field); | 611 field, ASCIIToUTF16("12/2017"), "en-US", "en-US", &field); |
606 EXPECT_EQ(ASCIIToUTF16("2017-12"), field.value); | 612 EXPECT_EQ(ASCIIToUTF16("2017-12"), field.value); |
607 | 613 |
608 // Try a month with a leading zero. | 614 // Try a month with a leading zero. |
609 AutofillField::FillFormField( | 615 AutofillField::FillFormField( |
610 field, ASCIIToUTF16("03/2019"), "en-US", "en-US", &field); | 616 field, ASCIIToUTF16("03/2019"), "en-US", "en-US", &field); |
611 EXPECT_EQ(ASCIIToUTF16("2019-03"), field.value); | 617 EXPECT_EQ(ASCIIToUTF16("2019-03"), field.value); |
612 | 618 |
613 // Try a month without a leading zero. | 619 // Try a month without a leading zero. |
614 AutofillField::FillFormField( | 620 AutofillField::FillFormField( |
615 field, ASCIIToUTF16("4/2018"), "en-US", "en-US", &field); | 621 field, ASCIIToUTF16("4/2018"), "en-US", "en-US", &field); |
616 EXPECT_EQ(ASCIIToUTF16("2018-04"), field.value); | 622 EXPECT_EQ(ASCIIToUTF16("2018-04"), field.value); |
617 } | 623 } |
618 | 624 |
619 TEST(AutofillFieldTest, FillStreetAddressTextArea) { | 625 TEST_F(AutofillFieldTest, FillStreetAddressTextArea) { |
620 AutofillField field; | 626 AutofillField field; |
621 field.form_control_type = "textarea"; | 627 field.form_control_type = "textarea"; |
622 | 628 |
623 base::string16 value = ASCIIToUTF16("123 Fake St.\n" | 629 base::string16 value = ASCIIToUTF16("123 Fake St.\n" |
624 "Apt. 42"); | 630 "Apt. 42"); |
625 AutofillField::FillFormField(field, value, "en-US", "en-US", &field); | 631 AutofillField::FillFormField(field, value, "en-US", "en-US", &field); |
626 EXPECT_EQ(value, field.value); | 632 EXPECT_EQ(value, field.value); |
627 | 633 |
628 base::string16 ja_value = UTF8ToUTF16("桜丘町26-1\n" | 634 base::string16 ja_value = UTF8ToUTF16("桜丘町26-1\n" |
629 "セルリアンタワー6階"); | 635 "セルリアンタワー6階"); |
630 AutofillField::FillFormField(field, ja_value, "ja-JP", "en-US", &field); | 636 AutofillField::FillFormField(field, ja_value, "ja-JP", "en-US", &field); |
631 EXPECT_EQ(ja_value, field.value); | 637 EXPECT_EQ(ja_value, field.value); |
632 } | 638 } |
633 | 639 |
634 TEST(AutofillFieldTest, FillStreetAddressTextField) { | 640 TEST_F(AutofillFieldTest, FillStreetAddressTextField) { |
635 AutofillField field; | 641 AutofillField field; |
636 field.form_control_type = "text"; | 642 field.form_control_type = "text"; |
637 field.set_server_type(ADDRESS_HOME_STREET_ADDRESS); | 643 field.set_server_type(ADDRESS_HOME_STREET_ADDRESS); |
638 | 644 |
639 base::string16 value = ASCIIToUTF16("123 Fake St.\n" | 645 base::string16 value = ASCIIToUTF16("123 Fake St.\n" |
640 "Apt. 42"); | 646 "Apt. 42"); |
641 AutofillField::FillFormField(field, value, "en-US", "en-US", &field); | 647 AutofillField::FillFormField(field, value, "en-US", "en-US", &field); |
642 EXPECT_EQ(ASCIIToUTF16("123 Fake St., Apt. 42"), field.value); | 648 EXPECT_EQ(ASCIIToUTF16("123 Fake St., Apt. 42"), field.value); |
643 | 649 |
644 AutofillField::FillFormField(field, | 650 AutofillField::FillFormField(field, |
645 UTF8ToUTF16("桜丘町26-1\n" | 651 UTF8ToUTF16("桜丘町26-1\n" |
646 "セルリアンタワー6階"), | 652 "セルリアンタワー6階"), |
647 "ja-JP", | 653 "ja-JP", |
648 "en-US", | 654 "en-US", |
649 &field); | 655 &field); |
650 EXPECT_EQ(UTF8ToUTF16("桜丘町26-1セルリアンタワー6階"), field.value); | 656 EXPECT_EQ(UTF8ToUTF16("桜丘町26-1セルリアンタワー6階"), field.value); |
651 } | 657 } |
652 | 658 |
653 TEST(AutofillFieldTest, FillCreditCardNumberWithoutSplits) { | 659 TEST_F(AutofillFieldTest, FillCreditCardNumberWithoutSplits) { |
654 // Case 1: card number without any spilt. | 660 // Case 1: card number without any spilt. |
655 AutofillField cc_number_full; | 661 AutofillField cc_number_full; |
656 cc_number_full.set_heuristic_type(CREDIT_CARD_NUMBER); | 662 cc_number_full.set_heuristic_type(CREDIT_CARD_NUMBER); |
657 AutofillField::FillFormField(cc_number_full, | 663 AutofillField::FillFormField(cc_number_full, |
658 ASCIIToUTF16("4111111111111111"), | 664 ASCIIToUTF16("4111111111111111"), |
659 "en-US", | 665 "en-US", |
660 "en-US", | 666 "en-US", |
661 &cc_number_full); | 667 &cc_number_full); |
662 | 668 |
663 // Verify that full card-number shall get fill properly. | 669 // Verify that full card-number shall get fill properly. |
664 EXPECT_EQ(ASCIIToUTF16("4111111111111111"), cc_number_full.value); | 670 EXPECT_EQ(ASCIIToUTF16("4111111111111111"), cc_number_full.value); |
665 EXPECT_EQ(0U, cc_number_full.credit_card_number_offset()); | 671 EXPECT_EQ(0U, cc_number_full.credit_card_number_offset()); |
666 } | 672 } |
667 | 673 |
668 TEST(AutofillFieldTest, FillCreditCardNumberWithEqualSizeSplits) { | 674 TEST_F(AutofillFieldTest, FillCreditCardNumberWithEqualSizeSplits) { |
669 // Case 2: card number broken up into four equal groups, of length 4. | 675 // Case 2: card number broken up into four equal groups, of length 4. |
670 TestCase test; | 676 TestCase test; |
671 test.card_number_ = "5187654321098765"; | 677 test.card_number_ = "5187654321098765"; |
672 test.total_spilts_ = 4; | 678 test.total_spilts_ = 4; |
673 int splits[] = {4, 4, 4, 4}; | 679 int splits[] = {4, 4, 4, 4}; |
674 test.splits_ = std::vector<int>(splits, splits + arraysize(splits)); | 680 test.splits_ = std::vector<int>(splits, splits + arraysize(splits)); |
675 std::string results[] = {"5187", "6543", "2109", "8765"}; | 681 std::string results[] = {"5187", "6543", "2109", "8765"}; |
676 test.expected_results_ = | 682 test.expected_results_ = |
677 std::vector<std::string>(results, results + arraysize(results)); | 683 std::vector<std::string>(results, results + arraysize(results)); |
678 | 684 |
(...skipping 22 matching lines...) Expand all Loading... |
701 AutofillField::FillFormField(cc_number_full, | 707 AutofillField::FillFormField(cc_number_full, |
702 ASCIIToUTF16(test.card_number_), | 708 ASCIIToUTF16(test.card_number_), |
703 "en-US", | 709 "en-US", |
704 "en-US", | 710 "en-US", |
705 &cc_number_full); | 711 &cc_number_full); |
706 | 712 |
707 // Verify for expected results. | 713 // Verify for expected results. |
708 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value); | 714 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value); |
709 } | 715 } |
710 | 716 |
711 TEST(AutofillFieldTest, FillCreditCardNumberWithUnequalSizeSplits) { | 717 TEST_F(AutofillFieldTest, FillCreditCardNumberWithUnequalSizeSplits) { |
712 // Case 3: card with 15 digits number, broken up into three unequal groups, of | 718 // Case 3: card with 15 digits number, broken up into three unequal groups, of |
713 // lengths 4, 6, and 5. | 719 // lengths 4, 6, and 5. |
714 TestCase test; | 720 TestCase test; |
715 test.card_number_ = "423456789012345"; | 721 test.card_number_ = "423456789012345"; |
716 test.total_spilts_ = 3; | 722 test.total_spilts_ = 3; |
717 int splits[] = {4, 6, 5}; | 723 int splits[] = {4, 6, 5}; |
718 test.splits_ = std::vector<int>(splits, splits + arraysize(splits)); | 724 test.splits_ = std::vector<int>(splits, splits + arraysize(splits)); |
719 std::string results[] = {"4234", "567890", "12345"}; | 725 std::string results[] = {"4234", "567890", "12345"}; |
720 test.expected_results_ = | 726 test.expected_results_ = |
721 std::vector<std::string>(results, results + arraysize(results)); | 727 std::vector<std::string>(results, results + arraysize(results)); |
(...skipping 25 matching lines...) Expand all Loading... |
747 AutofillField::FillFormField(cc_number_full, | 753 AutofillField::FillFormField(cc_number_full, |
748 ASCIIToUTF16(test.card_number_), | 754 ASCIIToUTF16(test.card_number_), |
749 "en-US", | 755 "en-US", |
750 "en-US", | 756 "en-US", |
751 &cc_number_full); | 757 &cc_number_full); |
752 | 758 |
753 // Verify for expected results. | 759 // Verify for expected results. |
754 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value); | 760 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value); |
755 } | 761 } |
756 | 762 |
757 TEST(AutofillFieldTest, FindValueInSelectControl) { | 763 TEST_F(AutofillFieldTest, FindValueInSelectControl) { |
758 const size_t kBadIndex = 1000; | 764 const size_t kBadIndex = 1000; |
759 | 765 |
760 { | 766 { |
761 std::vector<const char*> kCountries = {"Albania", "Canada"}; | 767 std::vector<const char*> kCountries = {"Albania", "Canada"}; |
762 FormFieldData field( | 768 FormFieldData field( |
763 GenerateSelectFieldWithOptions(kCountries, kCountries.size())); | 769 GenerateSelectFieldWithOptions(kCountries, kCountries.size())); |
764 size_t index = kBadIndex; | 770 size_t index = kBadIndex; |
765 bool ret = AutofillField::FindValueInSelectControl( | 771 bool ret = AutofillField::FindValueInSelectControl( |
766 field, ASCIIToUTF16("Canada"), &index); | 772 field, ASCIIToUTF16("Canada"), &index); |
767 EXPECT_TRUE(ret); | 773 EXPECT_TRUE(ret); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 index = kBadIndex; | 807 index = kBadIndex; |
802 ret = AutofillField::FindValueInSelectControl( | 808 ret = AutofillField::FindValueInSelectControl( |
803 field, UTF8ToUTF16("NoVaScOtIa"), &index); | 809 field, UTF8ToUTF16("NoVaScOtIa"), &index); |
804 EXPECT_TRUE(ret); | 810 EXPECT_TRUE(ret); |
805 EXPECT_EQ(2U, index); | 811 EXPECT_EQ(2U, index); |
806 } | 812 } |
807 } | 813 } |
808 | 814 |
809 } // namespace | 815 } // namespace |
810 } // namespace autofill | 816 } // namespace autofill |
OLD | NEW |