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

Unified Diff: chrome/browser/autofill/android/personal_data_manager_android.cc

Issue 2189563002: Use server ID to identify server cards. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/autofill/android/personal_data_manager_android.cc
diff --git a/chrome/browser/autofill/android/personal_data_manager_android.cc b/chrome/browser/autofill/android/personal_data_manager_android.cc
index cb0fd68edb0a9db0dd545dee9180b59f419fb884..755fa6f0fbee8de4b9611a97cec34a6bcd79f74a 100644
--- a/chrome/browser/autofill/android/personal_data_manager_android.cc
+++ b/chrome/browser/autofill/android/personal_data_manager_android.cc
@@ -188,7 +188,18 @@ ScopedJavaLocalRef<jobject> CreateJavaCreditCardFromNative(
ConvertUTF8ToJavaString(env, payment_request_data.basic_card_payment_type)
.obj(),
ResourceMapper::MapFromChromiumId(payment_request_data.icon_resource_id),
- ConvertUTF8ToJavaString(env, card.billing_address_id()) .obj());
+ ConvertUTF8ToJavaString(env, card.billing_address_id()) .obj(),
+ ConvertUTF8ToJavaString(env, card.server_id()) .obj());
+}
+
+const char* GetCardTypeForBasicCardPaymentType(
+ const std::string& basic_card_payment_type) {
+ for (size_t i = 0; i < arraysize(kPaymentRequestData); ++i) {
+ if (basic_card_payment_type ==
+ kPaymentRequestData[i].basic_card_payment_type)
+ return kPaymentRequestData[i].card_type;
+ }
+ return kPaymentRequestData[0].card_type;
}
void PopulateNativeCreditCardFromJava(
@@ -211,6 +222,22 @@ void PopulateNativeCreditCardFromJava(
ConvertJavaStringToUTF16(Java_CreditCard_getYear(env, jcard)));
card->set_billing_address_id(
ConvertJavaStringToUTF8(Java_CreditCard_getBillingAddressId(env, jcard)));
+ card->set_server_id(
+ ConvertJavaStringToUTF8(Java_CreditCard_getServerId(env, jcard)));
+
+ if (Java_CreditCard_getIsLocal(env, jcard)) {
+ card->set_record_type(CreditCard::LOCAL_CARD);
+ } else {
+ if (Java_CreditCard_getIsCached(env, jcard)) {
+ card->set_record_type(CreditCard::FULL_SERVER_CARD);
+ } else {
+ card->set_record_type(CreditCard::MASKED_SERVER_CARD);
+ card->SetTypeForMaskedCard(
+ GetCardTypeForBasicCardPaymentType(
+ ConvertJavaStringToUTF8(
+ env, Java_CreditCard_getBasicCardPaymentType(env, jcard))));
+ }
+ }
}
// Self-deleting requester of full card details, including full PAN and the CVC
@@ -226,17 +253,9 @@ class FullCardRequester : public payments::FullCardRequest::Delegate,
const base::android::JavaParamRef<jobject>& jdelegate,
std::unique_ptr<CreditCard> card) {
card_ = std::move(card);
- GetFullCard(env, jweb_contents, jdelegate, card_.get());
- }
-
- // Does not take ownership of |card|.
- void GetFullCard(JNIEnv* env,
- const base::android::JavaParamRef<jobject>& jweb_contents,
- const base::android::JavaParamRef<jobject>& jdelegate,
- const CreditCard* card) {
jdelegate_.Reset(env, jdelegate);
- if (!card) {
+ if (!card_) {
OnFullCardError();
return;
}
@@ -263,7 +282,7 @@ class FullCardRequester : public payments::FullCardRequest::Delegate,
}
driver->autofill_manager()->GetOrCreateFullCardRequest()->GetFullCard(
- *card, AutofillClient::UNMASK_FOR_PAYMENT_REQUEST, AsWeakPtr());
+ *card_, AutofillClient::UNMASK_FOR_PAYMENT_REQUEST, AsWeakPtr());
}
private:
@@ -454,10 +473,11 @@ ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard(
void PersonalDataManagerAndroid::UpdateServerCardBillingAddress(
JNIEnv* env,
const JavaParamRef<jobject>& unused_obj,
- const JavaParamRef<jstring>& jguid,
+ const JavaParamRef<jstring>& jcard_server_id,
const JavaParamRef<jstring>& jbilling_address_id) {
- CreditCard card(ConvertJavaStringToUTF8(env, jguid), kSettingsOrigin);
+ CreditCard card("", kSettingsOrigin);
card.set_record_type(CreditCard::MASKED_SERVER_CARD);
+ card.set_server_id(ConvertJavaStringToUTF8(env, jcard_server_id));
card.set_billing_address_id(ConvertJavaStringToUTF8(env,
jbilling_address_id));
personal_data_manager_->UpdateServerCardBillingAddress(card);
@@ -507,41 +527,13 @@ void PersonalDataManagerAndroid::GetFullCardForPaymentRequest(
JNIEnv* env,
const JavaParamRef<jobject>& unused_obj,
const JavaParamRef<jobject>& jweb_contents,
- const JavaParamRef<jstring>& jguid,
- const JavaParamRef<jobject>& jdelegate) {
- // Self-deleting object that does not take ownership of the CreditCard from
- // the PersonalDataManager. The PersonalDataManager owns that CreditCard.
- (new FullCardRequester())
- ->GetFullCard(env, jweb_contents, jdelegate,
- personal_data_manager_->GetCreditCardByGUID(
- ConvertJavaStringToUTF8(env, jguid)));
-}
-
-void PersonalDataManagerAndroid::GetFullTemporaryCardForPaymentRequest(
- JNIEnv* env,
- const JavaParamRef<jobject>& unused_obj,
- const JavaParamRef<jobject>& jweb_contents,
- const JavaParamRef<jstring>& jcard_number,
- const JavaParamRef<jstring>& jname_on_card,
- const JavaParamRef<jstring>& jexpiration_month,
- const JavaParamRef<jstring>& jexpiration_year,
+ const JavaParamRef<jobject>& jcard,
const JavaParamRef<jobject>& jdelegate) {
- // FullCardRequest will not attempt to save a card with an empty GUID.
- std::unique_ptr<CreditCard> card(new CreditCard("", ""));
- card->SetNumber(ConvertJavaStringToUTF16(env, jcard_number));
- card->SetRawInfo(
- CREDIT_CARD_NAME_FULL,
- ConvertJavaStringToUTF16(env, jname_on_card));
- card->SetRawInfo(
- CREDIT_CARD_EXP_MONTH,
- ConvertJavaStringToUTF16(env, jexpiration_month));
- card->SetRawInfo(
- CREDIT_CARD_EXP_4_DIGIT_YEAR,
- ConvertJavaStringToUTF16(env, jexpiration_year));
-
- // Self-deleting object that takes ownership of the CreditCard.
- (new FullCardRequester())
- ->GetFullCard(env, jweb_contents, jdelegate, std::move(card));
+ std::unique_ptr<CreditCard> card(new CreditCard);
+ PopulateNativeCreditCardFromJava(jcard, env, card.get());
+ // Self-deleting object.
+ (new FullCardRequester())->GetFullCard(
+ env, jweb_contents, jdelegate, std::move(card));
}
void PersonalDataManagerAndroid::OnPersonalDataChanged() {
« no previous file with comments | « chrome/browser/autofill/android/personal_data_manager_android.h ('k') | components/autofill/core/browser/credit_card.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698