| 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/credit_card_field.h" | 5 #include "components/autofill/core/browser/credit_card_field.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <vector> |
| 8 | 9 |
| 9 #include "base/macros.h" | 10 #include "base/macros.h" |
| 10 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
| 11 #include "base/memory/scoped_vector.h" | |
| 12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
| 13 #include "components/autofill/core/browser/autofill_field.h" | 13 #include "components/autofill/core/browser/autofill_field.h" |
| 14 #include "components/autofill/core/browser/autofill_scanner.h" | 14 #include "components/autofill/core/browser/autofill_scanner.h" |
| 15 #include "components/autofill/core/common/form_field_data.h" | 15 #include "components/autofill/core/common/form_field_data.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 17 | 17 |
| 18 using base::ASCIIToUTF16; | 18 using base::ASCIIToUTF16; |
| 19 | 19 |
| 20 namespace autofill { | 20 namespace autofill { |
| 21 | 21 |
| 22 class CreditCardFieldTest : public testing::Test { | 22 class CreditCardFieldTest : public testing::Test { |
| 23 public: | 23 public: |
| 24 CreditCardFieldTest() {} | 24 CreditCardFieldTest() {} |
| 25 ~CreditCardFieldTest() override {} | 25 ~CreditCardFieldTest() override {} |
| 26 | 26 |
| 27 protected: | 27 protected: |
| 28 ScopedVector<AutofillField> list_; | 28 std::vector<std::unique_ptr<AutofillField>> list_; |
| 29 std::unique_ptr<const CreditCardField> field_; | 29 std::unique_ptr<const CreditCardField> field_; |
| 30 FieldCandidatesMap field_candidates_map_; | 30 FieldCandidatesMap field_candidates_map_; |
| 31 | 31 |
| 32 // Parses the contents of |list_| as a form, and stores the result into | 32 // Parses the contents of |list_| as a form, and stores the result into |
| 33 // |field_|. | 33 // |field_|. |
| 34 void Parse() { | 34 void Parse() { |
| 35 AutofillScanner scanner(list_.get()); | 35 AutofillScanner scanner(list_); |
| 36 std::unique_ptr<FormField> field = CreditCardField::Parse(&scanner); | 36 std::unique_ptr<FormField> field = CreditCardField::Parse(&scanner); |
| 37 field_ = base::WrapUnique(static_cast<CreditCardField*>(field.release())); | 37 field_ = base::WrapUnique(static_cast<CreditCardField*>(field.release())); |
| 38 } | 38 } |
| 39 | 39 |
| 40 void MultipleParses() { | 40 void MultipleParses() { |
| 41 std::unique_ptr<FormField> field; | 41 std::unique_ptr<FormField> field; |
| 42 | 42 |
| 43 AutofillScanner scanner(list_.get()); | 43 AutofillScanner scanner(list_); |
| 44 while (!scanner.IsEnd()) { | 44 while (!scanner.IsEnd()) { |
| 45 field = CreditCardField::Parse(&scanner); | 45 field = CreditCardField::Parse(&scanner); |
| 46 field_ = base::WrapUnique(static_cast<CreditCardField*>(field.release())); | 46 field_ = base::WrapUnique(static_cast<CreditCardField*>(field.release())); |
| 47 if (field_ == nullptr) { | 47 if (field_ == nullptr) { |
| 48 scanner.Advance(); | 48 scanner.Advance(); |
| 49 } else { | 49 } else { |
| 50 AddClassifications(); | 50 AddClassifications(); |
| 51 } | 51 } |
| 52 } | 52 } |
| 53 } | 53 } |
| 54 | 54 |
| 55 // Associates fields with their corresponding types, based on the previous | 55 // Associates fields with their corresponding types, based on the previous |
| 56 // call to Parse(). | 56 // call to Parse(). |
| 57 void AddClassifications() { | 57 void AddClassifications() { |
| 58 return field_->AddClassifications(&field_candidates_map_); | 58 return field_->AddClassifications(&field_candidates_map_); |
| 59 } | 59 } |
| 60 | 60 |
| 61 private: | 61 private: |
| 62 DISALLOW_COPY_AND_ASSIGN(CreditCardFieldTest); | 62 DISALLOW_COPY_AND_ASSIGN(CreditCardFieldTest); |
| 63 }; | 63 }; |
| 64 | 64 |
| 65 TEST_F(CreditCardFieldTest, Empty) { | 65 TEST_F(CreditCardFieldTest, Empty) { |
| 66 Parse(); | 66 Parse(); |
| 67 ASSERT_EQ(nullptr, field_.get()); | 67 ASSERT_EQ(nullptr, field_.get()); |
| 68 } | 68 } |
| 69 | 69 |
| 70 TEST_F(CreditCardFieldTest, NonParse) { | 70 TEST_F(CreditCardFieldTest, NonParse) { |
| 71 list_.push_back(new AutofillField); | 71 list_.push_back(base::MakeUnique<AutofillField>()); |
| 72 Parse(); | 72 Parse(); |
| 73 ASSERT_EQ(nullptr, field_.get()); | 73 ASSERT_EQ(nullptr, field_.get()); |
| 74 } | 74 } |
| 75 | 75 |
| 76 TEST_F(CreditCardFieldTest, ParseCreditCardNoNumber) { | 76 TEST_F(CreditCardFieldTest, ParseCreditCardNoNumber) { |
| 77 FormFieldData field; | 77 FormFieldData field; |
| 78 field.form_control_type = "text"; | 78 field.form_control_type = "text"; |
| 79 | 79 |
| 80 field.label = ASCIIToUTF16("Exp Month"); | 80 field.label = ASCIIToUTF16("Exp Month"); |
| 81 field.name = ASCIIToUTF16("ccmonth"); | 81 field.name = ASCIIToUTF16("ccmonth"); |
| 82 list_.push_back(new AutofillField(field, ASCIIToUTF16("month1"))); | 82 list_.push_back( |
| 83 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month1"))); |
| 83 | 84 |
| 84 field.label = ASCIIToUTF16("Exp Year"); | 85 field.label = ASCIIToUTF16("Exp Year"); |
| 85 field.name = ASCIIToUTF16("ccyear"); | 86 field.name = ASCIIToUTF16("ccyear"); |
| 86 list_.push_back(new AutofillField(field, ASCIIToUTF16("year2"))); | 87 list_.push_back( |
| 88 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year2"))); |
| 87 | 89 |
| 88 Parse(); | 90 Parse(); |
| 89 ASSERT_EQ(nullptr, field_.get()); | 91 ASSERT_EQ(nullptr, field_.get()); |
| 90 } | 92 } |
| 91 | 93 |
| 92 TEST_F(CreditCardFieldTest, ParseCreditCardNoDate) { | 94 TEST_F(CreditCardFieldTest, ParseCreditCardNoDate) { |
| 93 FormFieldData field; | 95 FormFieldData field; |
| 94 field.form_control_type = "text"; | 96 field.form_control_type = "text"; |
| 95 | 97 |
| 96 field.label = ASCIIToUTF16("Card Number"); | 98 field.label = ASCIIToUTF16("Card Number"); |
| 97 field.name = ASCIIToUTF16("card_number"); | 99 field.name = ASCIIToUTF16("card_number"); |
| 98 list_.push_back(new AutofillField(field, ASCIIToUTF16("number1"))); | 100 list_.push_back( |
| 101 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number1"))); |
| 99 | 102 |
| 100 Parse(); | 103 Parse(); |
| 101 ASSERT_EQ(nullptr, field_.get()); | 104 ASSERT_EQ(nullptr, field_.get()); |
| 102 } | 105 } |
| 103 | 106 |
| 104 TEST_F(CreditCardFieldTest, ParseMiniumCreditCard) { | 107 TEST_F(CreditCardFieldTest, ParseMiniumCreditCard) { |
| 105 FormFieldData field; | 108 FormFieldData field; |
| 106 field.form_control_type = "text"; | 109 field.form_control_type = "text"; |
| 107 | 110 |
| 108 field.label = ASCIIToUTF16("Card Number"); | 111 field.label = ASCIIToUTF16("Card Number"); |
| 109 field.name = ASCIIToUTF16("card_number"); | 112 field.name = ASCIIToUTF16("card_number"); |
| 110 list_.push_back(new AutofillField(field, ASCIIToUTF16("number1"))); | 113 list_.push_back( |
| 114 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number1"))); |
| 111 | 115 |
| 112 field.label = ASCIIToUTF16("Exp Month"); | 116 field.label = ASCIIToUTF16("Exp Month"); |
| 113 field.name = ASCIIToUTF16("ccmonth"); | 117 field.name = ASCIIToUTF16("ccmonth"); |
| 114 list_.push_back(new AutofillField(field, ASCIIToUTF16("month2"))); | 118 list_.push_back( |
| 119 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month2"))); |
| 115 | 120 |
| 116 field.label = ASCIIToUTF16("Exp Year"); | 121 field.label = ASCIIToUTF16("Exp Year"); |
| 117 field.name = ASCIIToUTF16("ccyear"); | 122 field.name = ASCIIToUTF16("ccyear"); |
| 118 list_.push_back(new AutofillField(field, ASCIIToUTF16("year3"))); | 123 list_.push_back( |
| 124 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year3"))); |
| 119 | 125 |
| 120 Parse(); | 126 Parse(); |
| 121 ASSERT_NE(nullptr, field_.get()); | 127 ASSERT_NE(nullptr, field_.get()); |
| 122 AddClassifications(); | 128 AddClassifications(); |
| 123 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number1")) != | 129 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number1")) != |
| 124 field_candidates_map_.end()); | 130 field_candidates_map_.end()); |
| 125 EXPECT_EQ(CREDIT_CARD_NUMBER, | 131 EXPECT_EQ(CREDIT_CARD_NUMBER, |
| 126 field_candidates_map_[ASCIIToUTF16("number1")].BestHeuristicType()); | 132 field_candidates_map_[ASCIIToUTF16("number1")].BestHeuristicType()); |
| 127 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month2")) != | 133 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month2")) != |
| 128 field_candidates_map_.end()); | 134 field_candidates_map_.end()); |
| 129 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, | 135 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, |
| 130 field_candidates_map_[ASCIIToUTF16("month2")].BestHeuristicType()); | 136 field_candidates_map_[ASCIIToUTF16("month2")].BestHeuristicType()); |
| 131 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year3")) != | 137 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year3")) != |
| 132 field_candidates_map_.end()); | 138 field_candidates_map_.end()); |
| 133 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, | 139 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 134 field_candidates_map_[ASCIIToUTF16("year3")].BestHeuristicType()); | 140 field_candidates_map_[ASCIIToUTF16("year3")].BestHeuristicType()); |
| 135 } | 141 } |
| 136 | 142 |
| 137 TEST_F(CreditCardFieldTest, ParseFullCreditCard) { | 143 TEST_F(CreditCardFieldTest, ParseFullCreditCard) { |
| 138 FormFieldData field; | 144 FormFieldData field; |
| 139 field.form_control_type = "text"; | 145 field.form_control_type = "text"; |
| 140 | 146 |
| 141 field.label = ASCIIToUTF16("Name on Card"); | 147 field.label = ASCIIToUTF16("Name on Card"); |
| 142 field.name = ASCIIToUTF16("name_on_card"); | 148 field.name = ASCIIToUTF16("name_on_card"); |
| 143 list_.push_back(new AutofillField(field, ASCIIToUTF16("name"))); | 149 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name"))); |
| 144 | 150 |
| 145 field.label = ASCIIToUTF16("Card Number"); | 151 field.label = ASCIIToUTF16("Card Number"); |
| 146 field.name = ASCIIToUTF16("card_number"); | 152 field.name = ASCIIToUTF16("card_number"); |
| 147 list_.push_back(new AutofillField(field, ASCIIToUTF16("number"))); | 153 list_.push_back( |
| 154 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number"))); |
| 148 | 155 |
| 149 field.label = ASCIIToUTF16("Exp Month"); | 156 field.label = ASCIIToUTF16("Exp Month"); |
| 150 field.name = ASCIIToUTF16("ccmonth"); | 157 field.name = ASCIIToUTF16("ccmonth"); |
| 151 list_.push_back(new AutofillField(field, ASCIIToUTF16("month"))); | 158 list_.push_back( |
| 159 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month"))); |
| 152 | 160 |
| 153 field.label = ASCIIToUTF16("Exp Year"); | 161 field.label = ASCIIToUTF16("Exp Year"); |
| 154 field.name = ASCIIToUTF16("ccyear"); | 162 field.name = ASCIIToUTF16("ccyear"); |
| 155 list_.push_back(new AutofillField(field, ASCIIToUTF16("year"))); | 163 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year"))); |
| 156 | 164 |
| 157 field.label = ASCIIToUTF16("Verification"); | 165 field.label = ASCIIToUTF16("Verification"); |
| 158 field.name = ASCIIToUTF16("verification"); | 166 field.name = ASCIIToUTF16("verification"); |
| 159 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc"))); | 167 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("cvc"))); |
| 160 | 168 |
| 161 field.form_control_type = "select-one"; | 169 field.form_control_type = "select-one"; |
| 162 field.label = ASCIIToUTF16("Card Type"); | 170 field.label = ASCIIToUTF16("Card Type"); |
| 163 field.name = ASCIIToUTF16("card_type"); | 171 field.name = ASCIIToUTF16("card_type"); |
| 164 field.option_contents.push_back(ASCIIToUTF16("visa")); | 172 field.option_contents.push_back(ASCIIToUTF16("visa")); |
| 165 field.option_values.push_back(ASCIIToUTF16("visa")); | 173 field.option_values.push_back(ASCIIToUTF16("visa")); |
| 166 list_.push_back(new AutofillField(field, ASCIIToUTF16("type"))); | 174 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("type"))); |
| 167 | 175 |
| 168 Parse(); | 176 Parse(); |
| 169 ASSERT_NE(nullptr, field_.get()); | 177 ASSERT_NE(nullptr, field_.get()); |
| 170 AddClassifications(); | 178 AddClassifications(); |
| 171 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("type")) != | 179 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("type")) != |
| 172 field_candidates_map_.end()); | 180 field_candidates_map_.end()); |
| 173 EXPECT_EQ(CREDIT_CARD_TYPE, | 181 EXPECT_EQ(CREDIT_CARD_TYPE, |
| 174 field_candidates_map_[ASCIIToUTF16("type")].BestHeuristicType()); | 182 field_candidates_map_[ASCIIToUTF16("type")].BestHeuristicType()); |
| 175 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) != | 183 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) != |
| 176 field_candidates_map_.end()); | 184 field_candidates_map_.end()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 193 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE, | 201 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE, |
| 194 field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType()); | 202 field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType()); |
| 195 } | 203 } |
| 196 | 204 |
| 197 TEST_F(CreditCardFieldTest, ParseExpMonthYear) { | 205 TEST_F(CreditCardFieldTest, ParseExpMonthYear) { |
| 198 FormFieldData field; | 206 FormFieldData field; |
| 199 field.form_control_type = "text"; | 207 field.form_control_type = "text"; |
| 200 | 208 |
| 201 field.label = ASCIIToUTF16("Name on Card"); | 209 field.label = ASCIIToUTF16("Name on Card"); |
| 202 field.name = ASCIIToUTF16("name_on_card"); | 210 field.name = ASCIIToUTF16("name_on_card"); |
| 203 list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); | 211 list_.push_back( |
| 212 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name1"))); |
| 204 | 213 |
| 205 field.label = ASCIIToUTF16("Card Number"); | 214 field.label = ASCIIToUTF16("Card Number"); |
| 206 field.name = ASCIIToUTF16("card_number"); | 215 field.name = ASCIIToUTF16("card_number"); |
| 207 list_.push_back(new AutofillField(field, ASCIIToUTF16("number2"))); | 216 list_.push_back( |
| 217 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number2"))); |
| 208 | 218 |
| 209 field.label = ASCIIToUTF16("ExpDate Month / Year"); | 219 field.label = ASCIIToUTF16("ExpDate Month / Year"); |
| 210 field.name = ASCIIToUTF16("ExpDate"); | 220 field.name = ASCIIToUTF16("ExpDate"); |
| 211 list_.push_back(new AutofillField(field, ASCIIToUTF16("month3"))); | 221 list_.push_back( |
| 222 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month3"))); |
| 212 | 223 |
| 213 field.label = ASCIIToUTF16("ExpDate Month / Year"); | 224 field.label = ASCIIToUTF16("ExpDate Month / Year"); |
| 214 field.name = ASCIIToUTF16("ExpDate"); | 225 field.name = ASCIIToUTF16("ExpDate"); |
| 215 list_.push_back(new AutofillField(field, ASCIIToUTF16("year4"))); | 226 list_.push_back( |
| 227 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year4"))); |
| 216 | 228 |
| 217 Parse(); | 229 Parse(); |
| 218 ASSERT_NE(nullptr, field_.get()); | 230 ASSERT_NE(nullptr, field_.get()); |
| 219 AddClassifications(); | 231 AddClassifications(); |
| 220 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != | 232 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != |
| 221 field_candidates_map_.end()); | 233 field_candidates_map_.end()); |
| 222 EXPECT_EQ(CREDIT_CARD_NAME_FULL, | 234 EXPECT_EQ(CREDIT_CARD_NAME_FULL, |
| 223 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); | 235 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); |
| 224 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number2")) != | 236 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number2")) != |
| 225 field_candidates_map_.end()); | 237 field_candidates_map_.end()); |
| 226 EXPECT_EQ(CREDIT_CARD_NUMBER, | 238 EXPECT_EQ(CREDIT_CARD_NUMBER, |
| 227 field_candidates_map_[ASCIIToUTF16("number2")].BestHeuristicType()); | 239 field_candidates_map_[ASCIIToUTF16("number2")].BestHeuristicType()); |
| 228 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month3")) != | 240 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month3")) != |
| 229 field_candidates_map_.end()); | 241 field_candidates_map_.end()); |
| 230 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, | 242 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, |
| 231 field_candidates_map_[ASCIIToUTF16("month3")].BestHeuristicType()); | 243 field_candidates_map_[ASCIIToUTF16("month3")].BestHeuristicType()); |
| 232 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year4")) != | 244 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year4")) != |
| 233 field_candidates_map_.end()); | 245 field_candidates_map_.end()); |
| 234 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, | 246 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 235 field_candidates_map_[ASCIIToUTF16("year4")].BestHeuristicType()); | 247 field_candidates_map_[ASCIIToUTF16("year4")].BestHeuristicType()); |
| 236 } | 248 } |
| 237 | 249 |
| 238 TEST_F(CreditCardFieldTest, ParseExpMonthYear2) { | 250 TEST_F(CreditCardFieldTest, ParseExpMonthYear2) { |
| 239 FormFieldData field; | 251 FormFieldData field; |
| 240 field.form_control_type = "text"; | 252 field.form_control_type = "text"; |
| 241 | 253 |
| 242 field.label = ASCIIToUTF16("Name on Card"); | 254 field.label = ASCIIToUTF16("Name on Card"); |
| 243 field.name = ASCIIToUTF16("name_on_card"); | 255 field.name = ASCIIToUTF16("name_on_card"); |
| 244 list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); | 256 list_.push_back( |
| 257 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name1"))); |
| 245 | 258 |
| 246 field.label = ASCIIToUTF16("Card Number"); | 259 field.label = ASCIIToUTF16("Card Number"); |
| 247 field.name = ASCIIToUTF16("card_number"); | 260 field.name = ASCIIToUTF16("card_number"); |
| 248 list_.push_back(new AutofillField(field, ASCIIToUTF16("number2"))); | 261 list_.push_back( |
| 262 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number2"))); |
| 249 | 263 |
| 250 field.label = ASCIIToUTF16("Expiration date Month / Year"); | 264 field.label = ASCIIToUTF16("Expiration date Month / Year"); |
| 251 field.name = ASCIIToUTF16("ExpDate"); | 265 field.name = ASCIIToUTF16("ExpDate"); |
| 252 list_.push_back(new AutofillField(field, ASCIIToUTF16("month3"))); | 266 list_.push_back( |
| 267 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month3"))); |
| 253 | 268 |
| 254 field.label = ASCIIToUTF16("Expiration date Month / Year"); | 269 field.label = ASCIIToUTF16("Expiration date Month / Year"); |
| 255 field.name = ASCIIToUTF16("ExpDate"); | 270 field.name = ASCIIToUTF16("ExpDate"); |
| 256 list_.push_back(new AutofillField(field, ASCIIToUTF16("year4"))); | 271 list_.push_back( |
| 272 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year4"))); |
| 257 | 273 |
| 258 Parse(); | 274 Parse(); |
| 259 ASSERT_NE(nullptr, field_.get()); | 275 ASSERT_NE(nullptr, field_.get()); |
| 260 AddClassifications(); | 276 AddClassifications(); |
| 261 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != | 277 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != |
| 262 field_candidates_map_.end()); | 278 field_candidates_map_.end()); |
| 263 EXPECT_EQ(CREDIT_CARD_NAME_FULL, | 279 EXPECT_EQ(CREDIT_CARD_NAME_FULL, |
| 264 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); | 280 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); |
| 265 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number2")) != | 281 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number2")) != |
| 266 field_candidates_map_.end()); | 282 field_candidates_map_.end()); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 // Clean up after previous test cases. | 352 // Clean up after previous test cases. |
| 337 list_.clear(); | 353 list_.clear(); |
| 338 field_.reset(); | 354 field_.reset(); |
| 339 field_candidates_map_.clear(); | 355 field_candidates_map_.clear(); |
| 340 | 356 |
| 341 FormFieldData field; | 357 FormFieldData field; |
| 342 field.form_control_type = "text"; | 358 field.form_control_type = "text"; |
| 343 | 359 |
| 344 field.label = ASCIIToUTF16("Name on Card"); | 360 field.label = ASCIIToUTF16("Name on Card"); |
| 345 field.name = ASCIIToUTF16("name_on_card"); | 361 field.name = ASCIIToUTF16("name_on_card"); |
| 346 list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); | 362 list_.push_back( |
| 363 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name1"))); |
| 347 | 364 |
| 348 field.label = ASCIIToUTF16("Card Number"); | 365 field.label = ASCIIToUTF16("Card Number"); |
| 349 field.name = ASCIIToUTF16("card_number"); | 366 field.name = ASCIIToUTF16("card_number"); |
| 350 list_.push_back(new AutofillField(field, ASCIIToUTF16("num2"))); | 367 list_.push_back( |
| 368 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("num2"))); |
| 351 | 369 |
| 352 field.label = ASCIIToUTF16(test_case.label); | 370 field.label = ASCIIToUTF16(test_case.label); |
| 353 if (test_case.max_length != 0) { | 371 if (test_case.max_length != 0) { |
| 354 field.max_length = test_case.max_length; | 372 field.max_length = test_case.max_length; |
| 355 } | 373 } |
| 356 field.name = ASCIIToUTF16("cc_exp"); | 374 field.name = ASCIIToUTF16("cc_exp"); |
| 357 list_.push_back(new AutofillField(field, ASCIIToUTF16("exp3"))); | 375 list_.push_back( |
| 376 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("exp3"))); |
| 358 | 377 |
| 359 Parse(); | 378 Parse(); |
| 360 | 379 |
| 361 // Assists in identifing which case has failed. | 380 // Assists in identifing which case has failed. |
| 362 SCOPED_TRACE(test_case.expected_prediction); | 381 SCOPED_TRACE(test_case.expected_prediction); |
| 363 SCOPED_TRACE(test_case.max_length); | 382 SCOPED_TRACE(test_case.max_length); |
| 364 SCOPED_TRACE(test_case.label); | 383 SCOPED_TRACE(test_case.label); |
| 365 | 384 |
| 366 if (test_case.expected_prediction == UNKNOWN_TYPE) { | 385 if (test_case.expected_prediction == UNKNOWN_TYPE) { |
| 367 // Expect failure and continue to next test case. | 386 // Expect failure and continue to next test case. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 390 field_candidates_map_[ASCIIToUTF16("exp3")].BestHeuristicType()); | 409 field_candidates_map_[ASCIIToUTF16("exp3")].BestHeuristicType()); |
| 391 } | 410 } |
| 392 } | 411 } |
| 393 | 412 |
| 394 TEST_F(CreditCardFieldTest, ParseCreditCardHolderNameWithCCFullName) { | 413 TEST_F(CreditCardFieldTest, ParseCreditCardHolderNameWithCCFullName) { |
| 395 FormFieldData field; | 414 FormFieldData field; |
| 396 field.form_control_type = "text"; | 415 field.form_control_type = "text"; |
| 397 | 416 |
| 398 field.label = ASCIIToUTF16("Name"); | 417 field.label = ASCIIToUTF16("Name"); |
| 399 field.name = ASCIIToUTF16("ccfullname"); | 418 field.name = ASCIIToUTF16("ccfullname"); |
| 400 list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); | 419 list_.push_back( |
| 420 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name1"))); |
| 401 | 421 |
| 402 Parse(); | 422 Parse(); |
| 403 ASSERT_NE(nullptr, field_.get()); | 423 ASSERT_NE(nullptr, field_.get()); |
| 404 AddClassifications(); | 424 AddClassifications(); |
| 405 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != | 425 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != |
| 406 field_candidates_map_.end()); | 426 field_candidates_map_.end()); |
| 407 EXPECT_EQ(CREDIT_CARD_NAME_FULL, | 427 EXPECT_EQ(CREDIT_CARD_NAME_FULL, |
| 408 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); | 428 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); |
| 409 } | 429 } |
| 410 | 430 |
| 411 // Verifies that <input type="month"> controls are able to be parsed correctly. | 431 // Verifies that <input type="month"> controls are able to be parsed correctly. |
| 412 TEST_F(CreditCardFieldTest, ParseMonthControl) { | 432 TEST_F(CreditCardFieldTest, ParseMonthControl) { |
| 413 FormFieldData field; | 433 FormFieldData field; |
| 414 | 434 |
| 415 field.form_control_type = "text"; | 435 field.form_control_type = "text"; |
| 416 field.label = ASCIIToUTF16("Card number:"); | 436 field.label = ASCIIToUTF16("Card number:"); |
| 417 field.name = ASCIIToUTF16("ccnumber"); | 437 field.name = ASCIIToUTF16("ccnumber"); |
| 418 list_.push_back(new AutofillField(field, ASCIIToUTF16("number1"))); | 438 list_.push_back( |
| 439 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number1"))); |
| 419 | 440 |
| 420 field.form_control_type = "month"; | 441 field.form_control_type = "month"; |
| 421 field.label = ASCIIToUTF16("Expiration date:"); | 442 field.label = ASCIIToUTF16("Expiration date:"); |
| 422 field.name = ASCIIToUTF16("ccexp"); | 443 field.name = ASCIIToUTF16("ccexp"); |
| 423 list_.push_back(new AutofillField(field, ASCIIToUTF16("date2"))); | 444 list_.push_back( |
| 445 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("date2"))); |
| 424 | 446 |
| 425 Parse(); | 447 Parse(); |
| 426 ASSERT_NE(nullptr, field_.get()); | 448 ASSERT_NE(nullptr, field_.get()); |
| 427 AddClassifications(); | 449 AddClassifications(); |
| 428 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number1")) != | 450 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number1")) != |
| 429 field_candidates_map_.end()); | 451 field_candidates_map_.end()); |
| 430 EXPECT_EQ(CREDIT_CARD_NUMBER, | 452 EXPECT_EQ(CREDIT_CARD_NUMBER, |
| 431 field_candidates_map_[ASCIIToUTF16("number1")].BestHeuristicType()); | 453 field_candidates_map_[ASCIIToUTF16("number1")].BestHeuristicType()); |
| 432 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("date2")) != | 454 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("date2")) != |
| 433 field_candidates_map_.end()); | 455 field_candidates_map_.end()); |
| 434 EXPECT_EQ(CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, | 456 EXPECT_EQ(CREDIT_CARD_EXP_DATE_4_DIGIT_YEAR, |
| 435 field_candidates_map_[ASCIIToUTF16("date2")].BestHeuristicType()); | 457 field_candidates_map_[ASCIIToUTF16("date2")].BestHeuristicType()); |
| 436 } | 458 } |
| 437 | 459 |
| 438 // Verify that heuristics <input name="ccyear" maxlength="2"/> considers | 460 // Verify that heuristics <input name="ccyear" maxlength="2"/> considers |
| 439 // *maxlength* attribute while parsing 2 Digit expiration year. | 461 // *maxlength* attribute while parsing 2 Digit expiration year. |
| 440 TEST_F(CreditCardFieldTest, ParseCreditCardExpYear_2DigitMaxLength) { | 462 TEST_F(CreditCardFieldTest, ParseCreditCardExpYear_2DigitMaxLength) { |
| 441 FormFieldData field; | 463 FormFieldData field; |
| 442 field.form_control_type = "text"; | 464 field.form_control_type = "text"; |
| 443 | 465 |
| 444 field.label = ASCIIToUTF16("Card Number"); | 466 field.label = ASCIIToUTF16("Card Number"); |
| 445 field.name = ASCIIToUTF16("card_number"); | 467 field.name = ASCIIToUTF16("card_number"); |
| 446 list_.push_back(new AutofillField(field, ASCIIToUTF16("number"))); | 468 list_.push_back( |
| 469 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number"))); |
| 447 | 470 |
| 448 field.label = ASCIIToUTF16("Expiration Date"); | 471 field.label = ASCIIToUTF16("Expiration Date"); |
| 449 field.name = ASCIIToUTF16("ccmonth"); | 472 field.name = ASCIIToUTF16("ccmonth"); |
| 450 list_.push_back(new AutofillField(field, ASCIIToUTF16("month"))); | 473 list_.push_back( |
| 474 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month"))); |
| 451 | 475 |
| 452 field.name = ASCIIToUTF16("ccyear"); | 476 field.name = ASCIIToUTF16("ccyear"); |
| 453 field.max_length = 2; | 477 field.max_length = 2; |
| 454 list_.push_back(new AutofillField(field, ASCIIToUTF16("year"))); | 478 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year"))); |
| 455 | 479 |
| 456 Parse(); | 480 Parse(); |
| 457 ASSERT_NE(nullptr, field_.get()); | 481 ASSERT_NE(nullptr, field_.get()); |
| 458 AddClassifications(); | 482 AddClassifications(); |
| 459 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) != | 483 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) != |
| 460 field_candidates_map_.end()); | 484 field_candidates_map_.end()); |
| 461 EXPECT_EQ(CREDIT_CARD_NUMBER, | 485 EXPECT_EQ(CREDIT_CARD_NUMBER, |
| 462 field_candidates_map_[ASCIIToUTF16("number")].BestHeuristicType()); | 486 field_candidates_map_[ASCIIToUTF16("number")].BestHeuristicType()); |
| 463 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month")) != | 487 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("month")) != |
| 464 field_candidates_map_.end()); | 488 field_candidates_map_.end()); |
| 465 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, | 489 EXPECT_EQ(CREDIT_CARD_EXP_MONTH, |
| 466 field_candidates_map_[ASCIIToUTF16("month")].BestHeuristicType()); | 490 field_candidates_map_[ASCIIToUTF16("month")].BestHeuristicType()); |
| 467 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year")) != | 491 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("year")) != |
| 468 field_candidates_map_.end()); | 492 field_candidates_map_.end()); |
| 469 EXPECT_EQ(CREDIT_CARD_EXP_2_DIGIT_YEAR, | 493 EXPECT_EQ(CREDIT_CARD_EXP_2_DIGIT_YEAR, |
| 470 field_candidates_map_[ASCIIToUTF16("year")].BestHeuristicType()); | 494 field_candidates_map_[ASCIIToUTF16("year")].BestHeuristicType()); |
| 471 } | 495 } |
| 472 | 496 |
| 473 TEST_F(CreditCardFieldTest, ParseCreditCardNumberWithSplit) { | 497 TEST_F(CreditCardFieldTest, ParseCreditCardNumberWithSplit) { |
| 474 FormFieldData field; | 498 FormFieldData field; |
| 475 field.form_control_type = "text"; | 499 field.form_control_type = "text"; |
| 476 | 500 |
| 477 field.label = ASCIIToUTF16("Card Number"); | 501 field.label = ASCIIToUTF16("Card Number"); |
| 478 field.name = ASCIIToUTF16("card_number_q1"); | 502 field.name = ASCIIToUTF16("card_number_q1"); |
| 479 field.max_length = 4; | 503 field.max_length = 4; |
| 480 list_.push_back(new AutofillField(field, ASCIIToUTF16("number1"))); | 504 list_.push_back( |
| 505 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number1"))); |
| 481 | 506 |
| 482 field.label = ASCIIToUTF16("Card Number"); | 507 field.label = ASCIIToUTF16("Card Number"); |
| 483 field.name = ASCIIToUTF16("card_number_q2"); | 508 field.name = ASCIIToUTF16("card_number_q2"); |
| 484 field.max_length = 4; | 509 field.max_length = 4; |
| 485 list_.push_back(new AutofillField(field, ASCIIToUTF16("number2"))); | 510 list_.push_back( |
| 511 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number2"))); |
| 486 | 512 |
| 487 field.label = ASCIIToUTF16("Card Number"); | 513 field.label = ASCIIToUTF16("Card Number"); |
| 488 field.name = ASCIIToUTF16("card_number_q3"); | 514 field.name = ASCIIToUTF16("card_number_q3"); |
| 489 field.max_length = 4; | 515 field.max_length = 4; |
| 490 list_.push_back(new AutofillField(field, ASCIIToUTF16("number3"))); | 516 list_.push_back( |
| 517 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number3"))); |
| 491 | 518 |
| 492 // For last credit card number input field it simply ignores the |max_length| | 519 // For last credit card number input field it simply ignores the |max_length| |
| 493 // attribute. So even having a very big number, does not conside it an invalid | 520 // attribute. So even having a very big number, does not conside it an invalid |
| 494 // split for autofilling. | 521 // split for autofilling. |
| 495 field.label = ASCIIToUTF16("Card Number"); | 522 field.label = ASCIIToUTF16("Card Number"); |
| 496 field.name = ASCIIToUTF16("card_number_q4"); | 523 field.name = ASCIIToUTF16("card_number_q4"); |
| 497 field.max_length = 20; | 524 field.max_length = 20; |
| 498 list_.push_back(new AutofillField(field, ASCIIToUTF16("number4"))); | 525 list_.push_back( |
| 526 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number4"))); |
| 499 | 527 |
| 500 field.label = ASCIIToUTF16("Exp Month"); | 528 field.label = ASCIIToUTF16("Exp Month"); |
| 501 field.name = ASCIIToUTF16("ccmonth"); | 529 field.name = ASCIIToUTF16("ccmonth"); |
| 502 list_.push_back(new AutofillField(field, ASCIIToUTF16("month5"))); | 530 list_.push_back( |
| 531 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month5"))); |
| 503 | 532 |
| 504 field.label = ASCIIToUTF16("Exp Year"); | 533 field.label = ASCIIToUTF16("Exp Year"); |
| 505 field.name = ASCIIToUTF16("ccyear"); | 534 field.name = ASCIIToUTF16("ccyear"); |
| 506 list_.push_back(new AutofillField(field, ASCIIToUTF16("year6"))); | 535 list_.push_back( |
| 536 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year6"))); |
| 507 | 537 |
| 508 Parse(); | 538 Parse(); |
| 509 ASSERT_NE(nullptr, field_.get()); | 539 ASSERT_NE(nullptr, field_.get()); |
| 510 AddClassifications(); | 540 AddClassifications(); |
| 511 | 541 |
| 512 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number1")) != | 542 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number1")) != |
| 513 field_candidates_map_.end()); | 543 field_candidates_map_.end()); |
| 514 EXPECT_EQ(CREDIT_CARD_NUMBER, | 544 EXPECT_EQ(CREDIT_CARD_NUMBER, |
| 515 field_candidates_map_[ASCIIToUTF16("number1")].BestHeuristicType()); | 545 field_candidates_map_[ASCIIToUTF16("number1")].BestHeuristicType()); |
| 516 EXPECT_EQ(0U, list_[0]->credit_card_number_offset()); | 546 EXPECT_EQ(0U, list_[0]->credit_card_number_offset()); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 542 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, | 572 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 543 field_candidates_map_[ASCIIToUTF16("year6")].BestHeuristicType()); | 573 field_candidates_map_[ASCIIToUTF16("year6")].BestHeuristicType()); |
| 544 } | 574 } |
| 545 | 575 |
| 546 TEST_F(CreditCardFieldTest, ParseMultipleCreditCardNumbers) { | 576 TEST_F(CreditCardFieldTest, ParseMultipleCreditCardNumbers) { |
| 547 FormFieldData field; | 577 FormFieldData field; |
| 548 field.form_control_type = "text"; | 578 field.form_control_type = "text"; |
| 549 | 579 |
| 550 field.label = ASCIIToUTF16("Name on Card"); | 580 field.label = ASCIIToUTF16("Name on Card"); |
| 551 field.name = ASCIIToUTF16("name_on_card"); | 581 field.name = ASCIIToUTF16("name_on_card"); |
| 552 list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); | 582 list_.push_back( |
| 583 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name1"))); |
| 553 | 584 |
| 554 field.label = ASCIIToUTF16("Card Number"); | 585 field.label = ASCIIToUTF16("Card Number"); |
| 555 field.name = ASCIIToUTF16("card_number"); | 586 field.name = ASCIIToUTF16("card_number"); |
| 556 list_.push_back(new AutofillField(field, ASCIIToUTF16("number2"))); | 587 list_.push_back( |
| 588 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number2"))); |
| 557 | 589 |
| 558 field.label = ASCIIToUTF16("Confirm Card Number"); | 590 field.label = ASCIIToUTF16("Confirm Card Number"); |
| 559 field.name = ASCIIToUTF16("confirm_card_number"); | 591 field.name = ASCIIToUTF16("confirm_card_number"); |
| 560 list_.push_back(new AutofillField(field, ASCIIToUTF16("number3"))); | 592 list_.push_back( |
| 593 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number3"))); |
| 561 | 594 |
| 562 field.label = ASCIIToUTF16("Exp Month"); | 595 field.label = ASCIIToUTF16("Exp Month"); |
| 563 field.name = ASCIIToUTF16("ccmonth"); | 596 field.name = ASCIIToUTF16("ccmonth"); |
| 564 list_.push_back(new AutofillField(field, ASCIIToUTF16("month4"))); | 597 list_.push_back( |
| 598 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month4"))); |
| 565 | 599 |
| 566 field.label = ASCIIToUTF16("Exp Year"); | 600 field.label = ASCIIToUTF16("Exp Year"); |
| 567 field.name = ASCIIToUTF16("ccyear"); | 601 field.name = ASCIIToUTF16("ccyear"); |
| 568 list_.push_back(new AutofillField(field, ASCIIToUTF16("year5"))); | 602 list_.push_back( |
| 603 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year5"))); |
| 569 | 604 |
| 570 Parse(); | 605 Parse(); |
| 571 ASSERT_NE(nullptr, field_.get()); | 606 ASSERT_NE(nullptr, field_.get()); |
| 572 AddClassifications(); | 607 AddClassifications(); |
| 573 | 608 |
| 574 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != | 609 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != |
| 575 field_candidates_map_.end()); | 610 field_candidates_map_.end()); |
| 576 EXPECT_EQ(CREDIT_CARD_NAME_FULL, | 611 EXPECT_EQ(CREDIT_CARD_NAME_FULL, |
| 577 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); | 612 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); |
| 578 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number2")) != | 613 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number2")) != |
| (...skipping 13 matching lines...) Expand all Loading... |
| 592 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, | 627 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 593 field_candidates_map_[ASCIIToUTF16("year5")].BestHeuristicType()); | 628 field_candidates_map_[ASCIIToUTF16("year5")].BestHeuristicType()); |
| 594 } | 629 } |
| 595 | 630 |
| 596 TEST_F(CreditCardFieldTest, ParseFirstAndLastNames) { | 631 TEST_F(CreditCardFieldTest, ParseFirstAndLastNames) { |
| 597 FormFieldData field; | 632 FormFieldData field; |
| 598 field.form_control_type = "text"; | 633 field.form_control_type = "text"; |
| 599 | 634 |
| 600 field.label = ASCIIToUTF16("First Name on Card"); | 635 field.label = ASCIIToUTF16("First Name on Card"); |
| 601 field.name = ASCIIToUTF16("cc-fname"); | 636 field.name = ASCIIToUTF16("cc-fname"); |
| 602 list_.push_back(new AutofillField(field, ASCIIToUTF16("name1"))); | 637 list_.push_back( |
| 638 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name1"))); |
| 603 | 639 |
| 604 field.label = ASCIIToUTF16("Last Name"); | 640 field.label = ASCIIToUTF16("Last Name"); |
| 605 field.name = ASCIIToUTF16("cc-lname"); | 641 field.name = ASCIIToUTF16("cc-lname"); |
| 606 list_.push_back(new AutofillField(field, ASCIIToUTF16("name2"))); | 642 list_.push_back( |
| 643 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name2"))); |
| 607 | 644 |
| 608 field.label = ASCIIToUTF16("Card Number"); | 645 field.label = ASCIIToUTF16("Card Number"); |
| 609 field.name = ASCIIToUTF16("card_number"); | 646 field.name = ASCIIToUTF16("card_number"); |
| 610 list_.push_back(new AutofillField(field, ASCIIToUTF16("number3"))); | 647 list_.push_back( |
| 648 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number3"))); |
| 611 | 649 |
| 612 field.label = ASCIIToUTF16("Exp Month"); | 650 field.label = ASCIIToUTF16("Exp Month"); |
| 613 field.name = ASCIIToUTF16("ccmonth"); | 651 field.name = ASCIIToUTF16("ccmonth"); |
| 614 list_.push_back(new AutofillField(field, ASCIIToUTF16("month4"))); | 652 list_.push_back( |
| 653 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month4"))); |
| 615 | 654 |
| 616 field.label = ASCIIToUTF16("Exp Year"); | 655 field.label = ASCIIToUTF16("Exp Year"); |
| 617 field.name = ASCIIToUTF16("ccyear"); | 656 field.name = ASCIIToUTF16("ccyear"); |
| 618 list_.push_back(new AutofillField(field, ASCIIToUTF16("year5"))); | 657 list_.push_back( |
| 658 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year5"))); |
| 619 | 659 |
| 620 Parse(); | 660 Parse(); |
| 621 ASSERT_NE(nullptr, field_.get()); | 661 ASSERT_NE(nullptr, field_.get()); |
| 622 AddClassifications(); | 662 AddClassifications(); |
| 623 | 663 |
| 624 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != | 664 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name1")) != |
| 625 field_candidates_map_.end()); | 665 field_candidates_map_.end()); |
| 626 EXPECT_EQ(CREDIT_CARD_NAME_FIRST, | 666 EXPECT_EQ(CREDIT_CARD_NAME_FIRST, |
| 627 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); | 667 field_candidates_map_[ASCIIToUTF16("name1")].BestHeuristicType()); |
| 628 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name2")) != | 668 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name2")) != |
| (...skipping 13 matching lines...) Expand all Loading... |
| 642 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, | 682 EXPECT_EQ(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| 643 field_candidates_map_[ASCIIToUTF16("year5")].BestHeuristicType()); | 683 field_candidates_map_[ASCIIToUTF16("year5")].BestHeuristicType()); |
| 644 } | 684 } |
| 645 | 685 |
| 646 TEST_F(CreditCardFieldTest, ParseConsecutiveCvc) { | 686 TEST_F(CreditCardFieldTest, ParseConsecutiveCvc) { |
| 647 FormFieldData field; | 687 FormFieldData field; |
| 648 field.form_control_type = "text"; | 688 field.form_control_type = "text"; |
| 649 | 689 |
| 650 field.label = ASCIIToUTF16("Name on Card"); | 690 field.label = ASCIIToUTF16("Name on Card"); |
| 651 field.name = ASCIIToUTF16("name_on_card"); | 691 field.name = ASCIIToUTF16("name_on_card"); |
| 652 list_.push_back(new AutofillField(field, ASCIIToUTF16("name"))); | 692 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name"))); |
| 653 | 693 |
| 654 field.label = ASCIIToUTF16("Card Number"); | 694 field.label = ASCIIToUTF16("Card Number"); |
| 655 field.name = ASCIIToUTF16("card_number"); | 695 field.name = ASCIIToUTF16("card_number"); |
| 656 list_.push_back(new AutofillField(field, ASCIIToUTF16("number"))); | 696 list_.push_back( |
| 697 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number"))); |
| 657 | 698 |
| 658 field.label = ASCIIToUTF16("Exp Month"); | 699 field.label = ASCIIToUTF16("Exp Month"); |
| 659 field.name = ASCIIToUTF16("ccmonth"); | 700 field.name = ASCIIToUTF16("ccmonth"); |
| 660 list_.push_back(new AutofillField(field, ASCIIToUTF16("month"))); | 701 list_.push_back( |
| 702 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month"))); |
| 661 | 703 |
| 662 field.label = ASCIIToUTF16("Exp Year"); | 704 field.label = ASCIIToUTF16("Exp Year"); |
| 663 field.name = ASCIIToUTF16("ccyear"); | 705 field.name = ASCIIToUTF16("ccyear"); |
| 664 list_.push_back(new AutofillField(field, ASCIIToUTF16("year"))); | 706 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year"))); |
| 665 | 707 |
| 666 field.label = ASCIIToUTF16("Verification"); | 708 field.label = ASCIIToUTF16("Verification"); |
| 667 field.name = ASCIIToUTF16("verification"); | 709 field.name = ASCIIToUTF16("verification"); |
| 668 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc"))); | 710 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("cvc"))); |
| 669 | 711 |
| 670 field.label = ASCIIToUTF16("Verification"); | 712 field.label = ASCIIToUTF16("Verification"); |
| 671 field.name = ASCIIToUTF16("verification"); | 713 field.name = ASCIIToUTF16("verification"); |
| 672 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc2"))); | 714 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("cvc2"))); |
| 673 | 715 |
| 674 MultipleParses(); | 716 MultipleParses(); |
| 675 | 717 |
| 676 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) != | 718 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) != |
| 677 field_candidates_map_.end()); | 719 field_candidates_map_.end()); |
| 678 EXPECT_EQ(CREDIT_CARD_NAME_FULL, | 720 EXPECT_EQ(CREDIT_CARD_NAME_FULL, |
| 679 field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType()); | 721 field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType()); |
| 680 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) != | 722 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) != |
| 681 field_candidates_map_.end()); | 723 field_candidates_map_.end()); |
| 682 EXPECT_EQ(CREDIT_CARD_NUMBER, | 724 EXPECT_EQ(CREDIT_CARD_NUMBER, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 698 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE, | 740 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE, |
| 699 field_candidates_map_[ASCIIToUTF16("cvc2")].BestHeuristicType()); | 741 field_candidates_map_[ASCIIToUTF16("cvc2")].BestHeuristicType()); |
| 700 } | 742 } |
| 701 | 743 |
| 702 TEST_F(CreditCardFieldTest, ParseNonConsecutiveCvc) { | 744 TEST_F(CreditCardFieldTest, ParseNonConsecutiveCvc) { |
| 703 FormFieldData field; | 745 FormFieldData field; |
| 704 field.form_control_type = "text"; | 746 field.form_control_type = "text"; |
| 705 | 747 |
| 706 field.label = ASCIIToUTF16("Name on Card"); | 748 field.label = ASCIIToUTF16("Name on Card"); |
| 707 field.name = ASCIIToUTF16("name_on_card"); | 749 field.name = ASCIIToUTF16("name_on_card"); |
| 708 list_.push_back(new AutofillField(field, ASCIIToUTF16("name"))); | 750 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("name"))); |
| 709 | 751 |
| 710 field.label = ASCIIToUTF16("Card Number"); | 752 field.label = ASCIIToUTF16("Card Number"); |
| 711 field.name = ASCIIToUTF16("card_number"); | 753 field.name = ASCIIToUTF16("card_number"); |
| 712 list_.push_back(new AutofillField(field, ASCIIToUTF16("number"))); | 754 list_.push_back( |
| 755 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("number"))); |
| 713 | 756 |
| 714 field.label = ASCIIToUTF16("Exp Month"); | 757 field.label = ASCIIToUTF16("Exp Month"); |
| 715 field.name = ASCIIToUTF16("ccmonth"); | 758 field.name = ASCIIToUTF16("ccmonth"); |
| 716 list_.push_back(new AutofillField(field, ASCIIToUTF16("month"))); | 759 list_.push_back( |
| 760 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("month"))); |
| 717 | 761 |
| 718 field.label = ASCIIToUTF16("Exp Year"); | 762 field.label = ASCIIToUTF16("Exp Year"); |
| 719 field.name = ASCIIToUTF16("ccyear"); | 763 field.name = ASCIIToUTF16("ccyear"); |
| 720 list_.push_back(new AutofillField(field, ASCIIToUTF16("year"))); | 764 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("year"))); |
| 721 | 765 |
| 722 field.label = ASCIIToUTF16("Verification"); | 766 field.label = ASCIIToUTF16("Verification"); |
| 723 field.name = ASCIIToUTF16("verification"); | 767 field.name = ASCIIToUTF16("verification"); |
| 724 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc"))); | 768 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("cvc"))); |
| 725 | 769 |
| 726 field.label = ASCIIToUTF16("Unknown"); | 770 field.label = ASCIIToUTF16("Unknown"); |
| 727 field.name = ASCIIToUTF16("unknown"); | 771 field.name = ASCIIToUTF16("unknown"); |
| 728 list_.push_back(new AutofillField(field, ASCIIToUTF16("unknown"))); | 772 list_.push_back( |
| 773 base::MakeUnique<AutofillField>(field, ASCIIToUTF16("unknown"))); |
| 729 | 774 |
| 730 field.label = ASCIIToUTF16("Verification"); | 775 field.label = ASCIIToUTF16("Verification"); |
| 731 field.name = ASCIIToUTF16("verification"); | 776 field.name = ASCIIToUTF16("verification"); |
| 732 list_.push_back(new AutofillField(field, ASCIIToUTF16("cvc2"))); | 777 list_.push_back(base::MakeUnique<AutofillField>(field, ASCIIToUTF16("cvc2"))); |
| 733 | 778 |
| 734 MultipleParses(); | 779 MultipleParses(); |
| 735 | 780 |
| 736 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) != | 781 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("name")) != |
| 737 field_candidates_map_.end()); | 782 field_candidates_map_.end()); |
| 738 EXPECT_EQ(CREDIT_CARD_NAME_FULL, | 783 EXPECT_EQ(CREDIT_CARD_NAME_FULL, |
| 739 field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType()); | 784 field_candidates_map_[ASCIIToUTF16("name")].BestHeuristicType()); |
| 740 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) != | 785 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("number")) != |
| 741 field_candidates_map_.end()); | 786 field_candidates_map_.end()); |
| 742 EXPECT_EQ(CREDIT_CARD_NUMBER, | 787 EXPECT_EQ(CREDIT_CARD_NUMBER, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 753 field_candidates_map_.end()); | 798 field_candidates_map_.end()); |
| 754 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE, | 799 EXPECT_EQ(CREDIT_CARD_VERIFICATION_CODE, |
| 755 field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType()); | 800 field_candidates_map_[ASCIIToUTF16("cvc")].BestHeuristicType()); |
| 756 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("unknown")) == | 801 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("unknown")) == |
| 757 field_candidates_map_.end()); | 802 field_candidates_map_.end()); |
| 758 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc2")) == | 803 ASSERT_TRUE(field_candidates_map_.find(ASCIIToUTF16("cvc2")) == |
| 759 field_candidates_map_.end()); | 804 field_candidates_map_.end()); |
| 760 } | 805 } |
| 761 | 806 |
| 762 } // namespace autofill | 807 } // namespace autofill |
| OLD | NEW |