diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2018-02-16 05:52:06 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-02-16 05:52:06 +0000 |
| commit | a6a0d1304d9b68df809e2695efab0a729936c2fd (patch) | |
| tree | 5251d37fd7b993bdab887caf729f225832617fbc /core/java/android | |
| parent | 75d6bedf0ea297c7ebac90dd1832ad9c324fd931 (diff) | |
| parent | 67e6209f320f5e1676831e7e6050fc1d6fac60bf (diff) | |
Merge "New Autofill API: notifyViewClicked()"
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/view/View.java | 3 | ||||
| -rw-r--r-- | core/java/android/view/autofill/AutofillId.java | 1 | ||||
| -rw-r--r-- | core/java/android/view/autofill/AutofillManager.java | 29 |
3 files changed, 27 insertions, 6 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 790e227071a9..3ff3c97620f0 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -8010,6 +8010,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * <li>Call {@link * android.view.autofill.AutofillManager#notifyViewVisibilityChanged(View, int, boolean)} * when the visibility of a virtual child changed. + * <li>Call + * {@link android.view.autofill.AutofillManager#notifyViewClicked(View, int)} when a virtual + * child is clicked. * <li>Call {@link AutofillManager#commit()} when the autofill context of the view structure * changed and the current context should be committed (for example, when the user tapped * a {@code SUBMIT} button in an HTML page). diff --git a/core/java/android/view/autofill/AutofillId.java b/core/java/android/view/autofill/AutofillId.java index 5ce2421aac87..cb1d89c54d9a 100644 --- a/core/java/android/view/autofill/AutofillId.java +++ b/core/java/android/view/autofill/AutofillId.java @@ -38,6 +38,7 @@ public final class AutofillId implements Parcelable { } /** @hide */ + @TestApi public AutofillId(AutofillId parent, int virtualChildId) { mVirtual = true; mViewId = parent.mViewId; diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java index 95c12fb8c1db..134dc1f060c6 100644 --- a/core/java/android/view/autofill/AutofillManager.java +++ b/core/java/android/view/autofill/AutofillManager.java @@ -71,10 +71,9 @@ import java.util.Collections; import java.util.List; import java.util.Objects; +//TODO: use java.lang.ref.Cleaner once Android supports Java 9 import sun.misc.Cleaner; -// TODO: use java.lang.ref.Cleaner once Android supports Java 9 - /** * The {@link AutofillManager} provides ways for apps and custom views to integrate with the * Autofill Framework lifecycle. @@ -1065,16 +1064,34 @@ public final class AutofillManager { } /** - * Called when a {@link View} is clicked. Currently only used by views that should trigger save. + * Called to indicate a {@link View} is clicked. * - * @hide + * @param view view that has been clicked. + */ + public void notifyViewClicked(@NonNull View view) { + notifyViewClicked(view.getAutofillId()); + } + + /** + * Called to indicate a virtual view has been clicked. + * + * @param view the virtual view parent. + * @param virtualId id identifying the virtual child inside the parent view. */ - public void notifyViewClicked(View view) { - final AutofillId id = view.getAutofillId(); + public void notifyViewClicked(@NonNull View view, int virtualId) { + notifyViewClicked(getAutofillId(view, virtualId)); + } + private void notifyViewClicked(AutofillId id) { + if (!hasAutofillFeature()) { + return; + } if (sVerbose) Log.v(TAG, "notifyViewClicked(): id=" + id + ", trigger=" + mSaveTriggerId); synchronized (mLock) { + if (!mEnabled || !isActiveLocked()) { + return; + } if (mSaveTriggerId != null && mSaveTriggerId.equals(id)) { if (sDebug) Log.d(TAG, "triggering commit by click of " + id); commitLocked(); |
