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

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

Issue 1860613002: [Autofill] Fix heuristics to detect consecutive CVCs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2661
Patch Set: 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 | « components/autofill/core/browser/credit_card_field.cc ('k') | no next file » | 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 "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, ParseConsecutiveCvc) {
612 FormFieldData field;
613 field.form_control_type = "text";
614
615 field.label = ASCIIToUTF16("Name on Card");
616 field.name = ASCIIToUTF16("name_on_card");
617 list_.push_back(new AutofillField(field, ASCIIToUTF16("name")));
618
619 field.label = ASCIIToUTF16("Card Number");
620 field.name = ASCIIToUTF16("card_number");
621 list_.push_back(new AutofillField(field, ASCIIToUTF16("number")));
622
623 field.label = ASCIIToUTF16("Exp Month");
624 field.name = ASCIIToUTF16("ccmonth");
625 list_.push_back(new AutofillField(field, ASCIIToUTF16("month")));
626
627 field.label = ASCIIToUTF16("Exp Year");
628 field.name = ASCIIToUTF16("ccyear");
629 list_.push_back(new AutofillField(field, ASCIIToUTF16("year")));
630
631 field.label = ASCIIToUTF16("Verification");
632 field.name = ASCIIToUTF16("verification");
633 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc")));
634
635 field.label = ASCIIToUTF16("Verification");
636 field.name = ASCIIToUTF16("verification");
637 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc2")));
638
639 MultipleParses();
640
641 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) !=
642 field_candidates_map_.end());
643 EXPECT_EQ(CREDIT_CARD_NAME,
644 field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType());
645 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) !=
646 field_candidates_map_.end());
647 EXPECT_EQ(CREDIT_CARD_NUMBER,
648 field_candidates_map_[ASCIIToUTF16("number")].BestHeuristicType());
649 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month")) !=
650 field_candidates_map_.end());
651 EXPECT_EQ(CREDIT_CARD_EXP_MONTH,
652 field_candidates_map_[ASCIIToUTF16("month")].BestHeuristicType());
653 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year")) !=
654 field_candidates_map_.end());
655 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
656 field_candidates_map_[ASCIIToUTF16("year")].BestHeuristicType());
657 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc")) !=
658 field_candidates_map_.end());
659 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE,
660 field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType());
661 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc2")) !=
662 field_candidates_map_.end());
663 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE,
664 field_candidates_map_[ASCIIToUTF16("cvc2")].BestHeuristicType());
665 }
666
667 TEST_F(CreditCardFieldTest, ParseNonConsecutiveCvc) {
668 FormFieldData field;
669 field.form_control_type = "text";
670
671 field.label = ASCIIToUTF16("Name on Card");
672 field.name = ASCIIToUTF16("name_on_card");
673 list_.push_back(new AutofillField(field, ASCIIToUTF16("name")));
674
675 field.label = ASCIIToUTF16("Card Number");
676 field.name = ASCIIToUTF16("card_number");
677 list_.push_back(new AutofillField(field, ASCIIToUTF16("number")));
678
679 field.label = ASCIIToUTF16("Exp Month");
680 field.name = ASCIIToUTF16("ccmonth");
681 list_.push_back(new AutofillField(field, ASCIIToUTF16("month")));
682
683 field.label = ASCIIToUTF16("Exp Year");
684 field.name = ASCIIToUTF16("ccyear");
685 list_.push_back(new AutofillField(field, ASCIIToUTF16("year")));
686
687 field.label = ASCIIToUTF16("Verification");
688 field.name = ASCIIToUTF16("verification");
689 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc")));
690
691 field.label = ASCIIToUTF16("Unknown");
692 field.name = ASCIIToUTF16("unknown");
693 list_.push_back(new AutofillField(field, ASCIIToUTF16("unknown")));
694
695 field.label = ASCIIToUTF16("Verification");
696 field.name = ASCIIToUTF16("verification");
697 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc2")));
698
699 MultipleParses();
700
701 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) !=
702 field_candidates_map_.end());
703 EXPECT_EQ(CREDIT_CARD_NAME,
704 field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType());
705 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) !=
706 field_candidates_map_.end());
707 EXPECT_EQ(CREDIT_CARD_NUMBER,
708 field_candidates_map_[ASCIIToUTF16("number")].BestHeuristicType());
709 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month")) !=
710 field_candidates_map_.end());
711 EXPECT_EQ(CREDIT_CARD_EXP_MONTH,
712 field_candidates_map_[ASCIIToUTF16("month")].BestHeuristicType());
713 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year")) !=
714 field_candidates_map_.end());
715 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR,
716 field_candidates_map_[ASCIIToUTF16("year")].BestHeuristicType());
717 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc")) !=
718 field_candidates_map_.end());
719 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE,
720 field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType());
721 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("unknown")) ==
722 field_candidates_map_.end());
723 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc2")) ==
724 field_candidates_map_.end());
725 }
726
596 } // namespace autofill 727 } // namespace autofill
OLDNEW
« no previous file with comments | « components/autofill/core/browser/credit_card_field.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698