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

Side by Side Diff: components/autofill/core/browser/autofill_field_unittest.cc

Issue 1885773002: [Autofill] Don't fill expiration date of expired credit cards. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | components/autofill/core/browser/autofill_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_test_utils.h"
13 #include "components/autofill/core/browser/autofill_type.h" 14 #include "components/autofill/core/browser/autofill_type.h"
14 #include "components/autofill/core/browser/country_names.h" 15 #include "components/autofill/core/browser/country_names.h"
15 #include "components/autofill/core/browser/field_types.h" 16 #include "components/autofill/core/browser/field_types.h"
16 #include "components/autofill/core/common/autofill_util.h" 17 #include "components/autofill/core/common/autofill_util.h"
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 19
19 using base::ASCIIToUTF16; 20 using base::ASCIIToUTF16;
20 using base::StringToInt; 21 using base::StringToInt;
21 using base::UTF8ToUTF16; 22 using base::UTF8ToUTF16;
22 23
(...skipping 20 matching lines...) Expand all
43 "Jun", 44 "Jun",
44 "Jul", 45 "Jul",
45 "Aug", 46 "Aug",
46 "Sep", 47 "Sep",
47 "Oct", 48 "Oct",
48 "Nov", 49 "Nov",
49 "Dec"}; 50 "Dec"};
50 return result; 51 return result;
51 } 52 }
52 53
53 // Returns a FormFieldData object corresponding to a <select> field populated
54 // with the given |values| and |contents|.
55 FormFieldData GenerateSelectFieldWithOptions(
56 const std::vector<const char*>& values,
57 const std::vector<const char*>& contents,
58 size_t select_size) {
59 std::vector<base::string16> values16(select_size);
60 for (size_t i = 0; i < select_size; ++i)
61 values16[i] = UTF8ToUTF16(values[i]);
62
63 std::vector<base::string16> contents16(select_size);
64 for (size_t i = 0; i < select_size; ++i)
65 contents16[i] = UTF8ToUTF16(contents[i]);
66
67 FormFieldData form_field;
68 form_field.form_control_type = "select-one";
69 form_field.option_values = values16;
70 form_field.option_contents = contents16;
71 return form_field;
72 }
73
74 // Returns a FormFieldData object corresponding to a <select> field populated
75 // with the given |values|.
76 FormFieldData GenerateSelectFieldWithOptions(
77 const std::vector<const char*>& values,
78 size_t select_size) {
79 return GenerateSelectFieldWithOptions(values, values, select_size);
80 }
81
82 // Returns the index of |value| in |values|. 54 // Returns the index of |value| in |values|.
83 void GetIndexOfValue(const std::vector<base::string16>& values, 55 void GetIndexOfValue(const std::vector<base::string16>& values,
84 const base::string16& value, 56 const base::string16& value,
85 size_t* index) { 57 size_t* index) {
86 for (size_t i = 0; i < values.size(); ++i) { 58 for (size_t i = 0; i < values.size(); ++i) {
87 if (values[i] == value) { 59 if (values[i] == value) {
88 *index = i; 60 *index = i;
89 return; 61 return;
90 } 62 }
91 } 63 }
92 ASSERT_TRUE(false) << "Passing invalid arguments to GetIndexOfValue"; 64 ASSERT_TRUE(false) << "Passing invalid arguments to GetIndexOfValue";
93 } 65 }
94 66
95 // Creates the select field from the specified |values| and |contents| and tests 67 // Creates the select field from the specified |values| and |contents| and tests
96 // filling with 3 different values. 68 // filling with 3 different values.
97 void TestFillingExpirationMonth(const std::vector<const char*>& values, 69 void TestFillingExpirationMonth(const std::vector<const char*>& values,
98 const std::vector<const char*>& contents, 70 const std::vector<const char*>& contents,
99 size_t select_size) { 71 size_t select_size) {
100 // Create the select field. 72 // Create the select field.
101 AutofillField field( 73 AutofillField field;
102 GenerateSelectFieldWithOptions(values, contents, select_size), 74 test::CreateTestSelectField("", "", "", values, contents, select_size,
103 base::string16()); 75 &field);
104 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 76 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
105 77
106 size_t content_index = 0; 78 size_t content_index = 0;
107 79
108 // Try with a leading zero. 80 // Try with a leading zero.
109 AutofillField::FillFormField(field, ASCIIToUTF16("03"), "en-US", "en-US", 81 AutofillField::FillFormField(field, ASCIIToUTF16("03"), "en-US", "en-US",
110 &field); 82 &field);
111 GetIndexOfValue(field.option_values, field.value, &content_index); 83 GetIndexOfValue(field.option_values, field.value, &content_index);
112 EXPECT_EQ(ASCIIToUTF16("Mar"), field.option_contents[content_index]); 84 EXPECT_EQ(ASCIIToUTF16("Mar"), field.option_contents[content_index]);
113 85
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 AutofillField::FillFormField(field, ASCIIToUTF16(test_case.value_to_fill), 327 AutofillField::FillFormField(field, ASCIIToUTF16(test_case.value_to_fill),
356 "en-US", "en-US", &field); 328 "en-US", "en-US", &field);
357 EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value); 329 EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
358 } 330 }
359 } 331 }
360 332
361 TEST_F(AutofillFieldTest, FillSelectControlByValue) { 333 TEST_F(AutofillFieldTest, FillSelectControlByValue) {
362 std::vector<const char*> kOptions = { 334 std::vector<const char*> kOptions = {
363 "Eenie", "Meenie", "Miney", "Mo", 335 "Eenie", "Meenie", "Miney", "Mo",
364 }; 336 };
365 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()), 337
366 base::string16()); 338 AutofillField field;
339 test::CreateTestSelectField(kOptions, &field);
367 340
368 // Set semantically empty contents for each option, so that only the values 341 // Set semantically empty contents for each option, so that only the values
369 // can be used for matching. 342 // can be used for matching.
370 for (size_t i = 0; i < field.option_contents.size(); ++i) 343 for (size_t i = 0; i < field.option_contents.size(); ++i)
371 field.option_contents[i] = base::SizeTToString16(i); 344 field.option_contents[i] = base::SizeTToString16(i);
372 345
373 AutofillField::FillFormField( 346 AutofillField::FillFormField(
374 field, ASCIIToUTF16("Meenie"), "en-US", "en-US", &field); 347 field, ASCIIToUTF16("Meenie"), "en-US", "en-US", &field);
375 EXPECT_EQ(ASCIIToUTF16("Meenie"), field.value); 348 EXPECT_EQ(ASCIIToUTF16("Meenie"), field.value);
376 } 349 }
377 350
378 TEST_F(AutofillFieldTest, FillSelectControlByContents) { 351 TEST_F(AutofillFieldTest, FillSelectControlByContents) {
379 std::vector<const char*> kOptions = { 352 std::vector<const char*> kOptions = {
380 "Eenie", "Meenie", "Miney", "Mo", 353 "Eenie", "Meenie", "Miney", "Mo",
381 }; 354 };
382 AutofillField field(GenerateSelectFieldWithOptions(kOptions, kOptions.size()), 355 AutofillField field;
383 base::string16()); 356 test::CreateTestSelectField(kOptions, &field);
384 357
385 // Set semantically empty values for each option, so that only the contents 358 // Set semantically empty values for each option, so that only the contents
386 // can be used for matching. 359 // can be used for matching.
387 for (size_t i = 0; i < field.option_values.size(); ++i) 360 for (size_t i = 0; i < field.option_values.size(); ++i)
388 field.option_values[i] = base::SizeTToString16(i); 361 field.option_values[i] = base::SizeTToString16(i);
389 362
390 AutofillField::FillFormField( 363 AutofillField::FillFormField(
391 field, ASCIIToUTF16("Miney"), "en-US", "en-US", &field); 364 field, ASCIIToUTF16("Miney"), "en-US", "en-US", &field);
392 EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney". 365 EXPECT_EQ(ASCIIToUTF16("2"), field.value); // Corresponds to "Miney".
393 } 366 }
394 367
395 TEST_F(AutofillFieldTest, FillSelectControlWithFullCountryNames) { 368 TEST_F(AutofillFieldTest, FillSelectControlWithFullCountryNames) {
396 std::vector<const char*> kCountries = {"Albania", "Canada"}; 369 std::vector<const char*> kCountries = {"Albania", "Canada"};
397 AutofillField field( 370 AutofillField field;
398 GenerateSelectFieldWithOptions(kCountries, kCountries.size()), 371 test::CreateTestSelectField(kCountries, &field);
399 base::string16());
400 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); 372 field.set_heuristic_type(ADDRESS_HOME_COUNTRY);
401 373
402 AutofillField::FillFormField( 374 AutofillField::FillFormField(
403 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); 375 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field);
404 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value); 376 EXPECT_EQ(ASCIIToUTF16("Canada"), field.value);
405 } 377 }
406 378
407 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedCountryNames) { 379 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedCountryNames) {
408 std::vector<const char*> kCountries = {"AL", "CA"}; 380 std::vector<const char*> kCountries = {"AL", "CA"};
409 AutofillField field( 381 AutofillField field;
410 GenerateSelectFieldWithOptions(kCountries, kCountries.size()), 382 test::CreateTestSelectField(kCountries, &field);
411 base::string16());
412 field.set_heuristic_type(ADDRESS_HOME_COUNTRY); 383 field.set_heuristic_type(ADDRESS_HOME_COUNTRY);
413 384
414 AutofillField::FillFormField( 385 AutofillField::FillFormField(
415 field, ASCIIToUTF16("Canada"), "en-US", "en-US", &field); 386 field, ASCIIToUTF16("Canada"), "en-US", "en-US", &field);
416 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 387 EXPECT_EQ(ASCIIToUTF16("CA"), field.value);
417 } 388 }
418 389
419 TEST_F(AutofillFieldTest, FillSelectControlWithFullStateNames) { 390 TEST_F(AutofillFieldTest, FillSelectControlWithFullStateNames) {
420 std::vector<const char*> kStates = {"Alabama", "California"}; 391 std::vector<const char*> kStates = {"Alabama", "California"};
421 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 392 AutofillField field;
422 base::string16()); 393 test::CreateTestSelectField(kStates, &field);
423 field.set_heuristic_type(ADDRESS_HOME_STATE); 394 field.set_heuristic_type(ADDRESS_HOME_STATE);
424 395
425 AutofillField::FillFormField( 396 AutofillField::FillFormField(
426 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); 397 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field);
427 EXPECT_EQ(ASCIIToUTF16("California"), field.value); 398 EXPECT_EQ(ASCIIToUTF16("California"), field.value);
428 } 399 }
429 400
430 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) { 401 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviateStateNames) {
431 std::vector<const char*> kStates = {"AL", "CA"}; 402 std::vector<const char*> kStates = {"AL", "CA"};
432 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 403 AutofillField field;
433 base::string16()); 404 test::CreateTestSelectField(kStates, &field);
434 field.set_heuristic_type(ADDRESS_HOME_STATE); 405 field.set_heuristic_type(ADDRESS_HOME_STATE);
435 406
436 AutofillField::FillFormField( 407 AutofillField::FillFormField(
437 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); 408 field, ASCIIToUTF16("California"), "en-US", "en-US", &field);
438 EXPECT_EQ(ASCIIToUTF16("CA"), field.value); 409 EXPECT_EQ(ASCIIToUTF16("CA"), field.value);
439 } 410 }
440 411
441 TEST_F(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) { 412 TEST_F(AutofillFieldTest, FillSelectControlWithInexactFullStateNames) {
442 { 413 {
443 std::vector<const char*> kStates = { 414 std::vector<const char*> kStates = {
444 "SC - South Carolina", "CA - California", "NC - North Carolina", 415 "SC - South Carolina", "CA - California", "NC - North Carolina",
445 }; 416 };
446 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 417 AutofillField field;
447 base::string16()); 418 test::CreateTestSelectField(kStates, &field);
448 field.set_heuristic_type(ADDRESS_HOME_STATE); 419 field.set_heuristic_type(ADDRESS_HOME_STATE);
449 420
450 AutofillField::FillFormField( 421 AutofillField::FillFormField(
451 field, ASCIIToUTF16("California"), "en-US", "en-US", &field); 422 field, ASCIIToUTF16("California"), "en-US", "en-US", &field);
452 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value); 423 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value);
453 } 424 }
454 425
455 // Don't accidentally match "Virginia" to "West Virginia". 426 // Don't accidentally match "Virginia" to "West Virginia".
456 { 427 {
457 std::vector<const char*> kStates = { 428 std::vector<const char*> kStates = {
458 "WV - West Virginia", "VA - Virginia", "NV - North Virginia", 429 "WV - West Virginia", "VA - Virginia", "NV - North Virginia",
459 }; 430 };
460 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 431 AutofillField field;
461 base::string16()); 432 test::CreateTestSelectField(kStates, &field);
462 field.set_heuristic_type(ADDRESS_HOME_STATE); 433 field.set_heuristic_type(ADDRESS_HOME_STATE);
463 434
464 AutofillField::FillFormField( 435 AutofillField::FillFormField(
465 field, ASCIIToUTF16("Virginia"), "en-US", "en-US", &field); 436 field, ASCIIToUTF16("Virginia"), "en-US", "en-US", &field);
466 EXPECT_EQ(ASCIIToUTF16("VA - Virginia"), field.value); 437 EXPECT_EQ(ASCIIToUTF16("VA - Virginia"), field.value);
467 } 438 }
468 439
469 // Do accidentally match "Virginia" to "West Virginia". NB: Ideally, Chrome 440 // Do accidentally match "Virginia" to "West Virginia". NB: Ideally, Chrome
470 // would fail this test. It's here to document behavior rather than enforce 441 // would fail this test. It's here to document behavior rather than enforce
471 // it. 442 // it.
472 { 443 {
473 std::vector<const char*> kStates = { 444 std::vector<const char*> kStates = {
474 "WV - West Virginia", "TX - Texas", 445 "WV - West Virginia", "TX - Texas",
475 }; 446 };
476 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 447 AutofillField field;
477 base::string16()); 448 test::CreateTestSelectField(kStates, &field);
478 field.set_heuristic_type(ADDRESS_HOME_STATE); 449 field.set_heuristic_type(ADDRESS_HOME_STATE);
479 450
480 AutofillField::FillFormField( 451 AutofillField::FillFormField(
481 field, ASCIIToUTF16("Virginia"), "en-US", "en-US", &field); 452 field, ASCIIToUTF16("Virginia"), "en-US", "en-US", &field);
482 EXPECT_EQ(ASCIIToUTF16("WV - West Virginia"), field.value); 453 EXPECT_EQ(ASCIIToUTF16("WV - West Virginia"), field.value);
483 } 454 }
484 455
485 // Tests that substring matches work for full state names (a full token 456 // Tests that substring matches work for full state names (a full token
486 // match isn't required). Also tests that matches work for states with 457 // match isn't required). Also tests that matches work for states with
487 // whitespace in the middle. 458 // whitespace in the middle.
488 { 459 {
489 std::vector<const char*> kStates = { 460 std::vector<const char*> kStates = {
490 "California.", "North Carolina.", 461 "California.", "North Carolina.",
491 }; 462 };
492 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 463 AutofillField field;
493 base::string16()); 464 test::CreateTestSelectField(kStates, &field);
494 field.set_heuristic_type(ADDRESS_HOME_STATE); 465 field.set_heuristic_type(ADDRESS_HOME_STATE);
495 466
496 AutofillField::FillFormField( 467 AutofillField::FillFormField(
497 field, ASCIIToUTF16("North Carolina"), "en-US", "en-US", &field); 468 field, ASCIIToUTF16("North Carolina"), "en-US", "en-US", &field);
498 EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value); 469 EXPECT_EQ(ASCIIToUTF16("North Carolina."), field.value);
499 } 470 }
500 } 471 }
501 472
502 TEST_F(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) { 473 TEST_F(AutofillFieldTest, FillSelectControlWithInexactAbbreviations) {
503 { 474 {
504 std::vector<const char*> kStates = { 475 std::vector<const char*> kStates = {
505 "NC - North Carolina", "CA - California", 476 "NC - North Carolina", "CA - California",
506 }; 477 };
507 AutofillField field(GenerateSelectFieldWithOptions(kStates, kStates.size()), 478 AutofillField field;
508 base::string16()); 479 test::CreateTestSelectField(kStates, &field);
509 field.set_heuristic_type(ADDRESS_HOME_STATE); 480 field.set_heuristic_type(ADDRESS_HOME_STATE);
510 481
511 AutofillField::FillFormField( 482 AutofillField::FillFormField(
512 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field); 483 field, ASCIIToUTF16("CA"), "en-US", "en-US", &field);
513 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value); 484 EXPECT_EQ(ASCIIToUTF16("CA - California"), field.value);
514 } 485 }
515 486
516 { 487 {
517 std::vector<const char*> kNotStates = { 488 std::vector<const char*> kNotStates = {
518 "NCNCA", "SCNCA", 489 "NCNCA", "SCNCA",
519 }; 490 };
520 AutofillField field( 491 AutofillField field;
521 GenerateSelectFieldWithOptions(kNotStates, kNotStates.size()), 492 test::CreateTestSelectField(kNotStates, &field);
522 base::string16());
523 field.set_heuristic_type(ADDRESS_HOME_STATE); 493 field.set_heuristic_type(ADDRESS_HOME_STATE);
524 494
525 AutofillField::FillFormField( 495 AutofillField::FillFormField(
526 field, ASCIIToUTF16("NC"), "en-US", "en-US", &field); 496 field, ASCIIToUTF16("NC"), "en-US", "en-US", &field);
527 EXPECT_EQ(base::string16(), field.value); 497 EXPECT_EQ(base::string16(), field.value);
528 } 498 }
529 } 499 }
530 500
531 TEST_F(AutofillFieldTest, FillSelectControlWithExpirationMonth) { 501 TEST_F(AutofillFieldTest, FillSelectControlWithExpirationMonth) {
532 typedef struct { 502 typedef struct {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 test_case.select_contents, 547 test_case.select_contents,
578 test_case.select_values.size()); 548 test_case.select_values.size());
579 } 549 }
580 } 550 }
581 551
582 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedMonthName) { 552 TEST_F(AutofillFieldTest, FillSelectControlWithAbbreviatedMonthName) {
583 std::vector<const char*> kMonthsAbbreviated = { 553 std::vector<const char*> kMonthsAbbreviated = {
584 "Jan", "Feb", "Mar", "Apr", "May", "Jun", 554 "Jan", "Feb", "Mar", "Apr", "May", "Jun",
585 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", 555 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
586 }; 556 };
587 AutofillField field(GenerateSelectFieldWithOptions(kMonthsAbbreviated, 557 AutofillField field;
588 kMonthsAbbreviated.size()), 558 test::CreateTestSelectField(kMonthsAbbreviated, &field);
589 base::string16());
590 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 559 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
591 560
592 AutofillField::FillFormField( 561 AutofillField::FillFormField(
593 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); 562 field, ASCIIToUTF16("04"), "en-US", "en-US", &field);
594 EXPECT_EQ(ASCIIToUTF16("Apr"), field.value); 563 EXPECT_EQ(ASCIIToUTF16("Apr"), field.value);
595 } 564 }
596 565
597 TEST_F(AutofillFieldTest, FillSelectControlWithFullMonthName) { 566 TEST_F(AutofillFieldTest, FillSelectControlWithFullMonthName) {
598 std::vector<const char*> kMonthsFull = { 567 std::vector<const char*> kMonthsFull = {
599 "January", "February", "March", "April", "May", "June", 568 "January", "February", "March", "April", "May", "June",
600 "July", "August", "September", "October", "November", "December", 569 "July", "August", "September", "October", "November", "December",
601 }; 570 };
602 AutofillField field( 571 AutofillField field;
603 GenerateSelectFieldWithOptions(kMonthsFull, kMonthsFull.size()), 572 test::CreateTestSelectField(kMonthsFull, &field);
604 base::string16());
605 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 573 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
606 574
607 AutofillField::FillFormField( 575 AutofillField::FillFormField(
608 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); 576 field, ASCIIToUTF16("04"), "en-US", "en-US", &field);
609 EXPECT_EQ(ASCIIToUTF16("April"), field.value); 577 EXPECT_EQ(ASCIIToUTF16("April"), field.value);
610 } 578 }
611 579
612 TEST_F(AutofillFieldTest, FillSelectControlWithFrenchMonthName) { 580 TEST_F(AutofillFieldTest, FillSelectControlWithFrenchMonthName) {
613 std::vector<const char*> kMonthsFrench = {"JANV", "FÉVR.", "MARS", 581 std::vector<const char*> kMonthsFrench = {"JANV", "FÉVR.", "MARS",
614 "décembre"}; 582 "décembre"};
615 AutofillField field( 583 AutofillField field;
616 GenerateSelectFieldWithOptions(kMonthsFrench, kMonthsFrench.size()), 584 test::CreateTestSelectField(kMonthsFrench, &field);
617 base::string16());
618 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 585 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
619 586
620 AutofillField::FillFormField( 587 AutofillField::FillFormField(
621 field, ASCIIToUTF16("02"), "fr-FR", "fr-FR", &field); 588 field, ASCIIToUTF16("02"), "fr-FR", "fr-FR", &field);
622 EXPECT_EQ(UTF8ToUTF16("FÉVR."), field.value); 589 EXPECT_EQ(UTF8ToUTF16("FÉVR."), field.value);
623 590
624 AutofillField::FillFormField( 591 AutofillField::FillFormField(
625 field, ASCIIToUTF16("01"), "fr-FR", "fr-FR", &field); 592 field, ASCIIToUTF16("01"), "fr-FR", "fr-FR", &field);
626 EXPECT_EQ(UTF8ToUTF16("JANV"), field.value); 593 EXPECT_EQ(UTF8ToUTF16("JANV"), field.value);
627 594
628 AutofillField::FillFormField( 595 AutofillField::FillFormField(
629 field, ASCIIToUTF16("12"), "fr-FR", "fr-FR", &field); 596 field, ASCIIToUTF16("12"), "fr-FR", "fr-FR", &field);
630 EXPECT_EQ(UTF8ToUTF16("décembre"), field.value); 597 EXPECT_EQ(UTF8ToUTF16("décembre"), field.value);
631 } 598 }
632 599
633 TEST_F(AutofillFieldTest, FillSelectControlWithNumericMonthSansLeadingZero) { 600 TEST_F(AutofillFieldTest, FillSelectControlWithNumericMonthSansLeadingZero) {
634 std::vector<const char*> kMonthsNumeric = { 601 std::vector<const char*> kMonthsNumeric = {
635 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", 602 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
636 }; 603 };
637 AutofillField field( 604 AutofillField field;
638 GenerateSelectFieldWithOptions(kMonthsNumeric, kMonthsNumeric.size()), 605 test::CreateTestSelectField(kMonthsNumeric, &field);
639 base::string16());
640 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH); 606 field.set_heuristic_type(CREDIT_CARD_EXP_MONTH);
641 607
642 AutofillField::FillFormField( 608 AutofillField::FillFormField(
643 field, ASCIIToUTF16("04"), "en-US", "en-US", &field); 609 field, ASCIIToUTF16("04"), "en-US", "en-US", &field);
644 EXPECT_EQ(ASCIIToUTF16("4"), field.value); 610 EXPECT_EQ(ASCIIToUTF16("4"), field.value);
645 } 611 }
646 612
647 TEST_F(AutofillFieldTest, FillSelectControlWithTwoDigitCreditCardYear) { 613 TEST_F(AutofillFieldTest, FillSelectControlWithTwoDigitCreditCardYear) {
648 std::vector<const char*> kYears = {"12", "13", "14", "15", 614 std::vector<const char*> kYears = {"12", "13", "14", "15",
649 "16", "17", "18", "19"}; 615 "16", "17", "18", "19"};
650 AutofillField field(GenerateSelectFieldWithOptions(kYears, kYears.size()), 616 AutofillField field;
651 base::string16()); 617 test::CreateTestSelectField(kYears, &field);
652 field.set_heuristic_type(CREDIT_CARD_EXP_2_DIGIT_YEAR); 618 field.set_heuristic_type(CREDIT_CARD_EXP_2_DIGIT_YEAR);
653 619
654 AutofillField::FillFormField( 620 AutofillField::FillFormField(
655 field, ASCIIToUTF16("2017"), "en-US", "en-US", &field); 621 field, ASCIIToUTF16("2017"), "en-US", "en-US", &field);
656 EXPECT_EQ(ASCIIToUTF16("17"), field.value); 622 EXPECT_EQ(ASCIIToUTF16("17"), field.value);
657 } 623 }
658 624
659 TEST_F(AutofillFieldTest, FillSelectControlWithCreditCardType) { 625 TEST_F(AutofillFieldTest, FillSelectControlWithCreditCardType) {
660 std::vector<const char*> kCreditCardTypes = {"Visa", "Master Card", "AmEx", 626 std::vector<const char*> kCreditCardTypes = {"Visa", "Master Card", "AmEx",
661 "discover"}; 627 "discover"};
662 AutofillField field( 628 AutofillField field;
663 GenerateSelectFieldWithOptions(kCreditCardTypes, kCreditCardTypes.size()), 629 test::CreateTestSelectField(kCreditCardTypes, &field);
664 base::string16());
665 field.set_heuristic_type(CREDIT_CARD_TYPE); 630 field.set_heuristic_type(CREDIT_CARD_TYPE);
666 631
667 // Normal case: 632 // Normal case:
668 AutofillField::FillFormField( 633 AutofillField::FillFormField(
669 field, ASCIIToUTF16("Visa"), "en-US", "en-US", &field); 634 field, ASCIIToUTF16("Visa"), "en-US", "en-US", &field);
670 EXPECT_EQ(ASCIIToUTF16("Visa"), field.value); 635 EXPECT_EQ(ASCIIToUTF16("Visa"), field.value);
671 636
672 // Filling should be able to handle intervening whitespace: 637 // Filling should be able to handle intervening whitespace:
673 AutofillField::FillFormField( 638 AutofillField::FillFormField(
674 field, ASCIIToUTF16("MasterCard"), "en-US", "en-US", &field); 639 field, ASCIIToUTF16("MasterCard"), "en-US", "en-US", &field);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 "en-US", 803 "en-US",
839 "en-US", 804 "en-US",
840 &cc_number_full); 805 &cc_number_full);
841 806
842 // Verify for expected results. 807 // Verify for expected results.
843 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value); 808 EXPECT_EQ(ASCIIToUTF16(test.card_number_), cc_number_full.value);
844 } 809 }
845 810
846 TEST_F(AutofillFieldTest, FindShortestSubstringMatchInSelect) { 811 TEST_F(AutofillFieldTest, FindShortestSubstringMatchInSelect) {
847 std::vector<const char*> kCountries = {"États-Unis", "Canada"}; 812 std::vector<const char*> kCountries = {"États-Unis", "Canada"};
848 FormFieldData field( 813 AutofillField field;
849 GenerateSelectFieldWithOptions(kCountries, kCountries.size())); 814 test::CreateTestSelectField(kCountries, &field);
850 815
851 // Case 1: Exact match 816 // Case 1: Exact match
852 int ret = AutofillField::FindShortestSubstringMatchInSelect( 817 int ret = AutofillField::FindShortestSubstringMatchInSelect(
853 ASCIIToUTF16("Canada"), false, &field); 818 ASCIIToUTF16("Canada"), false, &field);
854 EXPECT_EQ(1, ret); 819 EXPECT_EQ(1, ret);
855 820
856 // Case 2: Case-insensitive 821 // Case 2: Case-insensitive
857 ret = AutofillField::FindShortestSubstringMatchInSelect( 822 ret = AutofillField::FindShortestSubstringMatchInSelect(
858 ASCIIToUTF16("CANADA"), false, &field); 823 ASCIIToUTF16("CANADA"), false, &field);
859 EXPECT_EQ(1, ret); 824 EXPECT_EQ(1, ret);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 bool has_filled = AutofillField::FillFormField( 891 bool has_filled = AutofillField::FillFormField(
927 field, ASCIIToUTF16(test_case.value_to_fill), "en-US", "en-US", &field); 892 field, ASCIIToUTF16(test_case.value_to_fill), "en-US", "en-US", &field);
928 893
929 EXPECT_EQ(test_case.should_fill, has_filled); 894 EXPECT_EQ(test_case.should_fill, has_filled);
930 EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value); 895 EXPECT_EQ(ASCIIToUTF16(test_case.expected_value), field.value);
931 } 896 }
932 } 897 }
933 898
934 } // namespace 899 } // namespace
935 } // namespace autofill 900 } // namespace autofill
OLDNEW
« no previous file with comments | « no previous file | components/autofill/core/browser/autofill_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698