summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2018-02-16 05:52:06 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-02-16 05:52:06 +0000
commita6a0d1304d9b68df809e2695efab0a729936c2fd (patch)
tree5251d37fd7b993bdab887caf729f225832617fbc /core/java/android
parent75d6bedf0ea297c7ebac90dd1832ad9c324fd931 (diff)
parent67e6209f320f5e1676831e7e6050fc1d6fac60bf (diff)
Merge "New Autofill API: notifyViewClicked()"
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/view/View.java3
-rw-r--r--core/java/android/view/autofill/AutofillId.java1
-rw-r--r--core/java/android/view/autofill/AutofillManager.java29
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();