| Index: chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogTabManagerDelegateAndroid.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogTabManagerDelegateAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogTabManagerDelegateAndroid.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a8668868c7b72be564104b9141e71c68400cbdc2
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogTabManagerDelegateAndroid.java
|
| @@ -0,0 +1,138 @@
|
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.autofill;
|
| +
|
| +import android.app.Activity;
|
| +import android.content.Context;
|
| +import android.util.Log;
|
| +
|
| +import org.chromium.base.CalledByNative;
|
| +import org.chromium.base.JNINamespace;
|
| +import org.chromium.ui.WindowAndroid;
|
| +
|
| +
|
| +/**
|
| +* JNI call glue for AutofillDialog C++ and Java objects.
|
| +*/
|
| +@JNINamespace("autofill")
|
| +public class AutofillDialogTabManagerDelegateAndroid {
|
| + private static final String TAG = "AutofillDialogTabManagerDelegateAndroid";
|
| + private static AutofillDialogFactory mDialogFactory;
|
| + private int mNativeDelegate; // could be 0 after onDestroy().
|
| + private AutofillDialog mDialog;
|
| +
|
| + public interface AutofillDialogDelegate {
|
| + void dialogCancel();
|
| + void dialogContinue(
|
| + AutofillDialogResult.ResultWallet fullWallet,
|
| + boolean lastUsedChoiceIsAutofill, String lastUsedAccountName,
|
| + String guidLastUsedBilling, String guidLastUsedShipping, String guidLastUsedCard);
|
| + }
|
| +
|
| + public interface AutofillDialog {
|
| + void onDestroy();
|
| + }
|
| +
|
| + public interface AutofillDialogFactory {
|
| + AutofillDialog createDialog(
|
| + final AutofillDialogDelegate delegate,
|
| + final WindowAndroid windowAndroid,
|
| + final boolean requestFullBillingAddress, final boolean requestShippingAddress,
|
| + final boolean requestPhoneNumbers,
|
| + final boolean initialChoiceIsAutofill, final String initialWalletAccountName,
|
| + final String initialBillingGuid, final String initialShippingGuid,
|
| + final String initialCardGuid,
|
| + final String merchantDomain);
|
| + }
|
| +
|
| + public static void setDialogFactory(AutofillDialogFactory factory) {
|
| + mDialogFactory = factory;
|
| + }
|
| +
|
| + public AutofillDialogTabManagerDelegateAndroid(
|
| + final int nativeAutofillDialogTabManagerDelegateAndroid,
|
| + final WindowAndroid windowAndroid,
|
| + final boolean requestFullBillingAddress, final boolean requestShippingAddress,
|
| + final boolean requestPhoneNumbers,
|
| + final boolean initialChoiceIsAutofill, final String initialWalletAccountName,
|
| + final String initialBillingGuid, final String initialShippingGuid,
|
| + final String initialCardGuid,
|
| + final String merchantDomain) {
|
| + mNativeDelegate = nativeAutofillDialogTabManagerDelegateAndroid;
|
| +
|
| + if (mDialogFactory == null) {
|
| + Log.i(TAG, "No AutofillDialog factory is set");
|
| + nativeDialogCancel(mNativeDelegate);
|
| + return;
|
| + }
|
| +
|
| + mDialog = mDialogFactory.createDialog(
|
| + new AutofillDialogDelegate() {
|
| + @Override
|
| + public void dialogCancel() {
|
| + nativeDialogCancel(mNativeDelegate);
|
| + }
|
| +
|
| + @Override
|
| + public void dialogContinue(
|
| + AutofillDialogResult.ResultWallet fullWallet,
|
| + boolean lastUsedChoiceIsAutofill, String lastUsedAccountName,
|
| + String guidLastUsedBilling, String guidLastUsedShipping,
|
| + String guidLastUsedCard) {
|
| + nativeDialogContinue(mNativeDelegate, fullWallet,
|
| + lastUsedChoiceIsAutofill, lastUsedAccountName,
|
| + guidLastUsedBilling, guidLastUsedShipping, guidLastUsedCard);
|
| + }
|
| + },
|
| + windowAndroid,
|
| + requestFullBillingAddress, requestShippingAddress,
|
| + requestPhoneNumbers,
|
| + initialChoiceIsAutofill, initialWalletAccountName,
|
| + initialBillingGuid, initialShippingGuid, initialCardGuid,
|
| + merchantDomain);
|
| + if (mDialog == null) {
|
| + Log.i(TAG, "Autofill dialog couldn't be created");
|
| + nativeDialogCancel(mNativeDelegate);
|
| + return;
|
| + }
|
| + }
|
| +
|
| + @CalledByNative
|
| + private static AutofillDialogTabManagerDelegateAndroid create(
|
| + final int nativeAutofillDialogTabManagerDelegateAndroid,
|
| + final WindowAndroid windowAndroid,
|
| + final boolean requestFullBillingAddress, final boolean requestShippingAddress,
|
| + final boolean requestPhoneNumbers,
|
| + final boolean initialChoiceIsAutofill, final String initialWalletAccountName,
|
| + final String initialBillingGuid, final String initialShippingGuid,
|
| + final String initialCreditCardGuid,
|
| + final String merchantDomain) {
|
| + return new AutofillDialogTabManagerDelegateAndroid(
|
| + nativeAutofillDialogTabManagerDelegateAndroid, windowAndroid,
|
| + requestFullBillingAddress, requestShippingAddress, requestPhoneNumbers,
|
| + initialChoiceIsAutofill, initialWalletAccountName,
|
| + initialBillingGuid, initialShippingGuid,
|
| + initialCreditCardGuid,
|
| + merchantDomain);
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void onDestroy() {
|
| + if (mNativeDelegate == 0) return;
|
| +
|
| + if (mDialog != null) mDialog.onDestroy();
|
| +
|
| + mDialog = null;
|
| + mNativeDelegate = 0;
|
| + }
|
| +
|
| + // Calls from Java to C++ AutofillDialogTabManagerDelegateAndroid.
|
| +
|
| + private native void nativeDialogCancel(int nativeAutofillDialogTabManagerDelegateAndroid);
|
| + private native void nativeDialogContinue(int nativeAutofillDialogTabManagerDelegateAndroid,
|
| + Object fullWallet,
|
| + boolean lastUsedChoiceIsAutofill, String lastUsedAccountName,
|
| + String guidLastUsedBilling, String guidLastUsedShipping, String guidLastUsedCard);
|
| +}
|
|
|