summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/autofill/java/com/android/server/autofill/AutofillInlineSessionController.java18
-rw-r--r--services/autofill/java/com/android/server/autofill/Session.java3
2 files changed, 20 insertions, 1 deletions
diff --git a/services/autofill/java/com/android/server/autofill/AutofillInlineSessionController.java b/services/autofill/java/com/android/server/autofill/AutofillInlineSessionController.java
index 0ec8654f2a20..398ece4c1836 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillInlineSessionController.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillInlineSessionController.java
@@ -77,8 +77,8 @@ final class AutofillInlineSessionController {
if (mSession != null) {
// Destroy the existing session.
mSession.destroySessionLocked();
- mInlineFillUi = null;
}
+ mInlineFillUi = null;
// TODO(b/151123764): consider reusing the same AutofillInlineSession object for the
// same field.
mSession = new AutofillInlineSuggestionsRequestSession(mInputMethodManagerInternal, mUserId,
@@ -87,6 +87,22 @@ final class AutofillInlineSessionController {
}
/**
+ * Destroys the current session. May send an empty response to IME to clear the suggestions if
+ * the focus didn't change to a different field.
+ *
+ * @param autofillId the currently focused view from the autofill session
+ */
+ @GuardedBy("mLock")
+ void destroyLocked(@NonNull AutofillId autofillId) {
+ if (mSession != null) {
+ mSession.onInlineSuggestionsResponseLocked(InlineFillUi.emptyUi(autofillId));
+ mSession.destroySessionLocked();
+ mSession = null;
+ }
+ mInlineFillUi = null;
+ }
+
+ /**
* Returns the {@link InlineSuggestionsRequest} provided by IME for the last request.
*
* <p> The caller is responsible for making sure Autofill hears back from IME before calling
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index a9a0ab69f633..c7490b3b991c 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -3702,6 +3702,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
unlinkClientVultureLocked();
mUi.destroyAll(mPendingSaveUi, this, true);
mUi.clearCallback(this);
+ if (mCurrentViewId != null) {
+ mInlineSessionController.destroyLocked(mCurrentViewId);
+ }
mDestroyed = true;
// Log metrics