| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/autofill/credit_card_field.h" | 5 #include "chrome/browser/autofill/credit_card_field.h" |
| 6 | 6 |
| 7 #include "base/scoped_ptr.h" | 7 #include "base/scoped_ptr.h" |
| 8 #include "base/string16.h" | 8 #include "base/string16.h" |
| 9 #include "chrome/browser/autofill/autofill_field.h" | 9 #include "chrome/browser/autofill/autofill_field.h" |
| 10 | 10 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 | 23 |
| 24 Add(field_type_map, type_, AutoFillType(CREDIT_CARD_TYPE)); | 24 Add(field_type_map, type_, AutoFillType(CREDIT_CARD_TYPE)); |
| 25 | 25 |
| 26 ok = ok && Add(field_type_map, expiration_month_, | 26 ok = ok && Add(field_type_map, expiration_month_, |
| 27 AutoFillType(CREDIT_CARD_EXP_MONTH)); | 27 AutoFillType(CREDIT_CARD_EXP_MONTH)); |
| 28 DCHECK(ok); | 28 DCHECK(ok); |
| 29 ok = ok && Add(field_type_map, expiration_year_, | 29 ok = ok && Add(field_type_map, expiration_year_, |
| 30 AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR)); | 30 AutoFillType(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 31 DCHECK(ok); | 31 DCHECK(ok); |
| 32 | 32 |
| 33 Add(field_type_map, verification_, | |
| 34 AutoFillType(CREDIT_CARD_VERIFICATION_CODE)); | |
| 35 | |
| 36 return ok; | 33 return ok; |
| 37 } | 34 } |
| 38 | 35 |
| 39 // static | 36 // static |
| 40 CreditCardField* CreditCardField::Parse( | 37 CreditCardField* CreditCardField::Parse( |
| 41 std::vector<AutoFillField*>::const_iterator* iter, | 38 std::vector<AutoFillField*>::const_iterator* iter, |
| 42 bool is_ecml) { | 39 bool is_ecml) { |
| 43 scoped_ptr<CreditCardField> credit_card_field(new CreditCardField); | 40 scoped_ptr<CreditCardField> credit_card_field(new CreditCardField); |
| 44 std::vector<AutoFillField*>::const_iterator q = *iter; | 41 std::vector<AutoFillField*>::const_iterator q = *iter; |
| 45 string16 pattern; | 42 string16 pattern; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 ParseText(&p, ASCIIToUTF16("^clnm"), | 78 ParseText(&p, ASCIIToUTF16("^clnm"), |
| 82 &credit_card_field->cardholder_last_)) { | 79 &credit_card_field->cardholder_last_)) { |
| 83 credit_card_field->cardholder_ = first; | 80 credit_card_field->cardholder_ = first; |
| 84 q = p; | 81 q = p; |
| 85 continue; | 82 continue; |
| 86 } | 83 } |
| 87 } | 84 } |
| 88 | 85 |
| 89 // TODO(jhawkins): Parse the type select control. | 86 // TODO(jhawkins): Parse the type select control. |
| 90 | 87 |
| 91 // We look for a card security code before we look for a credit card number | |
| 92 // and match the general term "number". The security code has a plethora of | |
| 93 // names; we've seen "verification #", "verification number", | |
| 94 // "card identification number" and others listed in the ParseText() call | |
| 95 // below. | |
| 96 if (is_ecml) { | |
| 97 pattern = GetEcmlPattern(kEcmlCardVerification); | |
| 98 } else { | |
| 99 pattern = ASCIIToUTF16( | |
| 100 "verification|card identification|cvn|security code|cvv code|cvc"); | |
| 101 } | |
| 102 | |
| 103 if (credit_card_field->verification_ == NULL && | |
| 104 ParseText(&q, pattern, &credit_card_field->verification_)) { | |
| 105 continue; | |
| 106 } | |
| 107 | |
| 108 if (is_ecml) | 88 if (is_ecml) |
| 109 pattern = GetEcmlPattern(kEcmlCardNumber); | 89 pattern = GetEcmlPattern(kEcmlCardNumber); |
| 110 else | 90 else |
| 111 pattern = ASCIIToUTF16("number|card #|card no.|card_number|card number"); | 91 pattern = ASCIIToUTF16("number|card #|card no.|card_number|card number"); |
| 112 | 92 |
| 113 if (credit_card_field->number_ == NULL && ParseText(&q, pattern, | 93 if (credit_card_field->number_ == NULL && ParseText(&q, pattern, |
| 114 &credit_card_field->number_)) | 94 &credit_card_field->number_)) |
| 115 continue; | 95 continue; |
| 116 | 96 |
| 117 // "Expiration date" is the most common label here, but some pages have | 97 // "Expiration date" is the most common label here, but some pages have |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 } | 150 } |
| 171 | 151 |
| 172 return NULL; | 152 return NULL; |
| 173 } | 153 } |
| 174 | 154 |
| 175 CreditCardField::CreditCardField() | 155 CreditCardField::CreditCardField() |
| 176 : cardholder_(NULL), | 156 : cardholder_(NULL), |
| 177 cardholder_last_(NULL), | 157 cardholder_last_(NULL), |
| 178 type_(NULL), | 158 type_(NULL), |
| 179 number_(NULL), | 159 number_(NULL), |
| 180 verification_(NULL), | |
| 181 expiration_month_(NULL), | 160 expiration_month_(NULL), |
| 182 expiration_year_(NULL) { | 161 expiration_year_(NULL) { |
| 183 } | 162 } |
| OLD | NEW |