| Index: chrome/android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java
|
| index e603ddaf31d76ff42e0dfbc6198546a1dca660c5..27ebb39168efc059501533209d83a9b13f1dac3c 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java
|
| @@ -12,6 +12,7 @@ import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.annotations.JNINamespace;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.ResourceId;
|
| +import org.chromium.content_public.browser.WebContents;
|
|
|
| import java.util.ArrayList;
|
| import java.util.List;
|
| @@ -39,6 +40,24 @@ public class PersonalDataManager {
|
| }
|
|
|
| /**
|
| + * Callback for full card request.
|
| + */
|
| + public interface FullCardRequestDelegate {
|
| + /**
|
| + * Called when user provided the full card details, including the CVC and the full PAN.
|
| + *
|
| + * @param card The full card.
|
| + * @param cvc The CVC for the card.
|
| + */
|
| + public abstract void onFullCardDetails(CreditCard card, String cvc);
|
| +
|
| + /**
|
| + * Called when user did not provide full card details.
|
| + */
|
| + public abstract void onFullCardError();
|
| + }
|
| +
|
| + /**
|
| * Autofill address information.
|
| */
|
| public static class AutofillProfile {
|
| @@ -415,6 +434,7 @@ public class PersonalDataManager {
|
| private final long mPersonalDataManagerAndroid;
|
| private final List<PersonalDataManagerObserver> mDataObservers =
|
| new ArrayList<PersonalDataManagerObserver>();
|
| + private FullCardRequestDelegate mFullCardRequestDelegate;
|
|
|
| private PersonalDataManager() {
|
| // Note that this technically leaks the native object, however, PersonalDataManager
|
| @@ -512,6 +532,32 @@ public class PersonalDataManager {
|
| nativeClearUnmaskedCache(mPersonalDataManagerAndroid, guid);
|
| }
|
|
|
| + public void unmaskCard(WebContents webContents, String guid, FullCardRequestDelegate delegate) {
|
| + if (mFullCardRequestDelegate != null) {
|
| + delegate.onFullCardError();
|
| + return;
|
| + }
|
| +
|
| + mFullCardRequestDelegate = delegate;
|
| + nativeGetFullCardForPaymentRequest(mPersonalDataManagerAndroid, webContents, guid);
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void onFullCardDetails(CreditCard card, String cvc) {
|
| + ThreadUtils.assertOnUiThread();
|
| + assert mFullCardRequestDelegate != null;
|
| + mFullCardRequestDelegate.onFullCardDetails(card, cvc);
|
| + mFullCardRequestDelegate = null;
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void onFullCardError() {
|
| + ThreadUtils.assertOnUiThread();
|
| + assert mFullCardRequestDelegate != null;
|
| + mFullCardRequestDelegate.onFullCardError();
|
| + mFullCardRequestDelegate = null;
|
| + }
|
| +
|
| /**
|
| * @return Whether the Autofill feature is enabled.
|
| */
|
| @@ -568,6 +614,8 @@ public class PersonalDataManager {
|
| private native void nativeRemoveByGUID(long nativePersonalDataManagerAndroid, String guid);
|
| private native void nativeClearUnmaskedCache(
|
| long nativePersonalDataManagerAndroid, String guid);
|
| + private native void nativeGetFullCardForPaymentRequest(long nativePersonalDataManagerAndroid,
|
| + WebContents webContents, String guid);
|
| private static native boolean nativeIsAutofillEnabled();
|
| private static native void nativeSetAutofillEnabled(boolean enable);
|
| private static native boolean nativeIsAutofillManaged();
|
|
|