Chromium Code Reviews| 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); |
|
Ted C
2016/04/22 23:34:56
drop public and abstract in interfaces
please use gerrit instead
2016/04/23 01:17:42
Done.
|
| + |
| + /** |
| + * 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) { |
|
Ted C
2016/04/22 23:34:56
this looks fishy to me. you cancel the previous d
please use gerrit instead
2016/04/23 01:17:43
Done.
|
| + 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(); |