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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogControllerAndroid.java

Issue 1931043002: Remove requestAutocomplete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.autofill;
6
7 import org.chromium.base.VisibleForTesting;
8 import org.chromium.base.annotations.CalledByNative;
9 import org.chromium.base.annotations.JNINamespace;
10 import org.chromium.ui.base.WindowAndroid;
11
12 /**
13 * Java-side AutofillDialog and AutofillDialogFactory interfaces, and
14 * JNI glue for C++ AutofillDialogControllerAndroid.
15 */
16 @JNINamespace("autofill")
17 public class AutofillDialogControllerAndroid {
18 private static AutofillDialogFactory sDialogFactory;
19
20 private long mNativeDelegate; // could be 0 after onDestroy().
21 private AutofillDialog mDialog;
22
23 /**
24 * An interface to the two possible continuations for the dialog.
25 * The dialog is expected to be dismissed when either of the calls is made.
26 */
27 public interface AutofillDialogDelegate {
28 /**
29 * Cancels the requestAutocomplete.
30 */
31 @VisibleForTesting
32 void dialogCancel();
33
34 /**
35 * Submits the data to the web-page and persists the last account/card/a ddress choices.
36 * @param fullWallet Resulting billing/shipping information obtained fro m the user
37 * @param lastUsedChoiceIsAutofill Whether the last selected data source is Autofill
38 * @param lastUsedAccountName The last selected account name, or null
39 * @param guidLastUsedBilling GUID of the last selected Autofill billing address, or null
40 * @param guidLastUsedShipping GUID of the last selected Autofill shippi ng address, or null
41 * @param guidLastUsedCard GUID of the last selected Autofill credit car d, or null
42 */
43 @VisibleForTesting
44 void dialogContinue(
45 AutofillDialogResult.ResultWallet fullWallet,
46 boolean lastUsedChoiceIsAutofill, String lastUsedAccountName,
47 String guidLastUsedBilling, String guidLastUsedShipping, String guidLastUsedCard);
48 }
49
50 /**
51 * An interface that exposes the necessary functionality for an Autofill dia log.
52 * Note that all information necessary to construct the dialog is passed to the factory.
53 */
54 public interface AutofillDialog {
55 /**
56 * Notifies the dialog that the C++ side is gone.
57 * The dialog needs to clear its reference to the no longer valid Autofi llDialogDelegate.
58 */
59 void onDestroy();
60 }
61
62 /**
63 * An interface to the factory that creates Autofill dialogs.
64 */
65 public interface AutofillDialogFactory {
66 /**
67 * Creates the dialog.
68 * Reasonable attempts should be made to respect "initial choices",
69 * Initial choices don't have to be self-consistent or valid.
70 *
71 * @param delegate Continuations for the dialog
72 * @param windowAndroid Context in which the dialog should be shown
73 * @param requestFullBillingAddress Whether the full billing address is required
74 * @param requestShippingAddress Whether the shipping address is require d
75 * @param requestPhoneNumbers Whether the phone numbers are required in addresses
76 * @param incognitoMode True if the dialog started from an incognito tab
77 * @param initialChoiceIsAutofill Whether the selected data source shoul d be Autofill
78 * @param initialAccountName Account to be selected, or null
79 * @param initialBillingGuid GUID of the initial billing address selecti on in Autofill
80 * @param initialShippingGuid GUID of the initial shipping address selec tion in Autofill
81 * @param initialCardGuid GUID of the initial credit card selection in A utofill
82 * @param merchantDomain Scheme+origin for the originating web page, or null
83 * @param shippingCountries A list of allowed shipping countries, or nul l
84 * @param creditCardTypes A list of allowed credit card types (e.g. "VIS A"), or null
85 * @return The Autofill dialog that would later call into the delegate, or null
86 */
87 AutofillDialog createDialog(
88 final AutofillDialogDelegate delegate,
89 final WindowAndroid windowAndroid,
90 final boolean requestFullBillingAddress, final boolean requestSh ippingAddress,
91 final boolean requestPhoneNumbers,
92 final boolean incognitoMode,
93 final boolean initialChoiceIsAutofill, final String initialAccou ntName,
94 final String initialBillingGuid, final String initialShippingGui d,
95 final String initialCardGuid,
96 final String merchantDomain,
97 final String[] shippingCountries,
98 final String[] creditCardTypes);
99 }
100
101 /**
102 * Sets the factory to be used.
103 * @param factory An instance of the AutofillDialogFactory that will handle requests.
104 */
105 @VisibleForTesting
106 public static void setDialogFactory(AutofillDialogFactory factory) {
107 sDialogFactory = factory;
108 }
109
110 @VisibleForTesting
111 private AutofillDialogControllerAndroid(
112 final long nativeAutofillDialogControllerAndroid,
113 final WindowAndroid windowAndroid,
114 final boolean requestFullBillingAddress, final boolean requestShippi ngAddress,
115 final boolean requestPhoneNumbers,
116 final boolean incognitoMode,
117 final boolean initialChoiceIsAutofill, final String initialWalletAcc ountName,
118 final String initialBillingGuid, final String initialShippingGuid,
119 final String initialCardGuid,
120 final String merchantDomain,
121 final String[] shippingCountries,
122 final String[] creditCardTypes) {
123 mNativeDelegate = nativeAutofillDialogControllerAndroid;
124
125 if (sDialogFactory == null) {
126 nativeDialogCancel(mNativeDelegate);
127 return;
128 }
129
130 AutofillDialogDelegate delegate = new AutofillDialogDelegate() {
131 @Override
132 public void dialogCancel() {
133 nativeDialogCancel(mNativeDelegate);
134 }
135
136 @Override
137 public void dialogContinue(
138 AutofillDialogResult.ResultWallet fullWallet,
139 boolean lastUsedChoiceIsAutofill, String lastUsedAccountName ,
140 String guidLastUsedBilling, String guidLastUsedShipping,
141 String guidLastUsedCard) {
142 nativeDialogContinue(mNativeDelegate, fullWallet,
143 lastUsedChoiceIsAutofill, lastUsedAccountName,
144 guidLastUsedBilling, guidLastUsedShipping, guidLastUsedC ard);
145 }
146 };
147
148 mDialog = sDialogFactory.createDialog(
149 delegate,
150 windowAndroid,
151 requestFullBillingAddress, requestShippingAddress,
152 requestPhoneNumbers,
153 incognitoMode,
154 initialChoiceIsAutofill, initialWalletAccountName,
155 initialBillingGuid, initialShippingGuid, initialCardGuid,
156 merchantDomain,
157 shippingCountries,
158 creditCardTypes);
159 if (mDialog == null) {
160 nativeDialogCancel(mNativeDelegate);
161 return;
162 }
163 }
164
165 @CalledByNative
166 private static AutofillDialogControllerAndroid create(
167 final long nativeAutofillDialogControllerAndroid,
168 final WindowAndroid windowAndroid,
169 final boolean requestFullBillingAddress, final boolean requestShippi ngAddress,
170 final boolean requestPhoneNumbers,
171 final boolean incognitoMode,
172 final boolean initialChoiceIsAutofill, final String initialWalletAcc ountName,
173 final String initialBillingGuid, final String initialShippingGuid,
174 final String initialCreditCardGuid,
175 final String merchantDomain,
176 final String[] shippingCountries,
177 final String[] creditCardTypes) {
178 return new AutofillDialogControllerAndroid(
179 nativeAutofillDialogControllerAndroid, windowAndroid,
180 requestFullBillingAddress, requestShippingAddress, requestPhoneN umbers,
181 incognitoMode,
182 initialChoiceIsAutofill, initialWalletAccountName,
183 initialBillingGuid, initialShippingGuid,
184 initialCreditCardGuid,
185 merchantDomain,
186 shippingCountries,
187 creditCardTypes);
188 }
189
190 @CalledByNative
191 private static boolean isDialogAllowed(boolean isInvokedFromTheSameOrigin) {
192 // TODO(aruslan): cross-origin invocations should be allowed with a
193 // warning messge.
194 return isInvokedFromTheSameOrigin;
195 }
196
197 @CalledByNative
198 private void onDestroy() {
199 if (mNativeDelegate == 0) return;
200
201 if (mDialog != null) mDialog.onDestroy();
202
203 mDialog = null;
204 mNativeDelegate = 0;
205 }
206
207 // Calls from Java to C++ AutofillDialogControllerAndroid:
208
209 private native void nativeDialogCancel(long nativeAutofillDialogControllerAn droid);
210 private native void nativeDialogContinue(long nativeAutofillDialogController Android,
211 Object fullWallet,
212 boolean lastUsedChoiceIsAutofill, String lastUsedAccountName,
213 String guidLastUsedBilling, String guidLastUsedShipping, String guid LastUsedCard);
214 }
OLDNEW
« no previous file with comments | « build/config/features.gni ('k') | chrome/android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogResult.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698