| OLD | NEW |
| 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 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 | 241 |
| 242 // Takes ownership of |card|. | 242 // Takes ownership of |card|. |
| 243 void GetFullCard(JNIEnv* env, | 243 void GetFullCard(JNIEnv* env, |
| 244 const base::android::JavaParamRef<jobject>& jweb_contents, | 244 const base::android::JavaParamRef<jobject>& jweb_contents, |
| 245 const base::android::JavaParamRef<jobject>& jdelegate, | 245 const base::android::JavaParamRef<jobject>& jdelegate, |
| 246 std::unique_ptr<CreditCard> card) { | 246 std::unique_ptr<CreditCard> card) { |
| 247 card_ = std::move(card); | 247 card_ = std::move(card); |
| 248 jdelegate_.Reset(env, jdelegate); | 248 jdelegate_.Reset(env, jdelegate); |
| 249 | 249 |
| 250 if (!card_) { | 250 if (!card_) { |
| 251 OnFullCardError(); | 251 OnFullCardRequestFailed(); |
| 252 return; | 252 return; |
| 253 } | 253 } |
| 254 | 254 |
| 255 content::WebContents* contents = | 255 content::WebContents* contents = |
| 256 content::WebContents::FromJavaWebContents(jweb_contents); | 256 content::WebContents::FromJavaWebContents(jweb_contents); |
| 257 if (!contents) { | 257 if (!contents) { |
| 258 OnFullCardError(); | 258 OnFullCardRequestFailed(); |
| 259 return; | 259 return; |
| 260 } | 260 } |
| 261 | 261 |
| 262 ContentAutofillDriverFactory* factory = | 262 ContentAutofillDriverFactory* factory = |
| 263 ContentAutofillDriverFactory::FromWebContents(contents); | 263 ContentAutofillDriverFactory::FromWebContents(contents); |
| 264 if (!factory) { | 264 if (!factory) { |
| 265 OnFullCardError(); | 265 OnFullCardRequestFailed(); |
| 266 return; | 266 return; |
| 267 } | 267 } |
| 268 | 268 |
| 269 ContentAutofillDriver* driver = | 269 ContentAutofillDriver* driver = |
| 270 factory->DriverForFrame(contents->GetMainFrame()); | 270 factory->DriverForFrame(contents->GetMainFrame()); |
| 271 if (!driver) { | 271 if (!driver) { |
| 272 OnFullCardError(); | 272 OnFullCardRequestFailed(); |
| 273 return; | 273 return; |
| 274 } | 274 } |
| 275 | 275 |
| 276 driver->autofill_manager()->GetOrCreateFullCardRequest()->GetFullCard( | 276 driver->autofill_manager()->GetOrCreateFullCardRequest()->GetFullCard( |
| 277 *card_, AutofillClient::UNMASK_FOR_PAYMENT_REQUEST, AsWeakPtr()); | 277 *card_, AutofillClient::UNMASK_FOR_PAYMENT_REQUEST, AsWeakPtr()); |
| 278 } | 278 } |
| 279 | 279 |
| 280 private: | 280 private: |
| 281 virtual ~FullCardRequester() {} | 281 virtual ~FullCardRequester() {} |
| 282 | 282 |
| 283 // payments::FullCardRequest::Delegate: | 283 // payments::FullCardRequest::Delegate: |
| 284 void OnFullCardDetails(const CreditCard& card, | 284 void OnFullCardRequestSucceeded(const CreditCard& card, |
| 285 const base::string16& cvc) override { | 285 const base::string16& cvc) override { |
| 286 JNIEnv* env = base::android::AttachCurrentThread(); | 286 JNIEnv* env = base::android::AttachCurrentThread(); |
| 287 Java_FullCardRequestDelegate_onFullCardDetails( | 287 Java_FullCardRequestDelegate_onFullCardDetails( |
| 288 env, jdelegate_, CreateJavaCreditCardFromNative(env, card), | 288 env, jdelegate_, CreateJavaCreditCardFromNative(env, card), |
| 289 base::android::ConvertUTF16ToJavaString(env, cvc)); | 289 base::android::ConvertUTF16ToJavaString(env, cvc)); |
| 290 delete this; | 290 delete this; |
| 291 } | 291 } |
| 292 | 292 |
| 293 // payments::FullCardRequest::Delegate: | 293 // payments::FullCardRequest::Delegate: |
| 294 void OnFullCardError() override { | 294 void OnFullCardRequestFailed() override { |
| 295 JNIEnv* env = base::android::AttachCurrentThread(); | 295 JNIEnv* env = base::android::AttachCurrentThread(); |
| 296 Java_FullCardRequestDelegate_onFullCardError(env, jdelegate_); | 296 Java_FullCardRequestDelegate_onFullCardError(env, jdelegate_); |
| 297 delete this; | 297 delete this; |
| 298 } | 298 } |
| 299 | 299 |
| 300 std::unique_ptr<CreditCard> card_; | 300 std::unique_ptr<CreditCard> card_; |
| 301 ScopedJavaGlobalRef<jobject> jdelegate_; | 301 ScopedJavaGlobalRef<jobject> jdelegate_; |
| 302 | 302 |
| 303 DISALLOW_COPY_AND_ASSIGN(FullCardRequester); | 303 DISALLOW_COPY_AND_ASSIGN(FullCardRequester); |
| 304 }; | 304 }; |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 | 454 |
| 455 if (guid.empty()) { | 455 if (guid.empty()) { |
| 456 personal_data_manager_->AddCreditCard(card); | 456 personal_data_manager_->AddCreditCard(card); |
| 457 } else { | 457 } else { |
| 458 card.set_guid(guid); | 458 card.set_guid(guid); |
| 459 personal_data_manager_->UpdateCreditCard(card); | 459 personal_data_manager_->UpdateCreditCard(card); |
| 460 } | 460 } |
| 461 return ConvertUTF8ToJavaString(env, card.guid()); | 461 return ConvertUTF8ToJavaString(env, card.guid()); |
| 462 } | 462 } |
| 463 | 463 |
| 464 | |
| 465 void PersonalDataManagerAndroid::UpdateServerCardBillingAddress( | 464 void PersonalDataManagerAndroid::UpdateServerCardBillingAddress( |
| 466 JNIEnv* env, | 465 JNIEnv* env, |
| 467 const JavaParamRef<jobject>& unused_obj, | 466 const JavaParamRef<jobject>& unused_obj, |
| 468 const JavaParamRef<jstring>& jcard_server_id, | 467 const JavaParamRef<jstring>& jcard_server_id, |
| 469 const JavaParamRef<jstring>& jbilling_address_id) { | 468 const JavaParamRef<jstring>& jbilling_address_id) { |
| 470 CreditCard card("", kSettingsOrigin); | 469 CreditCard card("", kSettingsOrigin); |
| 471 card.set_record_type(CreditCard::MASKED_SERVER_CARD); | 470 card.set_record_type(CreditCard::MASKED_SERVER_CARD); |
| 472 card.set_server_id(ConvertJavaStringToUTF8(env, jcard_server_id)); | 471 card.set_server_id(ConvertJavaStringToUTF8(env, jcard_server_id)); |
| 473 card.set_billing_address_id(ConvertJavaStringToUTF8(env, | 472 card.set_billing_address_id(ConvertJavaStringToUTF8(env, |
| 474 jbilling_address_id)); | 473 jbilling_address_id)); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 const base::android::JavaParamRef<jobject>& unused_obj, | 613 const base::android::JavaParamRef<jobject>& unused_obj, |
| 615 const base::android::JavaParamRef<jstring>& jguid) { | 614 const base::android::JavaParamRef<jstring>& jguid) { |
| 616 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( | 615 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( |
| 617 ConvertJavaStringToUTF8(env, jguid)); | 616 ConvertJavaStringToUTF8(env, jguid)); |
| 618 return card->use_count(); | 617 return card->use_count(); |
| 619 } | 618 } |
| 620 | 619 |
| 621 jlong PersonalDataManagerAndroid::GetCreditCardUseDateForTesting( | 620 jlong PersonalDataManagerAndroid::GetCreditCardUseDateForTesting( |
| 622 JNIEnv* env, | 621 JNIEnv* env, |
| 623 const base::android::JavaParamRef<jobject>& unused_obj, | 622 const base::android::JavaParamRef<jobject>& unused_obj, |
| 624 const base::android::JavaParamRef<jstring>& jguid){ | 623 const base::android::JavaParamRef<jstring>& jguid) { |
| 625 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( | 624 CreditCard* card = personal_data_manager_->GetCreditCardByGUID( |
| 626 ConvertJavaStringToUTF8(env, jguid)); | 625 ConvertJavaStringToUTF8(env, jguid)); |
| 627 return card->use_date().ToTimeT(); | 626 return card->use_date().ToTimeT(); |
| 628 } | 627 } |
| 629 | 628 |
| 630 // TODO(crbug.com/629507): Use a mock clock for testing. | 629 // TODO(crbug.com/629507): Use a mock clock for testing. |
| 631 jlong PersonalDataManagerAndroid::GetCurrentDateForTesting( | 630 jlong PersonalDataManagerAndroid::GetCurrentDateForTesting( |
| 632 JNIEnv* env, | 631 JNIEnv* env, |
| 633 const base::android::JavaParamRef<jobject>& unused_obj) { | 632 const base::android::JavaParamRef<jobject>& unused_obj) { |
| 634 return base::Time::Now().ToTimeT(); | 633 return base::Time::Now().ToTimeT(); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 726 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); | 725 base::android::ConvertJavaStringToUTF16(env, jcountry_name))); |
| 727 } | 726 } |
| 728 | 727 |
| 729 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 728 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 730 PersonalDataManagerAndroid* personal_data_manager_android = | 729 PersonalDataManagerAndroid* personal_data_manager_android = |
| 731 new PersonalDataManagerAndroid(env, obj); | 730 new PersonalDataManagerAndroid(env, obj); |
| 732 return reinterpret_cast<intptr_t>(personal_data_manager_android); | 731 return reinterpret_cast<intptr_t>(personal_data_manager_android); |
| 733 } | 732 } |
| 734 | 733 |
| 735 } // namespace autofill | 734 } // namespace autofill |
| OLD | NEW |