| 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 56234fefa0a7c6a2a693bbed3a22236f52c7d1c4..a72bec33cbd66c2c25178c0b9511064948288d3c 100644
|
| --- a/chrome/browser/autofill/android/personal_data_manager_android.cc
|
| +++ b/chrome/browser/autofill/android/personal_data_manager_android.cc
|
| @@ -18,6 +18,8 @@
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/common/pref_names.h"
|
| +#include "components/autofill/content/browser/content_autofill_driver.h"
|
| +#include "components/autofill/content/browser/content_autofill_driver_factory.h"
|
| #include "components/autofill/core/browser/autofill_country.h"
|
| #include "components/autofill/core/browser/autofill_type.h"
|
| #include "components/autofill/core/browser/country_names.h"
|
| @@ -26,6 +28,7 @@
|
| #include "components/autofill/core/common/autofill_pref_names.h"
|
| #include "components/autofill/core/common/autofill_switches.h"
|
| #include "components/prefs/pref_service.h"
|
| +#include "content/public/browser/web_contents.h"
|
| #include "jni/PersonalDataManager_jni.h"
|
|
|
| using base::android::ConvertJavaStringToUTF8;
|
| @@ -198,7 +201,8 @@ PersonalDataManagerAndroid::PersonalDataManagerAndroid(JNIEnv* env,
|
| jobject obj)
|
| : weak_java_obj_(env, obj),
|
| personal_data_manager_(PersonalDataManagerFactory::GetForProfile(
|
| - ProfileManager::GetActiveUserProfile())) {
|
| + ProfileManager::GetActiveUserProfile())),
|
| + weak_ptr_factory_(this) {
|
| personal_data_manager_->AddObserver(this);
|
| }
|
|
|
| @@ -331,6 +335,44 @@ void PersonalDataManagerAndroid::ClearUnmaskedCache(
|
| ConvertJavaStringToUTF8(env, guid));
|
| }
|
|
|
| +void PersonalDataManagerAndroid::GetFullCardForPaymentRequest(
|
| + JNIEnv* env,
|
| + const JavaParamRef<jobject>& unused_obj,
|
| + const JavaParamRef<jobject>& web_contents_obj,
|
| + const JavaParamRef<jstring>& jguid) {
|
| + content::WebContents* contents =
|
| + content::WebContents::FromJavaWebContents(web_contents_obj);
|
| + if (!contents) {
|
| + OnFullCardError();
|
| + return;
|
| + }
|
| +
|
| + ContentAutofillDriverFactory* factory =
|
| + ContentAutofillDriverFactory::FromWebContents(contents);
|
| + if (!factory) {
|
| + OnFullCardError();
|
| + return;
|
| + }
|
| +
|
| + ContentAutofillDriver* driver =
|
| + factory->DriverForFrame(contents->GetMainFrame());
|
| + if (!driver) {
|
| + OnFullCardError();
|
| + return;
|
| + }
|
| +
|
| + CreditCard* card = personal_data_manager_->GetCreditCardByGUID(
|
| + ConvertJavaStringToUTF8(env, jguid));
|
| + if (!card) {
|
| + OnFullCardError();
|
| + return;
|
| + }
|
| +
|
| + driver->autofill_manager()->GetOrCreateFullCardRequest()->GetFullCard(
|
| + *card, AutofillClient::UNMASK_FOR_PAYMENT_REQUEST,
|
| + weak_ptr_factory_.GetWeakPtr());
|
| +}
|
| +
|
| void PersonalDataManagerAndroid::OnPersonalDataChanged() {
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| if (weak_java_obj_.get(env).is_null())
|
| @@ -345,6 +387,20 @@ bool PersonalDataManagerAndroid::Register(JNIEnv* env) {
|
| return RegisterNativesImpl(env);
|
| }
|
|
|
| +void PersonalDataManagerAndroid::OnFullCardDetails(const CreditCard& card,
|
| + const base::string16& cvc) {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + Java_PersonalDataManager_onFullCardDetails(
|
| + env, weak_java_obj_.get(env).obj(),
|
| + CreateJavaCreditCardFromNative(env, card).obj(),
|
| + base::android::ConvertUTF16ToJavaString(env, cvc).obj());
|
| +}
|
| +
|
| +void PersonalDataManagerAndroid::OnFullCardError() {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + Java_PersonalDataManager_onFullCardError(env, weak_java_obj_.get(env).obj());
|
| +}
|
| +
|
| // Returns whether the Autofill feature is enabled.
|
| static jboolean IsAutofillEnabled(JNIEnv* env,
|
| const JavaParamRef<jclass>& clazz) {
|
|
|