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

Unified Diff: android_webview/java/src/org/chromium/android_webview/DummyAwAutofillManager.java

Issue 2745803003: autofill-try
Patch Set: before I leave Created 3 years, 9 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: android_webview/java/src/org/chromium/android_webview/DummyAwAutofillManager.java
diff --git a/android_webview/java/src/org/chromium/android_webview/DummyAwAutofillManager.java b/android_webview/java/src/org/chromium/android_webview/DummyAwAutofillManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..2bf03cad5c9ed95d676a12be4413a4959560bde6
--- /dev/null
+++ b/android_webview/java/src/org/chromium/android_webview/DummyAwAutofillManager.java
@@ -0,0 +1,419 @@
+package org.chromium.android_webview;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.graphics.Matrix;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.os.LocaleList;
+import android.util.Pair;
+import android.util.SparseArray;
+import android.view.View;
+import android.view.ViewStructure;
+import android.view.autofill.AutofillValue;
+
+import org.chromium.base.Log;
+import org.chromium.base.ThreadUtils;
+
+import java.util.ArrayList;
+
+@SuppressLint("NewApi") // Removed once SDK roll to O
+public class DummyAwAutofillManager extends AwAutofillManager {
+
+ private class DummyViewStructure extends ViewStructure {
+
+ @Override
+ public void setAlpha(float alpha) {
+ // TODO(michaelbai): Auto-generated method stub
+ }
+
+ @Override
+ public void setAccessibilityFocused(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setCheckable(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setChecked(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setActivated(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public CharSequence getText() {
+ // TODO(michaelbai): Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public int getTextSelectionStart() {
+ // TODO(michaelbai): Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public int getTextSelectionEnd() {
+ // TODO(michaelbai): Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public CharSequence getHint() {
+ // TODO(michaelbai): Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Bundle getExtras() {
+ // TODO(michaelbai): Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean hasExtras() {
+ // TODO(michaelbai): Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public int addChildCount(int num) {
+ // TODO(michaelbai): Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public int getChildCount() {
+ // TODO(michaelbai): Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public ViewStructure newChild(int index) {
+ DummyViewStructure child = new DummyViewStructure();
+ mChildren.add(child);
+
+ return child;
+ }
+
+ @Override
+ public ViewStructure asyncNewChild(int index) {
+ // TODO(michaelbai): Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void asyncCommit() {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setId(int id, String packageName, String typeName, String entryName) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setDimens(int left, int top, int scrollX, int scrollY, int width, int height) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setTransformation(Matrix matrix) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setElevation(float elevation) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setVisibility(int visibility) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setEnabled(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setClickable(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setLongClickable(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setContextClickable(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setFocusable(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setFocused(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setSelected(boolean state) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setClassName(String className) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setContentDescription(CharSequence contentDescription) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setText(CharSequence text) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setText(CharSequence text, int selectionStart, int selectionEnd) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setTextStyle(float size, int fgColor, int bgColor, int style) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setTextLines(int[] charOffsets, int[] baselines) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setHint(CharSequence hint) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setChildCount(int num) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setDataIsSensitive(boolean sensitive) {
+
+ }
+
+ @Override
+ public void setAutofillOptions(String[] options) {
+ }
+
+ private ArrayList<DummyViewStructure> mChildren = new ArrayList<DummyViewStructure>();
+ private AutofillValue mAutofillValue;
+ private int mAutoFillType;
+ private int mVirtualId;
+
+ public ArrayList<DummyViewStructure> getChildren() {
+ return mChildren;
+ }
+
+ public AutofillValue getAutofillValue() {
+ return mAutofillValue;
+ }
+
+ public int getAutoFillType() {
+ return mAutoFillType;
+ }
+
+ public int getVirtualId() {
+ return mVirtualId;
+ }
+
+ @Override
+ public void setAutofillType(int arg0) {
+ // TODO(michaelbai): Auto-generated method stub
+ }
+
+ @Override
+ public void setAutofillValue(AutofillValue autofillValue) {
+ mAutofillValue = autofillValue;
+
+ }
+
+ @Override
+ public void setInputType(int arg0) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setOpaque(boolean arg0) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setUrl(String arg0) {
+ // TODO(michaelbai): Auto-generated method stub
+ }
+
+ @Override
+ public void setAutofillHint(String[] arg0) {
+ // TODO(michaelbai): Auto-generated method stub
+ }
+
+ @Override
+ public void setAutofillId(ViewStructure arg0, int virtualId) {
+ mVirtualId = virtualId;
+ }
+
+ @Override
+ public void setIdEntry(String arg0) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+
+ @Override
+ public void setLocaleList(LocaleList arg0) {
+ // TODO(michaelbai): Auto-generated method stub
+
+ }
+ }
+
+ private static final String TAG = "bt:-DummyAwAutofillManager";
+ private AwContents mAwContents;
+ private DummyViewStructure mViewStructure;
+ private boolean mFirstSuggestion;
+ private boolean mSecondSuggestion;
+
+ /**
+ * @param context
+ */
+ public DummyAwAutofillManager(Context context, AwContents awContents) {
+ super(context);
+ mAwContents = awContents;
+ }
+
+ @Override
+ public void notifyVirtualValueChanged(View parent, int childId, AutofillValue value) {
+ if (!mSecondSuggestion) {
+ mSecondSuggestion = true;
+ ThreadUtils.postOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ DummyAwAutofillManager.this.autoFillVirtual();
+ }
+ });
+ }
+ Log.d(TAG, "notifyVirtualValueChanged " + value.getTextValue());
+ }
+
+ @Override
+ public void commit() {
+ reset();
+ Log.d(TAG, "commit ");
+ }
+
+ @Override
+ public void notifyVirtualViewEntered(View parent, int childId, Rect bounds) {
+ if (!mFirstSuggestion) {
+ mFirstSuggestion = true;
+ ThreadUtils.postOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ DummyAwAutofillManager.this.onProvideVirtualStructure();
+ }
+ });
+ }
+ Log.d(TAG, "notifyVirtualViewEntered " + childId);
+ }
+
+ @Override
+ public void notifyVirtualViewExited(View parent, int childId) {
+ Log.d(TAG, "notifyVirtualViewExited " + childId);
+ }
+
+ @Override
+ public void cancel() {
+ reset();
+ Log.d(TAG, "cancel ");
+ }
+
+ private void reset() {
+ mFirstSuggestion = false;
+ mSecondSuggestion = false;
+ }
+
+ private void onProvideVirtualStructure() {
+ mViewStructure = new DummyViewStructure();
+ mAwContents.onProvideAutoFillVirtualStructure(mViewStructure, 0);
+
+ ThreadUtils.postOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ DummyAwAutofillManager.this.autoFillVirtual();
+ }
+ });
+ }
+
+ private void autoFillVirtual() {
+ final SparseArray<AutofillValue> values = new SparseArray<AutofillValue>();
+ for (DummyViewStructure child : mViewStructure.getChildren()) {
+ int id = child.getVirtualId();
+ String newValue = null;
+ String value = (String) child.getAutofillValue().getTextValue();
+ if (value.equalsIgnoreCase("name")) {
+ newValue = "WebView example";
+ } else if (value.equalsIgnoreCase("email")) {
+ newValue = "webview@android.com";
+ }
+ if (mSecondSuggestion) {
+ if (value.equalsIgnoreCase("phone")) {
+ newValue = "+1 650-650-0000";
+ }
+ }
+ values.put(id, AutofillValue.forText(newValue));
+ }
+ mAwContents.autofill(values);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698