diff --git a/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java index c4d06488f7b5b..aa0840ca074df 100644 --- a/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java @@ -728,6 +728,14 @@ final class AutoFillManagerServiceImpl { .sendToTarget(); } + // AutoFillUiCallback + @Override + public void cancelSave() { + mHandlerCaller.getHandler().post(() -> { + removeSelf(); + }); + } + // AutoFillUiCallback @Override public void onEvent(AutoFillId id, int event) { diff --git a/services/autofill/java/com/android/server/autofill/RemoteFillService.java b/services/autofill/java/com/android/server/autofill/RemoteFillService.java index 7058248b28024..d9f97213d0b47 100644 --- a/services/autofill/java/com/android/server/autofill/RemoteFillService.java +++ b/services/autofill/java/com/android/server/autofill/RemoteFillService.java @@ -182,11 +182,8 @@ final class RemoteFillService implements DeathRecipient { if (mDestroyed || mCompleted) { return; } - if (pendingRequest.isFinal()) { - mCompleted = true; - } if (!isBound()) { - if (mPendingRequest != null) { + if (mPendingRequest != null && mPendingRequest != pendingRequest) { mPendingRequest.cancel(); } mPendingRequest = pendingRequest; @@ -196,6 +193,9 @@ final class RemoteFillService implements DeathRecipient { Slog.d(LOG_TAG, "[user: " + mUserId + "] handlePendingRequest()"); } pendingRequest.run(); + if (pendingRequest.isFinal()) { + mCompleted = true; + } } } diff --git a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java index c86a8828d0b10..599bbfe55c327 100644 --- a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java +++ b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java @@ -65,6 +65,7 @@ public final class AutoFillUI { void authenticate(@NonNull IntentSender intent); void fill(@NonNull Dataset dataset); void save(); + void cancelSave(); void onEvent(AutoFillId id, int event); } @@ -220,6 +221,9 @@ public final class AutoFillUI { + listener, e); } } + if (mCallback != null) { + mCallback.cancelSave(); + } } }, mSaveTimeoutMs); });