OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/browser/credit_card.h" | 5 #include "components/autofill/browser/credit_card.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <ostream> | 9 #include <ostream> |
10 #include <string> | 10 #include <string> |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 } | 187 } |
188 } | 188 } |
189 | 189 |
190 *num = 0; | 190 *num = 0; |
191 return false; | 191 return false; |
192 } | 192 } |
193 | 193 |
194 } // namespace | 194 } // namespace |
195 | 195 |
196 CreditCard::CreditCard(const std::string& guid) | 196 CreditCard::CreditCard(const std::string& guid) |
197 : type_(kGenericCard), | 197 : AutofillDataModel(guid), |
| 198 type_(kGenericCard), |
198 expiration_month_(0), | 199 expiration_month_(0), |
199 expiration_year_(0), | 200 expiration_year_(0) { |
200 guid_(guid) { | |
201 } | 201 } |
202 | 202 |
203 CreditCard::CreditCard() | 203 CreditCard::CreditCard() |
204 : type_(kGenericCard), | 204 : AutofillDataModel(base::GenerateGUID()), |
| 205 type_(kGenericCard), |
205 expiration_month_(0), | 206 expiration_month_(0), |
206 expiration_year_(0), | 207 expiration_year_(0) { |
207 guid_(base::GenerateGUID()) { | |
208 } | 208 } |
209 | 209 |
210 CreditCard::CreditCard(const CreditCard& credit_card) : FormGroup() { | 210 CreditCard::CreditCard(const CreditCard& credit_card) |
| 211 : AutofillDataModel(std::string()) { |
211 operator=(credit_card); | 212 operator=(credit_card); |
212 } | 213 } |
213 | 214 |
214 CreditCard::~CreditCard() {} | 215 CreditCard::~CreditCard() {} |
215 | 216 |
216 // static | 217 // static |
217 const base::string16 CreditCard::StripSeparators(const base::string16& number) { | 218 const base::string16 CreditCard::StripSeparators(const base::string16& number) { |
218 const char16 kSeparators[] = {'-', ' ', '\0'}; | 219 const char16 kSeparators[] = {'-', ' ', '\0'}; |
219 base::string16 stripped; | 220 base::string16 stripped; |
220 RemoveChars(number, kSeparators, &stripped); | 221 RemoveChars(number, kSeparators, &stripped); |
(...skipping 16 matching lines...) Expand all Loading... |
237 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_SOLO); | 238 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_SOLO); |
238 if (type == kVisaCard) | 239 if (type == kVisaCard) |
239 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_VISA); | 240 return l10n_util::GetStringUTF16(IDS_AUTOFILL_CC_VISA); |
240 | 241 |
241 // If you hit this DCHECK, the above list of cases needs to be updated to | 242 // If you hit this DCHECK, the above list of cases needs to be updated to |
242 // include a new card. | 243 // include a new card. |
243 DCHECK_EQ(kGenericCard, type); | 244 DCHECK_EQ(kGenericCard, type); |
244 return base::string16(); | 245 return base::string16(); |
245 } | 246 } |
246 | 247 |
247 std::string CreditCard::GetGUID() const { | |
248 return guid(); | |
249 } | |
250 | |
251 base::string16 CreditCard::GetRawInfo(AutofillFieldType type) const { | 248 base::string16 CreditCard::GetRawInfo(AutofillFieldType type) const { |
252 switch (type) { | 249 switch (type) { |
253 case CREDIT_CARD_NAME: | 250 case CREDIT_CARD_NAME: |
254 return name_on_card_; | 251 return name_on_card_; |
255 | 252 |
256 case CREDIT_CARD_EXP_MONTH: | 253 case CREDIT_CARD_EXP_MONTH: |
257 return ExpirationMonthAsString(); | 254 return ExpirationMonthAsString(); |
258 | 255 |
259 case CREDIT_CARD_EXP_2_DIGIT_YEAR: | 256 case CREDIT_CARD_EXP_2_DIGIT_YEAR: |
260 return Expiration2DigitYearAsString(); | 257 return Expiration2DigitYearAsString(); |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 | 478 |
482 void CreditCard::operator=(const CreditCard& credit_card) { | 479 void CreditCard::operator=(const CreditCard& credit_card) { |
483 if (this == &credit_card) | 480 if (this == &credit_card) |
484 return; | 481 return; |
485 | 482 |
486 number_ = credit_card.number_; | 483 number_ = credit_card.number_; |
487 name_on_card_ = credit_card.name_on_card_; | 484 name_on_card_ = credit_card.name_on_card_; |
488 type_ = credit_card.type_; | 485 type_ = credit_card.type_; |
489 expiration_month_ = credit_card.expiration_month_; | 486 expiration_month_ = credit_card.expiration_month_; |
490 expiration_year_ = credit_card.expiration_year_; | 487 expiration_year_ = credit_card.expiration_year_; |
491 guid_ = credit_card.guid_; | 488 |
| 489 set_guid(credit_card.guid()); |
492 } | 490 } |
493 | 491 |
494 bool CreditCard::UpdateFromImportedCard(const CreditCard& imported_card, | 492 bool CreditCard::UpdateFromImportedCard(const CreditCard& imported_card, |
495 const std::string& app_locale) { | 493 const std::string& app_locale) { |
496 if (this->GetInfo(CREDIT_CARD_NUMBER, app_locale) != | 494 if (this->GetInfo(CREDIT_CARD_NUMBER, app_locale) != |
497 imported_card.GetInfo(CREDIT_CARD_NUMBER, app_locale)) { | 495 imported_card.GetInfo(CREDIT_CARD_NUMBER, app_locale)) { |
498 return false; | 496 return false; |
499 } | 497 } |
500 | 498 |
501 // Note that the card number is intentionally not updated, so as to preserve | 499 // Note that the card number is intentionally not updated, so as to preserve |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
547 int comparison = GetRawInfo(types[index]).compare( | 545 int comparison = GetRawInfo(types[index]).compare( |
548 credit_card.GetRawInfo(types[index])); | 546 credit_card.GetRawInfo(types[index])); |
549 if (comparison != 0) | 547 if (comparison != 0) |
550 return comparison; | 548 return comparison; |
551 } | 549 } |
552 | 550 |
553 return 0; | 551 return 0; |
554 } | 552 } |
555 | 553 |
556 bool CreditCard::operator==(const CreditCard& credit_card) const { | 554 bool CreditCard::operator==(const CreditCard& credit_card) const { |
557 if (guid_ != credit_card.guid_) | 555 return guid() == credit_card.guid() && Compare(credit_card) == 0; |
558 return false; | |
559 | |
560 return Compare(credit_card) == 0; | |
561 } | 556 } |
562 | 557 |
563 bool CreditCard::operator!=(const CreditCard& credit_card) const { | 558 bool CreditCard::operator!=(const CreditCard& credit_card) const { |
564 return !operator==(credit_card); | 559 return !operator==(credit_card); |
565 } | 560 } |
566 | 561 |
567 bool CreditCard::IsEmpty(const std::string& app_locale) const { | 562 bool CreditCard::IsEmpty(const std::string& app_locale) const { |
568 FieldTypeSet types; | 563 FieldTypeSet types; |
569 GetNonEmptyTypes(app_locale, &types); | 564 GetNonEmptyTypes(app_locale, &types); |
570 return types.empty(); | 565 return types.empty(); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
677 const char* const kAmericanExpressCard = "americanExpressCC"; | 672 const char* const kAmericanExpressCard = "americanExpressCC"; |
678 const char* const kDinersCard = "dinersCC"; | 673 const char* const kDinersCard = "dinersCC"; |
679 const char* const kDiscoverCard = "discoverCC"; | 674 const char* const kDiscoverCard = "discoverCC"; |
680 const char* const kGenericCard = "genericCC"; | 675 const char* const kGenericCard = "genericCC"; |
681 const char* const kJCBCard = "jcbCC"; | 676 const char* const kJCBCard = "jcbCC"; |
682 const char* const kMasterCard = "masterCardCC"; | 677 const char* const kMasterCard = "masterCardCC"; |
683 const char* const kSoloCard = "soloCC"; | 678 const char* const kSoloCard = "soloCC"; |
684 const char* const kVisaCard = "visaCC"; | 679 const char* const kVisaCard = "visaCC"; |
685 | 680 |
686 } // namespace autofill | 681 } // namespace autofill |
OLD | NEW |