Merge "Fix a bug where autofill resends inline suggestions in the wrong app" into rvc-dev

This commit is contained in:
Feng Cao
2020-05-21 20:29:38 +00:00
committed by Android (Google) Code Review
3 changed files with 29 additions and 0 deletions

View File

@@ -126,6 +126,22 @@ final class AutofillInlineSessionController {
return hideInlineSuggestionsUiLocked(autofillId);
}
/**
* Clear the locally cached inline fill UI, but don't clear the suggestion in the IME.
*
* <p>This is called to invalid the locally cached inline suggestions so we don't resend them
* to the IME, while assuming that the IME will clean up suggestion on their own when the input
* connection is finished. We don't send an empty response to IME so that it doesn't cause UI
* flicker on the IME side if it arrives before the input view is finished on the IME.
*/
@GuardedBy("mLock")
void resetInlineFillUiLocked() {
mInlineFillUi = null;
if (mSession != null) {
mSession.resetInlineFillUiLocked();
}
}
/**
* Updates the inline fill UI with the filter text. It'll send updated inline suggestions to
* the IME.

View File

@@ -190,6 +190,16 @@ final class AutofillInlineSuggestionsRequestSession {
new InlineSuggestionsRequestCallbackImpl(this));
}
/**
* Clear the locally cached inline fill UI, but don't clear the suggestion in IME.
*
* See also {@link AutofillInlineSessionController#resetInlineFillUiLocked()}
*/
@GuardedBy("mLock")
void resetInlineFillUiLocked() {
mInlineFillUi = null;
}
/**
* Optionally sends inline response to the IME, depending on the current state.
*/

View File

@@ -2581,6 +2581,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
if (sVerbose) Slog.v(TAG, "Exiting view " + id);
mUi.hideFillUi(this);
hideAugmentedAutofillLocked(viewState);
// We don't send an empty response to IME so that it doesn't cause UI flicker
// on the IME side if it arrives before the input view is finished on the IME.
mInlineSessionController.resetInlineFillUiLocked();
mCurrentViewId = null;
}
break;