diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 5079f72bab364..601e00cbd127a 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -5220,6 +5220,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (needEditableForNotification) { sendAfterTextChanged((Editable) text); + } else { + // Always notify AutoFillManager - it will return right away if auto-fill is disabled. + notifyAutoFillManagerAfterTextChanged(); } // SelectionModifierCursorController depends on textCanBeSelected, which depends on text @@ -9112,15 +9115,19 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } // Always notify AutoFillManager - it will return right away if auto-fill is disabled. + notifyAutoFillManagerAfterTextChanged(); + + hideErrorIfUnchanged(); + } + + private void notifyAutoFillManagerAfterTextChanged() { final AutoFillManager afm = mContext.getSystemService(AutoFillManager.class); if (afm != null) { if (DEBUG_AUTOFILL) { - Log.v(LOG_TAG, "sendAfterTextChanged(): notify AFM for text=" + text); + Log.v(LOG_TAG, "sendAfterTextChanged(): notify AFM for text=" + mText); } afm.valueChanged(TextView.this); } - - hideErrorIfUnchanged(); } void updateAfterEdit() { diff --git a/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java index 55e00ed6eea36..ec3d35629bef3 100644 --- a/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java @@ -726,7 +726,7 @@ final class AutoFillManagerServiceImpl { Slog.d(TAG, "finishSessionLocked(): found a change on " + id + ": " + state.mAutoFillValue); } - mUi.showSaveUi(); + getUiForShowing().showSaveUi(); return; } } diff --git a/services/autofill/java/com/android/server/autofill/AutoFillUI.java b/services/autofill/java/com/android/server/autofill/AutoFillUI.java index 78dd247f2a027..ee485dfaf1f7c 100644 --- a/services/autofill/java/com/android/server/autofill/AutoFillUI.java +++ b/services/autofill/java/com/android/server/autofill/AutoFillUI.java @@ -75,9 +75,11 @@ final class AutoFillUI { void setCallbackLocked(AutoFillUiCallback callback, IBinder activityToken) { mHandler.post(() -> { - hideAllUiThread(); - mCallback = callback; - mActivityToken = activityToken; + if (callback != mCallback && activityToken != mActivityToken) { + hideAllUiThread(); + mCallback = callback; + mActivityToken = activityToken; + } }); }