diff --git a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java index 87e369f20d58c..66c3e19661340 100644 --- a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java +++ b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java @@ -228,7 +228,7 @@ public abstract class AugmentedAutofillService extends Service { } else { // TODO(b/123099468): figure out if it's ok to reuse the proxy; add logging if (sDebug) Log.d(TAG, "Reusing proxy for session " + sessionId); - proxy.update(focusedId, focusedValue, callback); + proxy.update(focusedId, focusedValue, callback, cancellationSignal); } try { @@ -252,6 +252,15 @@ public abstract class AugmentedAutofillService extends Service { Log.w(TAG, "No proxy for session " + sessionId); return; } + if (proxy.mCallback != null) { + try { + if (!proxy.mCallback.isCompleted()) { + proxy.mCallback.cancel(); + } + } catch (Exception e) { + Log.e(TAG, "failed to check current pending request status", e); + } + } proxy.destroy(); } mAutofillProxies.clear(); @@ -442,7 +451,7 @@ public abstract class AugmentedAutofillService extends Service { } private void update(@NonNull AutofillId focusedId, @NonNull AutofillValue focusedValue, - @NonNull IFillCallback callback) { + @NonNull IFillCallback callback, @NonNull CancellationSignal cancellationSignal) { synchronized (mLock) { mFocusedId = focusedId; mFocusedValue = focusedValue; @@ -457,6 +466,7 @@ public abstract class AugmentedAutofillService extends Service { Log.d(TAG, "mCallback is updated."); } mCallback = callback; + mCancellationSignal = cancellationSignal; } }