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..a306eec2fdca574bcd191f9835610eaa16924209 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()->full_card_request()->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) { |