Commit 06446923 authored by redatawfik's avatar redatawfik Committed by Commit Bot

Checks for credit cards duplication.

1)Checks if there is any saved credit card with the same number.
2)If there is any, then update saved credit card object with the new data
update it in DB by PersonalDataManager.
3)Adds method for updating credit card properties.

Change-Id: Ife5efb47a0bee6439ae05981116bc891b7289f7e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1731839
Commit-Queue: Reda Tawfik <redatawfik@google.com>
Reviewed-by: default avatarSergio Collazos <sczs@chromium.org>
Reviewed-by: default avatarJavier Ernesto Flores Robles <javierrobles@chromium.org>
Cr-Commit-Position: refs/heads/master@{#684432}
parent ff7dace0
......@@ -51,24 +51,13 @@
expirationMonth:(NSString*)expirationMonth
expirationYear:(NSString*)expirationYear {
autofill::CreditCard creditCard = autofill::CreditCard();
[self updateCreditCard:&creditCard
cardHolderName:cardHolderName
cardNumber:cardNumber
expirationMonth:expirationMonth
expirationYear:expirationYear];
const std::string& appLocal = GetApplicationContext()->GetApplicationLocale();
creditCard.SetInfo(autofill::AutofillType(AutofillTypeFromAutofillUIType(
AutofillUITypeCreditCardHolderFullName)),
base::SysNSStringToUTF16(cardHolderName), appLocal);
creditCard.SetInfo(autofill::AutofillType(AutofillTypeFromAutofillUIType(
AutofillUITypeCreditCardNumber)),
base::SysNSStringToUTF16(cardNumber), appLocal);
creditCard.SetInfo(autofill::AutofillType(AutofillTypeFromAutofillUIType(
AutofillUITypeCreditCardExpMonth)),
base::SysNSStringToUTF16(expirationMonth), appLocal);
creditCard.SetInfo(autofill::AutofillType(AutofillTypeFromAutofillUIType(
AutofillUITypeCreditCardExpYear)),
base::SysNSStringToUTF16(expirationYear), appLocal);
// Validates the credit card number and expiration date.
if (!creditCard.HasValidCardNumber()) {
[self.addCreditCardMediatorDelegate
creditCardMediatorHasInvalidCardNumber:self];
......@@ -81,7 +70,27 @@
return;
}
self.personalDataManager->AddCreditCard(creditCard);
autofill::CreditCard* savedCreditCard =
self.personalDataManager->GetCreditCardByNumber(
base::SysNSStringToUTF8(cardNumber));
// If the credit card number already exist in saved credit card
// |savedCreditCard| then update saved credit card |savedCreditCardCopy|
// with the new data.
if (savedCreditCard != nil) {
autofill::CreditCard savedCreditCardCopy(*savedCreditCard);
[self updateCreditCard:&savedCreditCardCopy
cardHolderName:cardHolderName
cardNumber:cardNumber
expirationMonth:expirationMonth
expirationYear:expirationYear];
self.personalDataManager->UpdateCreditCard(savedCreditCardCopy);
} else {
self.personalDataManager->AddCreditCard(creditCard);
}
[self.addCreditCardMediatorDelegate creditCardMediatorDidFinish:self];
}
......@@ -89,4 +98,41 @@
[self.addCreditCardMediatorDelegate creditCardMediatorDidFinish:self];
}
#pragma mark - Private
// Updates received credit card with received data.
- (void)updateCreditCard:(autofill::CreditCard*)creditCard
cardHolderName:(NSString*)cardHolderName
cardNumber:(NSString*)cardNumber
expirationMonth:(NSString*)expirationMonth
expirationYear:(NSString*)expirationYear {
[self updateCreditCard:creditCard
cardProperty:cardHolderName
autofillUIType:AutofillUITypeCreditCardHolderFullName];
[self updateCreditCard:creditCard
cardProperty:cardNumber
autofillUIType:AutofillUITypeCreditCardNumber];
[self updateCreditCard:creditCard
cardProperty:expirationMonth
autofillUIType:AutofillUITypeCreditCardExpMonth];
[self updateCreditCard:creditCard
cardProperty:expirationYear
autofillUIType:AutofillUITypeCreditCardExpYear];
}
// Updates the |AutofillUIType| of the |creditCard| with the value of
// |cardProperty|.
- (void)updateCreditCard:(autofill::CreditCard*)creditCard
cardProperty:(NSString*)cardValue
autofillUIType:(AutofillUIType)fieldType {
const std::string& appLocal = GetApplicationContext()->GetApplicationLocale();
creditCard->SetInfo(
autofill::AutofillType(AutofillTypeFromAutofillUIType(fieldType)),
base::SysNSStringToUTF16(cardValue), appLocal);
}
@end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment