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

Unified Diff: chrome/browser/autofill/android/personal_data_manager_android.cc

Issue 1899893002: Card unmasking without form filling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moar tests Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698