Index: android_webview/java/src/org/chromium/android_webview/AwContents.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
index a09d4db3647d76e07bafb77702599547e5a71379..53fb1c4217622ff38dac5cea6ab3bdaa96fc24fe 100644 |
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java |
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
@@ -28,6 +28,7 @@ import android.os.SystemClock; |
import android.text.TextUtils; |
import android.util.Base64; |
import android.util.Pair; |
+import android.util.SparseArray; |
import android.view.DragEvent; |
import android.view.KeyEvent; |
import android.view.MotionEvent; |
@@ -37,6 +38,7 @@ import android.view.ViewStructure; |
import android.view.accessibility.AccessibilityEvent; |
import android.view.accessibility.AccessibilityNodeInfo; |
import android.view.accessibility.AccessibilityNodeProvider; |
+import android.view.autofill.AutofillValue; |
import android.view.animation.AnimationUtils; |
import android.view.inputmethod.EditorInfo; |
import android.view.inputmethod.InputConnection; |
@@ -84,6 +86,7 @@ import java.lang.annotation.Annotation; |
import java.net.MalformedURLException; |
import java.net.URL; |
import java.util.HashMap; |
+import java.util.List; |
import java.util.Locale; |
import java.util.Map; |
import java.util.WeakHashMap; |
@@ -242,6 +245,11 @@ public class AwContents implements SmartClipProvider { |
AwScrollOffsetManager.Delegate delegate) { |
return new AwScrollOffsetManager(delegate); |
} |
+ |
+ public AwAutofillManager createAwAutofillManager(Context context, AwContents awContents) { |
+ // Remove the AwContents parameter. |
+ return new DummyAwAutofillManager(context, awContents); |
+ } |
} |
/** |
@@ -359,6 +367,8 @@ public class AwContents implements SmartClipProvider { |
// Do not use directly, call isNoOperation() instead. |
private boolean mIsNoOperation; |
+ private AwAutofillProvider mAwAutofillProvider; |
+ |
private static String sCurrentLocales = ""; |
private static final class AwContentsDestroyRunnable implements Runnable { |
@@ -741,6 +751,12 @@ public class AwContents implements SmartClipProvider { |
mHandler = new Handler(); |
mContext = context; |
+ AwAutofillManager awAutofillManager = dependencyFactory.createAwAutofillManager(context, |
+ this); |
+ if (awAutofillManager != null) { |
+ mAwAutofillProvider = new AwAutofillProvider(context, mContainerView, |
+ awAutofillManager); |
+ } |
mAppTargetSdkVersion = mContext.getApplicationInfo().targetSdkVersion; |
mInternalAccessAdapter = internalAccessAdapter; |
mNativeDrawGLFunctorFactory = nativeDrawGLFunctorFactory; |
@@ -2329,6 +2345,14 @@ public class AwContents implements SmartClipProvider { |
mContentViewCore.onProvideVirtualStructure(structure, true); |
} |
+ public void onProvideAutoFillVirtualStructure(ViewStructure structure, int flags) { |
+ mAwAutofillProvider.onProvideAutoFillVirtualStructure(structure, flags); |
+ } |
+ |
+ public void autofill(final SparseArray<AutofillValue> values) { |
+ mAwAutofillProvider.autofill(values); |
+ } |
+ |
public boolean isSelectActionModeAllowed(int actionModeItem) { |
return (mSettings.getDisabledActionModeMenuItems() & actionModeItem) != actionModeItem; |
} |
@@ -2882,6 +2906,12 @@ public class AwContents implements SmartClipProvider { |
} |
@CalledByNative |
+ private long getNativeAutofillAndroid() { |
+ if (mAwAutofillProvider == null) return 0; |
+ return mAwAutofillProvider.getNativeAutofillProviderAndroid(); |
+ } |
+ |
+ @CalledByNative |
private void didOverscroll(int deltaX, int deltaY, float velocityX, float velocityY) { |
mScrollOffsetManager.overScrollBy(deltaX, deltaY); |