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

Side by Side 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, 4 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 unified diff | Download patch
OLDNEW
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 "chrome/browser/autofill/android/personal_data_manager_android.h" 5 #include "chrome/browser/autofill/android/personal_data_manager_android.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NUMBER)).obj(), 181 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NUMBER)).obj(),
182 ConvertUTF16ToJavaString(env, card.TypeAndLastFourDigits()).obj(), 182 ConvertUTF16ToJavaString(env, card.TypeAndLastFourDigits()).obj(),
183 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_EXP_MONTH)) 183 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_EXP_MONTH))
184 .obj(), 184 .obj(),
185 ConvertUTF16ToJavaString(env, 185 ConvertUTF16ToJavaString(env,
186 card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)) 186 card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR))
187 .obj(), 187 .obj(),
188 ConvertUTF8ToJavaString(env, payment_request_data.basic_card_payment_type) 188 ConvertUTF8ToJavaString(env, payment_request_data.basic_card_payment_type)
189 .obj(), 189 .obj(),
190 ResourceMapper::MapFromChromiumId(payment_request_data.icon_resource_id), 190 ResourceMapper::MapFromChromiumId(payment_request_data.icon_resource_id),
191 ConvertUTF8ToJavaString(env, card.billing_address_id()) .obj()); 191 ConvertUTF8ToJavaString(env, card.billing_address_id()) .obj(),
192 ConvertUTF8ToJavaString(env, card.server_id()) .obj());
193 }
194
195 const char* GetCardTypeForBasicCardPaymentType(
196 const std::string& basic_card_payment_type) {
197 for (size_t i = 0; i < arraysize(kPaymentRequestData); ++i) {
198 if (basic_card_payment_type ==
199 kPaymentRequestData[i].basic_card_payment_type)
200 return kPaymentRequestData[i].card_type;
201 }
202 return kPaymentRequestData[0].card_type;
192 } 203 }
193 204
194 void PopulateNativeCreditCardFromJava( 205 void PopulateNativeCreditCardFromJava(
195 const jobject& jcard, 206 const jobject& jcard,
196 JNIEnv* env, 207 JNIEnv* env,
197 CreditCard* card) { 208 CreditCard* card) {
198 card->set_origin( 209 card->set_origin(
199 ConvertJavaStringToUTF8(Java_CreditCard_getOrigin(env, jcard))); 210 ConvertJavaStringToUTF8(Java_CreditCard_getOrigin(env, jcard)));
200 card->SetRawInfo( 211 card->SetRawInfo(
201 CREDIT_CARD_NAME_FULL, 212 CREDIT_CARD_NAME_FULL,
202 ConvertJavaStringToUTF16(Java_CreditCard_getName(env, jcard))); 213 ConvertJavaStringToUTF16(Java_CreditCard_getName(env, jcard)));
203 card->SetRawInfo( 214 card->SetRawInfo(
204 CREDIT_CARD_NUMBER, 215 CREDIT_CARD_NUMBER,
205 ConvertJavaStringToUTF16(Java_CreditCard_getNumber(env, jcard))); 216 ConvertJavaStringToUTF16(Java_CreditCard_getNumber(env, jcard)));
206 card->SetRawInfo( 217 card->SetRawInfo(
207 CREDIT_CARD_EXP_MONTH, 218 CREDIT_CARD_EXP_MONTH,
208 ConvertJavaStringToUTF16(Java_CreditCard_getMonth(env, jcard))); 219 ConvertJavaStringToUTF16(Java_CreditCard_getMonth(env, jcard)));
209 card->SetRawInfo( 220 card->SetRawInfo(
210 CREDIT_CARD_EXP_4_DIGIT_YEAR, 221 CREDIT_CARD_EXP_4_DIGIT_YEAR,
211 ConvertJavaStringToUTF16(Java_CreditCard_getYear(env, jcard))); 222 ConvertJavaStringToUTF16(Java_CreditCard_getYear(env, jcard)));
212 card->set_billing_address_id( 223 card->set_billing_address_id(
213 ConvertJavaStringToUTF8(Java_CreditCard_getBillingAddressId(env, jcard))); 224 ConvertJavaStringToUTF8(Java_CreditCard_getBillingAddressId(env, jcard)));
225 card->set_server_id(
226 ConvertJavaStringToUTF8(Java_CreditCard_getServerId(env, jcard)));
227
228 if (Java_CreditCard_getIsLocal(env, jcard)) {
229 card->set_record_type(CreditCard::LOCAL_CARD);
230 } else {
231 if (Java_CreditCard_getIsCached(env, jcard)) {
232 card->set_record_type(CreditCard::FULL_SERVER_CARD);
233 } else {
234 card->set_record_type(CreditCard::MASKED_SERVER_CARD);
235 card->SetTypeForMaskedCard(
236 GetCardTypeForBasicCardPaymentType(
237 ConvertJavaStringToUTF8(
238 env, Java_CreditCard_getBasicCardPaymentType(env, jcard))));
239 }
240 }
214 } 241 }
215 242
216 // Self-deleting requester of full card details, including full PAN and the CVC 243 // Self-deleting requester of full card details, including full PAN and the CVC
217 // number. 244 // number.
218 class FullCardRequester : public payments::FullCardRequest::Delegate, 245 class FullCardRequester : public payments::FullCardRequest::Delegate,
219 public base::SupportsWeakPtr<FullCardRequester> { 246 public base::SupportsWeakPtr<FullCardRequester> {
220 public: 247 public:
221 FullCardRequester() {} 248 FullCardRequester() {}
222 249
223 // Takes ownership of |card|. 250 // Takes ownership of |card|.
224 void GetFullCard(JNIEnv* env, 251 void GetFullCard(JNIEnv* env,
225 const base::android::JavaParamRef<jobject>& jweb_contents, 252 const base::android::JavaParamRef<jobject>& jweb_contents,
226 const base::android::JavaParamRef<jobject>& jdelegate, 253 const base::android::JavaParamRef<jobject>& jdelegate,
227 std::unique_ptr<CreditCard> card) { 254 std::unique_ptr<CreditCard> card) {
228 card_ = std::move(card); 255 card_ = std::move(card);
229 GetFullCard(env, jweb_contents, jdelegate, card_.get());
230 }
231
232 // Does not take ownership of |card|.
233 void GetFullCard(JNIEnv* env,
234 const base::android::JavaParamRef<jobject>& jweb_contents,
235 const base::android::JavaParamRef<jobject>& jdelegate,
236 const CreditCard* card) {
237 jdelegate_.Reset(env, jdelegate); 256 jdelegate_.Reset(env, jdelegate);
238 257
239 if (!card) { 258 if (!card_) {
240 OnFullCardError(); 259 OnFullCardError();
241 return; 260 return;
242 } 261 }
243 262
244 content::WebContents* contents = 263 content::WebContents* contents =
245 content::WebContents::FromJavaWebContents(jweb_contents); 264 content::WebContents::FromJavaWebContents(jweb_contents);
246 if (!contents) { 265 if (!contents) {
247 OnFullCardError(); 266 OnFullCardError();
248 return; 267 return;
249 } 268 }
250 269
251 ContentAutofillDriverFactory* factory = 270 ContentAutofillDriverFactory* factory =
252 ContentAutofillDriverFactory::FromWebContents(contents); 271 ContentAutofillDriverFactory::FromWebContents(contents);
253 if (!factory) { 272 if (!factory) {
254 OnFullCardError(); 273 OnFullCardError();
255 return; 274 return;
256 } 275 }
257 276
258 ContentAutofillDriver* driver = 277 ContentAutofillDriver* driver =
259 factory->DriverForFrame(contents->GetMainFrame()); 278 factory->DriverForFrame(contents->GetMainFrame());
260 if (!driver) { 279 if (!driver) {
261 OnFullCardError(); 280 OnFullCardError();
262 return; 281 return;
263 } 282 }
264 283
265 driver->autofill_manager()->GetOrCreateFullCardRequest()->GetFullCard( 284 driver->autofill_manager()->GetOrCreateFullCardRequest()->GetFullCard(
266 *card, AutofillClient::UNMASK_FOR_PAYMENT_REQUEST, AsWeakPtr()); 285 *card_, AutofillClient::UNMASK_FOR_PAYMENT_REQUEST, AsWeakPtr());
267 } 286 }
268 287
269 private: 288 private:
270 virtual ~FullCardRequester() {} 289 virtual ~FullCardRequester() {}
271 290
272 // payments::FullCardRequest::Delegate: 291 // payments::FullCardRequest::Delegate:
273 void OnFullCardDetails(const CreditCard& card, 292 void OnFullCardDetails(const CreditCard& card,
274 const base::string16& cvc) override { 293 const base::string16& cvc) override {
275 JNIEnv* env = base::android::AttachCurrentThread(); 294 JNIEnv* env = base::android::AttachCurrentThread();
276 Java_FullCardRequestDelegate_onFullCardDetails( 295 Java_FullCardRequestDelegate_onFullCardDetails(
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 card.set_guid(guid); 466 card.set_guid(guid);
448 personal_data_manager_->UpdateCreditCard(card); 467 personal_data_manager_->UpdateCreditCard(card);
449 } 468 }
450 return ConvertUTF8ToJavaString(env, card.guid()); 469 return ConvertUTF8ToJavaString(env, card.guid());
451 } 470 }
452 471
453 472
454 void PersonalDataManagerAndroid::UpdateServerCardBillingAddress( 473 void PersonalDataManagerAndroid::UpdateServerCardBillingAddress(
455 JNIEnv* env, 474 JNIEnv* env,
456 const JavaParamRef<jobject>& unused_obj, 475 const JavaParamRef<jobject>& unused_obj,
457 const JavaParamRef<jstring>& jguid, 476 const JavaParamRef<jstring>& jcard_server_id,
458 const JavaParamRef<jstring>& jbilling_address_id) { 477 const JavaParamRef<jstring>& jbilling_address_id) {
459 CreditCard card(ConvertJavaStringToUTF8(env, jguid), kSettingsOrigin); 478 CreditCard card("", kSettingsOrigin);
460 card.set_record_type(CreditCard::MASKED_SERVER_CARD); 479 card.set_record_type(CreditCard::MASKED_SERVER_CARD);
480 card.set_server_id(ConvertJavaStringToUTF8(env, jcard_server_id));
461 card.set_billing_address_id(ConvertJavaStringToUTF8(env, 481 card.set_billing_address_id(ConvertJavaStringToUTF8(env,
462 jbilling_address_id)); 482 jbilling_address_id));
463 personal_data_manager_->UpdateServerCardBillingAddress(card); 483 personal_data_manager_->UpdateServerCardBillingAddress(card);
464 } 484 }
465 485
466 ScopedJavaLocalRef<jstring> 486 ScopedJavaLocalRef<jstring>
467 PersonalDataManagerAndroid::GetBasicCardPaymentTypeIfValid( 487 PersonalDataManagerAndroid::GetBasicCardPaymentTypeIfValid(
468 JNIEnv* env, 488 JNIEnv* env,
469 const JavaParamRef<jobject>& unused_obj, 489 const JavaParamRef<jobject>& unused_obj,
470 const JavaParamRef<jstring>& jcard_number) { 490 const JavaParamRef<jstring>& jcard_number) {
(...skipping 29 matching lines...) Expand all
500 const JavaParamRef<jobject>& unused_obj, 520 const JavaParamRef<jobject>& unused_obj,
501 const JavaParamRef<jstring>& guid) { 521 const JavaParamRef<jstring>& guid) {
502 personal_data_manager_->ResetFullServerCard( 522 personal_data_manager_->ResetFullServerCard(
503 ConvertJavaStringToUTF8(env, guid)); 523 ConvertJavaStringToUTF8(env, guid));
504 } 524 }
505 525
506 void PersonalDataManagerAndroid::GetFullCardForPaymentRequest( 526 void PersonalDataManagerAndroid::GetFullCardForPaymentRequest(
507 JNIEnv* env, 527 JNIEnv* env,
508 const JavaParamRef<jobject>& unused_obj, 528 const JavaParamRef<jobject>& unused_obj,
509 const JavaParamRef<jobject>& jweb_contents, 529 const JavaParamRef<jobject>& jweb_contents,
510 const JavaParamRef<jstring>& jguid, 530 const JavaParamRef<jobject>& jcard,
511 const JavaParamRef<jobject>& jdelegate) { 531 const JavaParamRef<jobject>& jdelegate) {
512 // Self-deleting object that does not take ownership of the CreditCard from 532 std::unique_ptr<CreditCard> card(new CreditCard);
513 // the PersonalDataManager. The PersonalDataManager owns that CreditCard. 533 PopulateNativeCreditCardFromJava(jcard, env, card.get());
514 (new FullCardRequester()) 534 // Self-deleting object.
515 ->GetFullCard(env, jweb_contents, jdelegate, 535 (new FullCardRequester())->GetFullCard(
516 personal_data_manager_->GetCreditCardByGUID( 536 env, jweb_contents, jdelegate, std::move(card));
517 ConvertJavaStringToUTF8(env, jguid)));
518 }
519
520 void PersonalDataManagerAndroid::GetFullTemporaryCardForPaymentRequest(
521 JNIEnv* env,
522 const JavaParamRef<jobject>& unused_obj,
523 const JavaParamRef<jobject>& jweb_contents,
524 const JavaParamRef<jstring>& jcard_number,
525 const JavaParamRef<jstring>& jname_on_card,
526 const JavaParamRef<jstring>& jexpiration_month,
527 const JavaParamRef<jstring>& jexpiration_year,
528 const JavaParamRef<jobject>& jdelegate) {
529 // FullCardRequest will not attempt to save a card with an empty GUID.
530 std::unique_ptr<CreditCard> card(new CreditCard("", ""));
531 card->SetNumber(ConvertJavaStringToUTF16(env, jcard_number));
532 card->SetRawInfo(
533 CREDIT_CARD_NAME_FULL,
534 ConvertJavaStringToUTF16(env, jname_on_card));
535 card->SetRawInfo(
536 CREDIT_CARD_EXP_MONTH,
537 ConvertJavaStringToUTF16(env, jexpiration_month));
538 card->SetRawInfo(
539 CREDIT_CARD_EXP_4_DIGIT_YEAR,
540 ConvertJavaStringToUTF16(env, jexpiration_year));
541
542 // Self-deleting object that takes ownership of the CreditCard.
543 (new FullCardRequester())
544 ->GetFullCard(env, jweb_contents, jdelegate, std::move(card));
545 } 537 }
546 538
547 void PersonalDataManagerAndroid::OnPersonalDataChanged() { 539 void PersonalDataManagerAndroid::OnPersonalDataChanged() {
548 JNIEnv* env = base::android::AttachCurrentThread(); 540 JNIEnv* env = base::android::AttachCurrentThread();
549 if (weak_java_obj_.get(env).is_null()) 541 if (weak_java_obj_.get(env).is_null())
550 return; 542 return;
551 543
552 Java_PersonalDataManager_personalDataChanged(env, 544 Java_PersonalDataManager_personalDataChanged(env,
553 weak_java_obj_.get(env).obj()); 545 weak_java_obj_.get(env).obj());
554 } 546 }
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); 735 base::android::ConvertJavaStringToUTF16(env, jcountry_name)));
744 } 736 }
745 737
746 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 738 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
747 PersonalDataManagerAndroid* personal_data_manager_android = 739 PersonalDataManagerAndroid* personal_data_manager_android =
748 new PersonalDataManagerAndroid(env, obj); 740 new PersonalDataManagerAndroid(env, obj);
749 return reinterpret_cast<intptr_t>(personal_data_manager_android); 741 return reinterpret_cast<intptr_t>(personal_data_manager_android);
750 } 742 }
751 743
752 } // namespace autofill 744 } // namespace autofill
OLDNEW
« 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