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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogTabManagerDelegateAndroid.java

Issue 21124012: [WIP] Split AutofillDialogControllerImpl + integrate rAc on Android. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 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/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);
+}

Powered by Google App Engine
This is Rietveld 408576698