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

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

Issue 2289263003: Revert of Add support for method selection in the Payment Request UI on iOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 3 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
« no previous file with comments | « no previous file | components/autofill/core/browser/autofill_data_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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>
11 11
12 #include "base/android/jni_array.h" 12 #include "base/android/jni_array.h"
13 #include "base/android/jni_string.h" 13 #include "base/android/jni_string.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/format_macros.h" 15 #include "base/format_macros.h"
16 #include "base/memory/weak_ptr.h" 16 #include "base/memory/weak_ptr.h"
17 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
18 #include "base/strings/utf_string_conversions.h" 18 #include "base/strings/utf_string_conversions.h"
19 #include "base/time/time.h" 19 #include "base/time/time.h"
20 #include "chrome/browser/android/resource_mapper.h" 20 #include "chrome/browser/android/resource_mapper.h"
21 #include "chrome/browser/autofill/personal_data_manager_factory.h" 21 #include "chrome/browser/autofill/personal_data_manager_factory.h"
22 #include "chrome/browser/browser_process.h" 22 #include "chrome/browser/browser_process.h"
23 #include "chrome/browser/profiles/profile.h" 23 #include "chrome/browser/profiles/profile.h"
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_data_util.h"
30 #include "components/autofill/core/browser/autofill_type.h" 29 #include "components/autofill/core/browser/autofill_type.h"
31 #include "components/autofill/core/browser/country_names.h" 30 #include "components/autofill/core/browser/country_names.h"
32 #include "components/autofill/core/browser/field_types.h" 31 #include "components/autofill/core/browser/field_types.h"
33 #include "components/autofill/core/browser/payments/full_card_request.h" 32 #include "components/autofill/core/browser/payments/full_card_request.h"
34 #include "components/autofill/core/browser/personal_data_manager.h" 33 #include "components/autofill/core/browser/personal_data_manager.h"
35 #include "components/autofill/core/browser/validation.h" 34 #include "components/autofill/core/browser/validation.h"
36 #include "components/autofill/core/common/autofill_constants.h" 35 #include "components/autofill/core/common/autofill_constants.h"
37 #include "components/autofill/core/common/autofill_pref_names.h" 36 #include "components/autofill/core/common/autofill_pref_names.h"
38 #include "components/autofill/core/common/autofill_switches.h" 37 #include "components/autofill/core/common/autofill_switches.h"
39 #include "components/grit/components_scaled_resources.h" 38 #include "components/grit/components_scaled_resources.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 g_browser_process->GetApplicationLocale()); 124 g_browser_process->GetApplicationLocale());
126 } 125 }
127 MaybeSetRawInfo(profile, autofill::PHONE_HOME_WHOLE_NUMBER, 126 MaybeSetRawInfo(profile, autofill::PHONE_HOME_WHOLE_NUMBER,
128 Java_AutofillProfile_getPhoneNumber(env, jprofile)); 127 Java_AutofillProfile_getPhoneNumber(env, jprofile));
129 MaybeSetRawInfo(profile, autofill::EMAIL_ADDRESS, 128 MaybeSetRawInfo(profile, autofill::EMAIL_ADDRESS,
130 Java_AutofillProfile_getEmailAddress(env, jprofile)); 129 Java_AutofillProfile_getEmailAddress(env, jprofile));
131 profile->set_language_code(ConvertJavaStringToUTF8( 130 profile->set_language_code(ConvertJavaStringToUTF8(
132 Java_AutofillProfile_getLanguageCode(env, jprofile))); 131 Java_AutofillProfile_getLanguageCode(env, jprofile)));
133 } 132 }
134 133
134 // Mapping from Chrome card types to PaymentRequest basic card payment spec and
135 // icons. Note that "generic" is not in the spec.
136 // https://w3c.github.io/webpayments-methods-card/#method-id
137 const struct PaymentRequestData {
138 const char* card_type;
139 const char* basic_card_payment_type;
140 const int icon_resource_id;
141 } kPaymentRequestData[] {
142 {"genericCC", "generic", IDR_AUTOFILL_PR_GENERIC},
143
144 {"americanExpressCC", "amex", IDR_AUTOFILL_PR_AMEX},
145 {"dinersCC", "diners", IDR_AUTOFILL_PR_DINERS},
146 {"discoverCC", "discover", IDR_AUTOFILL_PR_DISCOVER},
147 {"jcbCC", "jcb", IDR_AUTOFILL_PR_JCB},
148 {"masterCardCC", "mastercard", IDR_AUTOFILL_PR_MASTERCARD},
149 {"unionPayCC", "unionpay", IDR_AUTOFILL_PR_UNIONPAY},
150 {"visaCC", "visa", IDR_AUTOFILL_PR_VISA},
151 };
152
153 // Converts the card type into PaymentRequest type according to the basic card
154 // payment spec and an icon. Will set the type and the icon to "generic" for
155 // unrecognized card type.
156 const PaymentRequestData& GetPaymentRequestData(const std::string& type) {
157 for (size_t i = 0; i < arraysize(kPaymentRequestData); ++i) {
158 if (type == kPaymentRequestData[i].card_type)
159 return kPaymentRequestData[i];
160 }
161 return kPaymentRequestData[0];
162 }
163
135 ScopedJavaLocalRef<jobject> CreateJavaCreditCardFromNative( 164 ScopedJavaLocalRef<jobject> CreateJavaCreditCardFromNative(
136 JNIEnv* env, 165 JNIEnv* env,
137 const CreditCard& card) { 166 const CreditCard& card) {
138 const data_util::PaymentRequestData& payment_request_data = 167 const PaymentRequestData& payment_request_data =
139 data_util::GetPaymentRequestData(card.type()); 168 GetPaymentRequestData(card.type());
140 return Java_CreditCard_create( 169 return Java_CreditCard_create(
141 env, ConvertUTF8ToJavaString(env, card.guid()), 170 env, ConvertUTF8ToJavaString(env, card.guid()),
142 ConvertUTF8ToJavaString(env, card.origin()), 171 ConvertUTF8ToJavaString(env, card.origin()),
143 card.record_type() == CreditCard::LOCAL_CARD, 172 card.record_type() == CreditCard::LOCAL_CARD,
144 card.record_type() == CreditCard::FULL_SERVER_CARD, 173 card.record_type() == CreditCard::FULL_SERVER_CARD,
145 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NAME_FULL)), 174 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NAME_FULL)),
146 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NUMBER)), 175 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NUMBER)),
147 ConvertUTF16ToJavaString(env, card.TypeAndLastFourDigits()), 176 ConvertUTF16ToJavaString(env, card.TypeAndLastFourDigits()),
148 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_EXP_MONTH)), 177 ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_EXP_MONTH)),
149 ConvertUTF16ToJavaString(env, 178 ConvertUTF16ToJavaString(env,
150 card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)), 179 card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)),
151 ConvertUTF8ToJavaString(env, 180 ConvertUTF8ToJavaString(env,
152 payment_request_data.basic_card_payment_type), 181 payment_request_data.basic_card_payment_type),
153 ResourceMapper::MapFromChromiumId(payment_request_data.icon_resource_id), 182 ResourceMapper::MapFromChromiumId(payment_request_data.icon_resource_id),
154 ConvertUTF8ToJavaString(env, card.billing_address_id()), 183 ConvertUTF8ToJavaString(env, card.billing_address_id()),
155 ConvertUTF8ToJavaString(env, card.server_id())); 184 ConvertUTF8ToJavaString(env, card.server_id()));
156 } 185 }
157 186
187 const char* GetCardTypeForBasicCardPaymentType(
188 const std::string& basic_card_payment_type) {
189 for (size_t i = 0; i < arraysize(kPaymentRequestData); ++i) {
190 if (basic_card_payment_type ==
191 kPaymentRequestData[i].basic_card_payment_type)
192 return kPaymentRequestData[i].card_type;
193 }
194 return kPaymentRequestData[0].card_type;
195 }
196
158 void PopulateNativeCreditCardFromJava( 197 void PopulateNativeCreditCardFromJava(
159 const jobject& jcard, 198 const jobject& jcard,
160 JNIEnv* env, 199 JNIEnv* env,
161 CreditCard* card) { 200 CreditCard* card) {
162 card->set_origin( 201 card->set_origin(
163 ConvertJavaStringToUTF8(Java_CreditCard_getOrigin(env, jcard))); 202 ConvertJavaStringToUTF8(Java_CreditCard_getOrigin(env, jcard)));
164 card->SetRawInfo( 203 card->SetRawInfo(
165 CREDIT_CARD_NAME_FULL, 204 CREDIT_CARD_NAME_FULL,
166 ConvertJavaStringToUTF16(Java_CreditCard_getName(env, jcard))); 205 ConvertJavaStringToUTF16(Java_CreditCard_getName(env, jcard)));
167 card->SetRawInfo( 206 card->SetRawInfo(
(...skipping 11 matching lines...) Expand all
179 ConvertJavaStringToUTF8(Java_CreditCard_getServerId(env, jcard))); 218 ConvertJavaStringToUTF8(Java_CreditCard_getServerId(env, jcard)));
180 219
181 if (Java_CreditCard_getIsLocal(env, jcard)) { 220 if (Java_CreditCard_getIsLocal(env, jcard)) {
182 card->set_record_type(CreditCard::LOCAL_CARD); 221 card->set_record_type(CreditCard::LOCAL_CARD);
183 } else { 222 } else {
184 if (Java_CreditCard_getIsCached(env, jcard)) { 223 if (Java_CreditCard_getIsCached(env, jcard)) {
185 card->set_record_type(CreditCard::FULL_SERVER_CARD); 224 card->set_record_type(CreditCard::FULL_SERVER_CARD);
186 } else { 225 } else {
187 card->set_record_type(CreditCard::MASKED_SERVER_CARD); 226 card->set_record_type(CreditCard::MASKED_SERVER_CARD);
188 card->SetTypeForMaskedCard( 227 card->SetTypeForMaskedCard(
189 data_util::GetCardTypeForBasicCardPaymentType(ConvertJavaStringToUTF8( 228 GetCardTypeForBasicCardPaymentType(
190 env, Java_CreditCard_getBasicCardPaymentType(env, jcard)))); 229 ConvertJavaStringToUTF8(
230 env, Java_CreditCard_getBasicCardPaymentType(env, jcard))));
191 } 231 }
192 } 232 }
193 } 233 }
194 234
195 // Self-deleting requester of full card details, including full PAN and the CVC 235 // Self-deleting requester of full card details, including full PAN and the CVC
196 // number. 236 // number.
197 class FullCardRequester : public payments::FullCardRequest::Delegate, 237 class FullCardRequester : public payments::FullCardRequest::Delegate,
198 public base::SupportsWeakPtr<FullCardRequester> { 238 public base::SupportsWeakPtr<FullCardRequester> {
199 public: 239 public:
200 FullCardRequester() {} 240 FullCardRequester() {}
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 personal_data_manager_->UpdateServerCardBillingAddress(card); 475 personal_data_manager_->UpdateServerCardBillingAddress(card);
436 } 476 }
437 477
438 ScopedJavaLocalRef<jstring> 478 ScopedJavaLocalRef<jstring>
439 PersonalDataManagerAndroid::GetBasicCardPaymentTypeIfValid( 479 PersonalDataManagerAndroid::GetBasicCardPaymentTypeIfValid(
440 JNIEnv* env, 480 JNIEnv* env,
441 const JavaParamRef<jobject>& unused_obj, 481 const JavaParamRef<jobject>& unused_obj,
442 const JavaParamRef<jstring>& jcard_number) { 482 const JavaParamRef<jstring>& jcard_number) {
443 base::string16 card_number = ConvertJavaStringToUTF16(env, jcard_number); 483 base::string16 card_number = ConvertJavaStringToUTF16(env, jcard_number);
444 return ConvertUTF8ToJavaString( 484 return ConvertUTF8ToJavaString(
445 env, IsValidCreditCardNumber(card_number) 485 env,
446 ? data_util::GetPaymentRequestData( 486 IsValidCreditCardNumber(card_number)
447 CreditCard::GetCreditCardType(card_number)) 487 ? GetPaymentRequestData(CreditCard::GetCreditCardType(card_number))
448 .basic_card_payment_type 488 .basic_card_payment_type
449 : ""); 489 : "");
450 } 490 }
451 491
452 void PersonalDataManagerAndroid::AddServerCreditCardForTest( 492 void PersonalDataManagerAndroid::AddServerCreditCardForTest(
453 JNIEnv* env, 493 JNIEnv* env,
454 const base::android::JavaParamRef<jobject>& unused_obj, 494 const base::android::JavaParamRef<jobject>& unused_obj,
455 const base::android::JavaParamRef<jobject>& jcard) { 495 const base::android::JavaParamRef<jobject>& jcard) {
456 std::unique_ptr<CreditCard> card(new CreditCard); 496 std::unique_ptr<CreditCard> card(new CreditCard);
457 PopulateNativeCreditCardFromJava(jcard, env, card.get()); 497 PopulateNativeCreditCardFromJava(jcard, env, card.get());
458 card->set_record_type(CreditCard::MASKED_SERVER_CARD); 498 card->set_record_type(CreditCard::MASKED_SERVER_CARD);
459 personal_data_manager_->AddServerCreditCardForTest(std::move(card)); 499 personal_data_manager_->AddServerCreditCardForTest(std::move(card));
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); 726 base::android::ConvertJavaStringToUTF16(env, jcountry_name)));
687 } 727 }
688 728
689 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { 729 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
690 PersonalDataManagerAndroid* personal_data_manager_android = 730 PersonalDataManagerAndroid* personal_data_manager_android =
691 new PersonalDataManagerAndroid(env, obj); 731 new PersonalDataManagerAndroid(env, obj);
692 return reinterpret_cast<intptr_t>(personal_data_manager_android); 732 return reinterpret_cast<intptr_t>(personal_data_manager_android);
693 } 733 }
694 734
695 } // namespace autofill 735 } // namespace autofill
OLDNEW
« no previous file with comments | « no previous file | components/autofill/core/browser/autofill_data_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698