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

Side by Side Diff: chrome/browser/autofill/android/personal_data_manager_android.cc

Issue 2162493002: Revert of Credit card editor for PaymentRequest UI. (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 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 13 matching lines...) Expand all
24 #include "chrome/browser/profiles/profile_manager.h" 24 #include "chrome/browser/profiles/profile_manager.h"
25 #include "chrome/common/pref_names.h" 25 #include "chrome/common/pref_names.h"
26 #include "components/autofill/content/browser/content_autofill_driver.h" 26 #include "components/autofill/content/browser/content_autofill_driver.h"
27 #include "components/autofill/content/browser/content_autofill_driver_factory.h" 27 #include "components/autofill/content/browser/content_autofill_driver_factory.h"
28 #include "components/autofill/core/browser/autofill_country.h" 28 #include "components/autofill/core/browser/autofill_country.h"
29 #include "components/autofill/core/browser/autofill_type.h" 29 #include "components/autofill/core/browser/autofill_type.h"
30 #include "components/autofill/core/browser/country_names.h" 30 #include "components/autofill/core/browser/country_names.h"
31 #include "components/autofill/core/browser/field_types.h" 31 #include "components/autofill/core/browser/field_types.h"
32 #include "components/autofill/core/browser/payments/full_card_request.h" 32 #include "components/autofill/core/browser/payments/full_card_request.h"
33 #include "components/autofill/core/browser/personal_data_manager.h" 33 #include "components/autofill/core/browser/personal_data_manager.h"
34 #include "components/autofill/core/browser/validation.h"
35 #include "components/autofill/core/common/autofill_constants.h" 34 #include "components/autofill/core/common/autofill_constants.h"
36 #include "components/autofill/core/common/autofill_pref_names.h" 35 #include "components/autofill/core/common/autofill_pref_names.h"
37 #include "components/autofill/core/common/autofill_switches.h" 36 #include "components/autofill/core/common/autofill_switches.h"
38 #include "components/prefs/pref_service.h" 37 #include "components/prefs/pref_service.h"
39 #include "content/public/browser/web_contents.h" 38 #include "content/public/browser/web_contents.h"
40 #include "grit/components_scaled_resources.h" 39 #include "grit/components_scaled_resources.h"
41 #include "jni/PersonalDataManager_jni.h" 40 #include "jni/PersonalDataManager_jni.h"
42 41
43 using base::android::ConvertJavaStringToUTF8; 42 using base::android::ConvertJavaStringToUTF8;
44 using base::android::ConvertUTF16ToJavaString; 43 using base::android::ConvertUTF16ToJavaString;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 Java_AutofillProfile_getPhoneNumber(env, jprofile.obj())); 130 Java_AutofillProfile_getPhoneNumber(env, jprofile.obj()));
132 MaybeSetRawInfo(profile, autofill::EMAIL_ADDRESS, 131 MaybeSetRawInfo(profile, autofill::EMAIL_ADDRESS,
133 Java_AutofillProfile_getEmailAddress(env, jprofile.obj())); 132 Java_AutofillProfile_getEmailAddress(env, jprofile.obj()));
134 profile->set_language_code( 133 profile->set_language_code(
135 ConvertJavaStringToUTF8( 134 ConvertJavaStringToUTF8(
136 Java_AutofillProfile_getLanguageCode(env, jprofile.obj()))); 135 Java_AutofillProfile_getLanguageCode(env, jprofile.obj())));
137 } 136 }
138 137
139 // Mapping from Chrome card types to PaymentRequest basic card payment spec and 138 // Mapping from Chrome card types to PaymentRequest basic card payment spec and
140 // icons. Note that "generic" is not in the spec. 139 // icons. Note that "generic" is not in the spec.
141 // https://w3c.github.io/webpayments-methods-card/#method-id 140 // https://w3c.github.io/browser-payment-api/specs/basic-card-payment.html#metho d-id
142 const struct PaymentRequestData { 141 const struct PaymentRequestData {
143 const char* card_type; 142 const char* card_type;
144 const char* basic_card_payment_type; 143 const char* basic_card_payment_type;
145 const int icon_resource_id; 144 const int icon_resource_id;
146 } kPaymentRequestData[] { 145 } kPaymentRequestData[] {
147 {"genericCC", "generic", IDR_AUTOFILL_PR_GENERIC}, 146 {"genericCC", "generic", IDR_AUTOFILL_PR_GENERIC},
148
149 {"americanExpressCC", "amex", IDR_AUTOFILL_PR_AMEX}, 147 {"americanExpressCC", "amex", IDR_AUTOFILL_PR_AMEX},
150 {"dinersCC", "diners", IDR_AUTOFILL_PR_DINERS}, 148 {"dinersCC", "diners", IDR_AUTOFILL_PR_GENERIC},
151 {"discoverCC", "discover", IDR_AUTOFILL_PR_DISCOVER}, 149 {"discoverCC", "discover", IDR_AUTOFILL_PR_DISCOVER},
152 {"jcbCC", "jcb", IDR_AUTOFILL_PR_JCB}, 150 {"jcbCC", "jcb", IDR_AUTOFILL_PR_GENERIC},
153 {"masterCardCC", "mastercard", IDR_AUTOFILL_PR_MASTERCARD}, 151 {"masterCardCC", "mastercard", IDR_AUTOFILL_PR_MASTERCARD},
154 {"unionPayCC", "unionpay", IDR_AUTOFILL_PR_UNIONPAY}, 152 {"visaCC", "visa", IDR_AUTOFILL_PR_VISA}
155 {"visaCC", "visa", IDR_AUTOFILL_PR_VISA},
156 }; 153 };
157 154
158 // Converts the card type into PaymentRequest type according to the basic card 155 // Converts the card type into PaymentRequest type according to the basic card
159 // payment spec and an icon. Will set the type and the icon to "generic" for 156 // payment spec and an icon. Will set the type and the icon to "generic" for
160 // unrecognized card type. 157 // unrecognized card type.
161 const PaymentRequestData& GetPaymentRequestData(const std::string& type) { 158 const PaymentRequestData& GetPaymentRequestData(const std::string& type) {
162 for (size_t i = 0; i < arraysize(kPaymentRequestData); ++i) { 159 for (size_t i = 0; i < arraysize(kPaymentRequestData); ++i) {
163 if (type == kPaymentRequestData[i].card_type) 160 if (type == kPaymentRequestData[i].card_type)
164 return kPaymentRequestData[i]; 161 return kPaymentRequestData[i];
165 } 162 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 ConvertJavaStringToUTF8(Java_CreditCard_getBillingAddressId(env, jcard))); 210 ConvertJavaStringToUTF8(Java_CreditCard_getBillingAddressId(env, jcard)));
214 } 211 }
215 212
216 // Self-deleting requester of full card details, including full PAN and the CVC 213 // Self-deleting requester of full card details, including full PAN and the CVC
217 // number. 214 // number.
218 class FullCardRequester : public payments::FullCardRequest::Delegate, 215 class FullCardRequester : public payments::FullCardRequest::Delegate,
219 public base::SupportsWeakPtr<FullCardRequester> { 216 public base::SupportsWeakPtr<FullCardRequester> {
220 public: 217 public:
221 FullCardRequester() {} 218 FullCardRequester() {}
222 219
223 // Takes ownership of |card|.
224 void GetFullCard(JNIEnv* env, 220 void GetFullCard(JNIEnv* env,
225 const base::android::JavaParamRef<jobject>& jweb_contents, 221 const base::android::JavaParamRef<jobject>& jweb_contents,
226 const base::android::JavaParamRef<jobject>& jdelegate, 222 const base::android::JavaParamRef<jobject>& jdelegate,
227 std::unique_ptr<CreditCard> card) { 223 CreditCard* card) {
228 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); 224 jdelegate_.Reset(env, jdelegate);
238 225
239 if (!card) { 226 if (!card) {
240 OnFullCardError(); 227 OnFullCardError();
241 return; 228 return;
242 } 229 }
243 230
244 content::WebContents* contents = 231 content::WebContents* contents =
245 content::WebContents::FromJavaWebContents(jweb_contents); 232 content::WebContents::FromJavaWebContents(jweb_contents);
246 if (!contents) { 233 if (!contents) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 delete this; 266 delete this;
280 } 267 }
281 268
282 // payments::FullCardRequest::Delegate: 269 // payments::FullCardRequest::Delegate:
283 void OnFullCardError() override { 270 void OnFullCardError() override {
284 JNIEnv* env = base::android::AttachCurrentThread(); 271 JNIEnv* env = base::android::AttachCurrentThread();
285 Java_FullCardRequestDelegate_onFullCardError(env, jdelegate_.obj()); 272 Java_FullCardRequestDelegate_onFullCardError(env, jdelegate_.obj());
286 delete this; 273 delete this;
287 } 274 }
288 275
289 std::unique_ptr<CreditCard> card_;
290 ScopedJavaGlobalRef<jobject> jdelegate_; 276 ScopedJavaGlobalRef<jobject> jdelegate_;
291 277
292 DISALLOW_COPY_AND_ASSIGN(FullCardRequester); 278 DISALLOW_COPY_AND_ASSIGN(FullCardRequester);
293 }; 279 };
294 280
295 } // namespace 281 } // namespace
296 282
297 PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env, 283 PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env,
298 jobject obj) 284 jobject obj)
299 : weak_java_obj_(env, obj), 285 : weak_java_obj_(env, obj),
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 const JavaParamRef<jobject>& unused_obj, 400 const JavaParamRef<jobject>& unused_obj,
415 const JavaParamRef<jstring>& jguid) { 401 const JavaParamRef<jstring>& jguid) {
416 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( 402 CreditCard* card = personal_data_manager_->GetCreditCardByGUID(
417 ConvertJavaStringToUTF8(env, jguid)); 403 ConvertJavaStringToUTF8(env, jguid));
418 if (!card) 404 if (!card)
419 return ScopedJavaLocalRef<jobject>(); 405 return ScopedJavaLocalRef<jobject>();
420 406
421 return CreateJavaCreditCardFromNative(env, *card); 407 return CreateJavaCreditCardFromNative(env, *card);
422 } 408 }
423 409
424 ScopedJavaLocalRef<jobject> PersonalDataManagerAndroid::GetCreditCardForNumber(
425 JNIEnv* env,
426 const JavaParamRef<jobject>& unused_obj,
427 const JavaParamRef<jstring>& jcard_number) {
428 // A local card with empty GUID.
429 CreditCard card("", "");
430 card.SetNumber(ConvertJavaStringToUTF16(env, jcard_number));
431 return CreateJavaCreditCardFromNative(env, card);
432 }
433
434 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard( 410 ScopedJavaLocalRef<jstring> PersonalDataManagerAndroid::SetCreditCard(
435 JNIEnv* env, 411 JNIEnv* env,
436 const JavaParamRef<jobject>& unused_obj, 412 const JavaParamRef<jobject>& unused_obj,
437 const JavaParamRef<jobject>& jcard) { 413 const JavaParamRef<jobject>& jcard) {
438 std::string guid = ConvertJavaStringToUTF8( 414 std::string guid = ConvertJavaStringToUTF8(
439 env, 415 env,
440 Java_CreditCard_getGUID(env, jcard).obj()); 416 Java_CreditCard_getGUID(env, jcard).obj());
441 417
442 CreditCard card; 418 CreditCard card;
443 PopulateNativeCreditCardFromJava(jcard, env, &card); 419 PopulateNativeCreditCardFromJava(jcard, env, &card);
(...skipping 13 matching lines...) Expand all
457 const JavaParamRef<jobject>& unused_obj, 433 const JavaParamRef<jobject>& unused_obj,
458 const JavaParamRef<jstring>& jguid, 434 const JavaParamRef<jstring>& jguid,
459 const JavaParamRef<jstring>& jbilling_address_id) { 435 const JavaParamRef<jstring>& jbilling_address_id) {
460 CreditCard card(ConvertJavaStringToUTF8(env, jguid), kSettingsOrigin); 436 CreditCard card(ConvertJavaStringToUTF8(env, jguid), kSettingsOrigin);
461 card.set_record_type(CreditCard::MASKED_SERVER_CARD); 437 card.set_record_type(CreditCard::MASKED_SERVER_CARD);
462 card.set_billing_address_id(ConvertJavaStringToUTF8(env, 438 card.set_billing_address_id(ConvertJavaStringToUTF8(env,
463 jbilling_address_id)); 439 jbilling_address_id));
464 personal_data_manager_->UpdateServerCardBillingAddress(card); 440 personal_data_manager_->UpdateServerCardBillingAddress(card);
465 } 441 }
466 442
467 ScopedJavaLocalRef<jstring>
468 PersonalDataManagerAndroid::GetBasicCardPaymentTypeIfValid(
469 JNIEnv* env,
470 const JavaParamRef<jobject>& unused_obj,
471 const JavaParamRef<jstring>& jcard_number) {
472 base::string16 card_number = ConvertJavaStringToUTF16(env, jcard_number);
473 return ConvertUTF8ToJavaString(
474 env,
475 IsValidCreditCardNumber(card_number)
476 ? GetPaymentRequestData(CreditCard::GetCreditCardType(card_number))
477 .basic_card_payment_type
478 : "");
479 }
480
481 void PersonalDataManagerAndroid::AddServerCreditCardForTest( 443 void PersonalDataManagerAndroid::AddServerCreditCardForTest(
482 JNIEnv* env, 444 JNIEnv* env,
483 const base::android::JavaParamRef<jobject>& unused_obj, 445 const base::android::JavaParamRef<jobject>& unused_obj,
484 const base::android::JavaParamRef<jobject>& jcard) { 446 const base::android::JavaParamRef<jobject>& jcard) {
485 std::unique_ptr<CreditCard> card(new CreditCard); 447 std::unique_ptr<CreditCard> card(new CreditCard);
486 PopulateNativeCreditCardFromJava(jcard, env, card.get()); 448 PopulateNativeCreditCardFromJava(jcard, env, card.get());
487 card->set_record_type(CreditCard::MASKED_SERVER_CARD); 449 card->set_record_type(CreditCard::MASKED_SERVER_CARD);
488 personal_data_manager_->AddServerCreditCardForTest(std::move(card)); 450 personal_data_manager_->AddServerCreditCardForTest(std::move(card));
489 } 451 }
490 452
(...skipping 11 matching lines...) Expand all
502 personal_data_manager_->ResetFullServerCard( 464 personal_data_manager_->ResetFullServerCard(
503 ConvertJavaStringToUTF8(env, guid)); 465 ConvertJavaStringToUTF8(env, guid));
504 } 466 }
505 467
506 void PersonalDataManagerAndroid::GetFullCardForPaymentRequest( 468 void PersonalDataManagerAndroid::GetFullCardForPaymentRequest(
507 JNIEnv* env, 469 JNIEnv* env,
508 const JavaParamRef<jobject>& unused_obj, 470 const JavaParamRef<jobject>& unused_obj,
509 const JavaParamRef<jobject>& jweb_contents, 471 const JavaParamRef<jobject>& jweb_contents,
510 const JavaParamRef<jstring>& jguid, 472 const JavaParamRef<jstring>& jguid,
511 const JavaParamRef<jobject>& jdelegate) { 473 const JavaParamRef<jobject>& jdelegate) {
512 // Self-deleting object that does not take ownership of the CreditCard from 474 // Self-deleting object.
513 // the PersonalDataManager. The PersonalDataManager owns that CreditCard.
514 (new FullCardRequester()) 475 (new FullCardRequester())
515 ->GetFullCard(env, jweb_contents, jdelegate, 476 ->GetFullCard(env, jweb_contents, jdelegate,
516 personal_data_manager_->GetCreditCardByGUID( 477 personal_data_manager_->GetCreditCardByGUID(
517 ConvertJavaStringToUTF8(env, jguid))); 478 ConvertJavaStringToUTF8(env, jguid)));
518 } 479 }
519 480
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 }
546
547 void PersonalDataManagerAndroid::OnPersonalDataChanged() { 481 void PersonalDataManagerAndroid::OnPersonalDataChanged() {
548 JNIEnv* env = base::android::AttachCurrentThread(); 482 JNIEnv* env = base::android::AttachCurrentThread();
549 if (weak_java_obj_.get(env).is_null()) 483 if (weak_java_obj_.get(env).is_null())
550 return; 484 return;
551 485
552 Java_PersonalDataManager_personalDataChanged(env, 486 Java_PersonalDataManager_personalDataChanged(env,
553 weak_java_obj_.get(env).obj()); 487 weak_java_obj_.get(env).obj());
554 } 488 }
555 489
556 // static 490 // static
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); 619 base::android::ConvertJavaStringToUTF16(env, jcountry_name)));
686 } 620 }
687 621
688 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 622 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
689 PersonalDataManagerAndroid* personal_data_manager_android = 623 PersonalDataManagerAndroid* personal_data_manager_android =
690 new PersonalDataManagerAndroid(env, obj); 624 new PersonalDataManagerAndroid(env, obj);
691 return reinterpret_cast<intptr_t>(personal_data_manager_android); 625 return reinterpret_cast<intptr_t>(personal_data_manager_android);
692 } 626 }
693 627
694 } // namespace autofill 628 } // namespace autofill
OLDNEW
« no previous file with comments | « chrome/browser/autofill/android/personal_data_manager_android.h ('k') | chrome/test/data/android/payments/no_shipping.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698