Merge "Only clear inline suggestions when IMS.onInputFinish is called" into rvc-dev am: c06c034ac7 am: 7277f083f4 am: 0ab9ac2818 am: 1639edd6d4

Change-Id: I217d96bb33a8b8b2dfd8a55f63227bbcfd957b49
This commit is contained in:
Feng Cao
2020-05-15 16:04:33 +00:00
committed by Automerger Merge Worker
3 changed files with 11 additions and 9 deletions

View File

@@ -212,12 +212,12 @@ final class AutofillInlineSuggestionsRequestSession {
if (mDestroyed || mResponseCallback == null) {
return;
}
if (!mImeInputViewStarted && mPreviousResponseIsNotEmpty) {
// 1. if previous response is not empty, and IME just become invisible, then send
// empty response to make sure existing responses don't stick around on the IME.
if (!mImeInputStarted && mPreviousResponseIsNotEmpty) {
// 1. if previous response is not empty, and IME is just disconnected from the view,
// then send empty response to make sure existing responses don't stick around.
// Although the inline suggestions should disappear when IME hides which removes them
// from the view hierarchy, but we still send an empty response to be extra safe.
// from the view hierarchy, but we still send an empty response to indicate that the
// previous suggestions are invalid now.
if (sVerbose) Slog.v(TAG, "Send empty inline response");
updateResponseToImeUncheckLocked(new InlineSuggestionsResponse(Collections.EMPTY_LIST));
mPreviousResponseIsNotEmpty = false;

View File

@@ -2581,7 +2581,6 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
if (sVerbose) Slog.v(TAG, "Exiting view " + id);
mUi.hideFillUi(this);
hideAugmentedAutofillLocked(viewState);
mInlineSessionController.hideInlineSuggestionsUiLocked(mCurrentViewId);
mCurrentViewId = null;
}
break;
@@ -2655,6 +2654,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
if (sVerbose) {
Slog.v(TAG, "ignoring autofilled change on id " + id);
}
// TODO(b/156099633): remove this once framework gets out of business of resending
// inline suggestions when IME visibility changes.
mInlineSessionController.hideInlineSuggestionsUiLocked(viewState.id);
viewState.resetState(ViewState.STATE_CHANGED);
return;
} else if ((viewState.id.equals(this.mCurrentViewId))
@@ -3348,7 +3350,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
if (generateEvent) {
mService.logDatasetSelected(dataset.getId(), id, mClientState);
}
if (mCurrentViewId != null) {
mInlineSessionController.hideInlineSuggestionsUiLocked(mCurrentViewId);
}
autoFillApp(dataset);
return;
}

View File

@@ -57,7 +57,6 @@ final class InlineSuggestionFactory {
@NonNull AutoFillUI.AutoFillUiCallback client, @NonNull Runnable onErrorCallback,
@Nullable RemoteInlineSuggestionRenderService remoteRenderService) {
final BiConsumer<Dataset, Integer> onClickFactory = (dataset, datasetIndex) -> {
client.requestHideFillUi(autofillId);
client.authenticate(response.getRequestId(),
datasetIndex, response.getAuthentication(), response.getClientState(),
/* authenticateInline= */ true);
@@ -85,7 +84,6 @@ final class InlineSuggestionFactory {
final Consumer<IntentSender> intentSenderConsumer = (intentSender) ->
client.startIntentSender(intentSender, new Intent());
final BiConsumer<Dataset, Integer> onClickFactory = (dataset, datasetIndex) -> {
client.requestHideFillUi(autofillId);
client.fill(requestId, datasetIndex, dataset);
};