Index: components/autofill/android/java/src/org/chromium/components/autofill/AutofillProvider.java |
diff --git a/components/autofill/android/java/src/org/chromium/components/autofill/AutofillProvider.java b/components/autofill/android/java/src/org/chromium/components/autofill/AutofillProvider.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ef2569cc088e5b02c0872895a123253d279ee930 |
--- /dev/null |
+++ b/components/autofill/android/java/src/org/chromium/components/autofill/AutofillProvider.java |
@@ -0,0 +1,120 @@ |
+// Copyright 2017 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.components.autofill; |
+ |
+import android.util.SparseArray; |
+import android.view.ViewGroup; |
+import android.view.ViewStructure; |
+ |
+import org.chromium.base.annotations.CalledByNative; |
+import org.chromium.base.annotations.JNINamespace; |
+import org.chromium.content_public.browser.WebContents; |
+ |
+/** |
+ * This class defines interface of AutofillProvider, it doesn't use chrome's |
+ * autofill service or suggestion UI, instead, uses third party autofill service |
+ * by knowing of format structure and user's input. |
+ * |
+ * AutofillProvider handles one autofill session at time, each call of |
+ * queryFormFieldAutofill cancels previous session and starts a new one, the |
+ * calling of other methods shall associate with current session. |
+ * |
+ */ |
+@JNINamespace("autofill") |
+public abstract class AutofillProvider { |
+ public AutofillProvider() {} |
+ |
+ /** |
+ * Invoked when container view is changed. |
+ * |
+ * @param containerView new container view. |
+ */ |
+ public abstract void onContainerViewChanged(ViewGroup containerView); |
+ |
+ public abstract void setWebContents(WebContents webContents); |
+ |
+ /** |
+ * Invoked when autofill value is available, AutofillProvider shall fill the |
+ * form with the provided values. |
+ * |
+ * @param values the array of autofill values, the key is virtual id of form |
+ * field. |
+ */ |
+ public abstract void autofill(final SparseArray<String> values); |
+ |
+ /** |
+ * Invoked when autofill service needs the form structure. |
+ * |
+ * @param structure see View.onProvideAutofillVirtualStructure() |
+ * @param flags see View.onProvideAutofillVirtualStructure() |
+ */ |
+ public abstract void onProvideAutoFillVirtualStructure(ViewStructure structure, int flags); |
+ |
+ /** |
+ * Invoked when filling form is need. AutofillProvider shall ask autofill |
+ * service for the values with which to fill the form. |
+ * |
+ * @param formData the form needs to fill. |
+ * @param focus the index of focus field in formData |
+ * @param x the boundary of focus field. |
+ * @param y the boundary of focus field. |
+ * @param width the boundary of focus field. |
+ * @param height the boundary of focus field. |
+ */ |
+ @CalledByNative |
+ protected abstract void startAutofillSession( |
+ FormData formData, float focus, float x, float y, float width, float height); |
+ |
+ /** |
+ * Invoked when text field is changed. |
+ * |
+ * @param index index of field in current form. |
+ */ |
+ @CalledByNative |
+ protected abstract void onTextFieldDidChange(int index); |
+ |
+ /** |
+ * Invoked when current form will be submitted. |
+ * |
+ */ |
+ @CalledByNative |
+ protected abstract void onWillSubmitForm(); |
+ |
+ /** |
+ * Invoked when focus field changed. |
+ * |
+ * @param focusOnForm whether focus is still on form. |
+ * @param focusItem the index of field has focus |
+ * @param x the boundary of focus field. |
+ * @param y the boundary of focus field. |
+ * @param width the boundary of focus field. |
+ * @param height the boundary of focus field. |
+ */ |
+ @CalledByNative |
+ protected abstract void onFocusChanged( |
+ boolean focusOnForm, int focusItem, float x, float y, float width, float height); |
+ |
+ /** |
+ * Send form to renderer for filling. |
+ * |
+ * @param nativeAutofillProvider the native autofill provider. |
+ * @param formData the form to fill. |
+ */ |
+ protected void autofill(long nativeAutofillProvider, FormData formData) { |
+ nativeOnAutofillAvailable(nativeAutofillProvider, formData); |
+ } |
+ |
+ /** |
+ * Invoked when current query need to be reset. |
+ */ |
+ @CalledByNative |
+ protected abstract void reset(); |
+ |
+ @CalledByNative |
+ protected abstract void setNativeAutofillProvider(long nativeAutofillProvider); |
+ |
+ private native void nativeOnAutofillAvailable( |
+ long nativeAutofillProviderAndroid, FormData formData); |
+} |