| 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..52752007b0c120fe7c671c3aeb63fe4b98e94c8d 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,20 @@ public class PersonalDataManager {
|
| }
|
|
|
| /**
|
| + * Callback for card unmasking.
|
| + */
|
| + public interface CardUnmaskDelegate {
|
| + /**
|
| + * Called when a card was unmasked.
|
| + *
|
| + * @param success Whether the unmasking succeeded.
|
| + * @param card The unmasked card or null.
|
| + * @param cvc The CVC for the unmasked card or null.
|
| + */
|
| + public abstract void onCardUnmasked(boolean success, CreditCard card, String cvc);
|
| + }
|
| +
|
| + /**
|
| * Autofill address information.
|
| */
|
| public static class AutofillProfile {
|
| @@ -415,6 +430,7 @@ public class PersonalDataManager {
|
| private final long mPersonalDataManagerAndroid;
|
| private final List<PersonalDataManagerObserver> mDataObservers =
|
| new ArrayList<PersonalDataManagerObserver>();
|
| + private CardUnmaskDelegate mUnmaskDelegate;
|
|
|
| private PersonalDataManager() {
|
| // Note that this technically leaks the native object, however, PersonalDataManager
|
| @@ -512,6 +528,24 @@ public class PersonalDataManager {
|
| nativeClearUnmaskedCache(mPersonalDataManagerAndroid, guid);
|
| }
|
|
|
| + public void unmaskCard(WebContents webContents, String guid, CardUnmaskDelegate delegate) {
|
| + if (mUnmaskDelegate != null) {
|
| + delegate.onCardUnmasked(false, null, null);
|
| + return;
|
| + }
|
| +
|
| + mUnmaskDelegate = delegate;
|
| + nativeUnmaskCard(mPersonalDataManagerAndroid, webContents, guid);
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void creditCardUnmasked(boolean success, CreditCard unmaskedCard, String cvc) {
|
| + ThreadUtils.assertOnUiThread();
|
| + mUnmaskDelegate.onCardUnmasked(success, unmaskedCard, cvc);
|
| + mUnmaskDelegate = null;
|
| + }
|
| +
|
| +
|
| /**
|
| * @return Whether the Autofill feature is enabled.
|
| */
|
| @@ -568,6 +602,8 @@ public class PersonalDataManager {
|
| private native void nativeRemoveByGUID(long nativePersonalDataManagerAndroid, String guid);
|
| private native void nativeClearUnmaskedCache(
|
| long nativePersonalDataManagerAndroid, String guid);
|
| + private native void nativeUnmaskCard(long nativePersonalDataManagerAndroid,
|
| + WebContents webContents, String guid);
|
| private static native boolean nativeIsAutofillEnabled();
|
| private static native void nativeSetAutofillEnabled(boolean enable);
|
| private static native boolean nativeIsAutofillManaged();
|
|
|