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

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

Issue 1753253003: [Autofill] Fix heuristics to detect consecutive CVCs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
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 "base/macros.h" 5 #include "base/macros.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "base/memory/scoped_vector.h" 7 #include "base/memory/scoped_vector.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "components/autofill/core/browser/autofill_field.h" 9 #include "components/autofill/core/browser/autofill_field.h"
10 #include "components/autofill/core/browser/autofill_scanner.h" 10 #include "components/autofill/core/browser/autofill_scanner.h"
(...skipping 16 matching lines...) Expand all
27 FieldCandidatesMap field_candidates_map_; 27 FieldCandidatesMap field_candidates_map_;
28 28
29 // Parses the contents of |list_| as a form, and stores the result into 29 // Parses the contents of |list_| as a form, and stores the result into
30 // |field_|. 30 // |field_|.
31 void Parse() { 31 void Parse() {
32 AutofillScanner scanner(list_.get()); 32 AutofillScanner scanner(list_.get());
33 scoped_ptr<FormField> field = CreditCardField::Parse(&scanner); 33 scoped_ptr<FormField> field = CreditCardField::Parse(&scanner);
34 field_ = make_scoped_ptr(static_cast<CreditCardField*>(field.release())); 34 field_ = make_scoped_ptr(static_cast<CreditCardField*>(field.release()));
35 } 35 }
36 36
37 void MultipleParses() {
38 scoped_ptr<FormField> field;
39
40 AutofillScanner scanner(list_.get());
41 while (!scanner.IsEnd()) {
42 field = CreditCardField::Parse(&scanner);
43 field_ = make_scoped_ptr(static_cast<CreditCardField*>(field.release()));
44 if (field_ == nullptr) {
45 scanner.Advance();
46 } else {
47 AddClassifications();
48 }
49 }
50 }
51
37 // Associates fields with their corresponding types, based on the previous 52 // Associates fields with their corresponding types, based on the previous
38 // call to Parse(). 53 // call to Parse().
39 void AddClassifications() { 54 void AddClassifications() {
40 return field_->AddClassifications(&field_candidates_map_); 55 return field_->AddClassifications(&field_candidates_map_);
41 } 56 }
42 57
43 private: 58 private:
44 DISALLOW_COPY_AND_ASSIGN(CreditCardFieldTest); 59 DISALLOW_COPY_AND_ASSIGN(CreditCardFieldTest);
45 }; 60 };
46 61
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month4")) != 601 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month4")) !=
587 field_candidates_map_.end()); 602 field_candidates_map_.end());
588 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, 603 EXPECT_EQ(CREDIT_CARD_EXP_MONTH,
589 field_candidates_map_[ASCIIToUTF16("month4")].BestHeuristicType()); 604 field_candidates_map_[ASCIIToUTF16("month4")].BestHeuristicType());
590 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year5")) != 605 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year5")) !=
591 field_candidates_map_.end()); 606 field_candidates_map_.end());
592 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, 607 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
593 field_candidates_map_[ASCIIToUTF16("year5")].BestHeuristicType()); 608 field_candidates_map_[ASCIIToUTF16("year5")].BestHeuristicType());
594 } 609 }
595 610
611 TEST_F(CreditCardFieldTest, ParseFirstAndLastNames) {
612 FormFieldData field;
613 field.form_control_type = "text";
614
615 field.label = ASCIIToUTF16("First Name on Card");
616 field.name = ASCIIToUTF16("cc-fname");
617 list_.push_back(new AutofillField(field, ASCIIToUTF16("name1")));
618
619 field.label = ASCIIToUTF16("Last Name");
620 field.name = ASCIIToUTF16("cc-lname");
621 list_.push_back(new AutofillField(field, ASCIIToUTF16("name2")));
622
623 field.label = ASCIIToUTF16("Card Number");
624 field.name = ASCIIToUTF16("card_number");
625 list_.push_back(new AutofillField(field, ASCIIToUTF16("number3")));
626
627 field.label = ASCIIToUTF16("Exp Month");
628 field.name = ASCIIToUTF16("ccmonth");
629 list_.push_back(new AutofillField(field, ASCIIToUTF16("month4")));
630
631 field.label = ASCIIToUTF16("Exp Year");
632 field.name = ASCIIToUTF16("ccyear");
633 list_.push_back(new AutofillField(field, ASCIIToUTF16("year5")));
634
635 Parse();
636 ASSERT_NE(nullptr, field_.get());
637 AddClassifications();
638
639 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) !=
640 field_candidates_map_.end());
641 EXPECT_EQ(CREDIT_CARD_NAME_FIRST,
642 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType());
643 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name2")) !=
644 field_candidates_map_.end());
645 EXPECT_EQ(CREDIT_CARD_NAME_LAST,
646 field_candidates_map_[ASCIIToUTF16("name2")].BestHeuristicType());
647 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number3")) !=
648 field_candidates_map_.end());
649 EXPECT_EQ(CREDIT_CARD_NUMBER,
650 field_candidates_map_[ASCIIToUTF16("number3")].BestHeuristicType());
651 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month4")) !=
652 field_candidates_map_.end());
653 EXPECT_EQ(CREDIT_CARD_EXP_MONTH,
654 field_candidates_map_[ASCIIToUTF16("month4")].BestHeuristicType());
655 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year5")) !=
656 field_candidates_map_.end());
657 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
658 field_candidates_map_[ASCIIToUTF16("year5")].BestHeuristicType());
659 }
660
661 TEST_F(CreditCardFieldTest, ParseConsecutiveCvc) {
662 FormFieldData field;
663 field.form_control_type = "text";
664
665 field.label = ASCIIToUTF16("Name on Card");
666 field.name = ASCIIToUTF16("name_on_card");
667 list_.push_back(new AutofillField(field, ASCIIToUTF16("name")));
668
669 field.label = ASCIIToUTF16("Card Number");
670 field.name = ASCIIToUTF16("card_number");
671 list_.push_back(new AutofillField(field, ASCIIToUTF16("number")));
672
673 field.label = ASCIIToUTF16("Exp Month");
674 field.name = ASCIIToUTF16("ccmonth");
675 list_.push_back(new AutofillField(field, ASCIIToUTF16("month")));
676
677 field.label = ASCIIToUTF16("Exp Year");
678 field.name = ASCIIToUTF16("ccyear");
679 list_.push_back(new AutofillField(field, ASCIIToUTF16("year")));
680
681 field.label = ASCIIToUTF16("Verification");
682 field.name = ASCIIToUTF16("verification");
683 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc")));
684
685 field.label = ASCIIToUTF16("Verification");
686 field.name = ASCIIToUTF16("verification");
687 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc2")));
688
689 MultipleParses();
690
691 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) !=
692 field_candidates_map_.end());
693 EXPECT_EQ(CREDIT_CARD_NAME_FULL,
694 field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType());
695 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) !=
696 field_candidates_map_.end());
697 EXPECT_EQ(CREDIT_CARD_NUMBER,
698 field_candidates_map_[ASCIIToUTF16("number")].BestHeuristicType());
699 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month")) !=
700 field_candidates_map_.end());
701 EXPECT_EQ(CREDIT_CARD_EXP_MONTH,
702 field_candidates_map_[ASCIIToUTF16("month")].BestHeuristicType());
703 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year")) !=
704 field_candidates_map_.end());
705 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
706 field_candidates_map_[ASCIIToUTF16("year")].BestHeuristicType());
707 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc")) !=
708 field_candidates_map_.end());
709 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE,
710 field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType());
711 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc2")) !=
712 field_candidates_map_.end());
713 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE,
714 field_candidates_map_[ASCIIToUTF16("cvc2")].BestHeuristicType());
715 }
716
717 TEST_F(CreditCardFieldTest, ParseNonConsecutiveCvc) {
718 FormFieldData field;
719 field.form_control_type = "text";
720
721 field.label = ASCIIToUTF16("Name on Card");
722 field.name = ASCIIToUTF16("name_on_card");
723 list_.push_back(new AutofillField(field, ASCIIToUTF16("name")));
724
725 field.label = ASCIIToUTF16("Card Number");
726 field.name = ASCIIToUTF16("card_number");
727 list_.push_back(new AutofillField(field, ASCIIToUTF16("number")));
728
729 field.label = ASCIIToUTF16("Exp Month");
730 field.name = ASCIIToUTF16("ccmonth");
731 list_.push_back(new AutofillField(field, ASCIIToUTF16("month")));
732
733 field.label = ASCIIToUTF16("Exp Year");
734 field.name = ASCIIToUTF16("ccyear");
735 list_.push_back(new AutofillField(field, ASCIIToUTF16("year")));
736
737 field.label = ASCIIToUTF16("Verification");
738 field.name = ASCIIToUTF16("verification");
739 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc")));
740
741 field.label = ASCIIToUTF16("Unknown");
742 field.name = ASCIIToUTF16("unknown");
743 list_.push_back(new AutofillField(field, ASCIIToUTF16("unknown")));
744
745 field.label = ASCIIToUTF16("Verification");
746 field.name = ASCIIToUTF16("verification");
747 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc2")));
748
749 MultipleParses();
750
751 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) !=
752 field_candidates_map_.end());
753 EXPECT_EQ(CREDIT_CARD_NAME_FULL,
754 field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType());
755 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) !=
756 field_candidates_map_.end());
757 EXPECT_EQ(CREDIT_CARD_NUMBER,
758 field_candidates_map_[ASCIIToUTF16("number")].BestHeuristicType());
759 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month")) !=
760 field_candidates_map_.end());
761 EXPECT_EQ(CREDIT_CARD_EXP_MONTH,
762 field_candidates_map_[ASCIIToUTF16("month")].BestHeuristicType());
763 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year")) !=
764 field_candidates_map_.end());
765 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
766 field_candidates_map_[ASCIIToUTF16("year")].BestHeuristicType());
767 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc")) !=
768 field_candidates_map_.end());
769 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE,
770 field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType());
771 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("unknown")) ==
772 field_candidates_map_.end());
773 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc2")) ==
774 field_candidates_map_.end());
775 }
776
596 } // namespace autofill 777 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698