Fixed Cancellation for PendingAutofillRequest.
1. mCallback.cancel() now correctly cancels the pending request. 2. AutofillProxy.update() now updates the CancellationSignal. Fixes: 132459064 Test: atest android.autofillservice.cts.augmented Change-Id: If8b2ab5c0fd8db4cfad440bf47031f6d85c28ae5 (cherry picked from commit 33bbf2aa2f1e5dabce5bd94e9b1c950cdcda1448)
This commit is contained in:
@@ -228,7 +228,7 @@ public abstract class AugmentedAutofillService extends Service {
|
|||||||
} else {
|
} else {
|
||||||
// TODO(b/123099468): figure out if it's ok to reuse the proxy; add logging
|
// 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);
|
if (sDebug) Log.d(TAG, "Reusing proxy for session " + sessionId);
|
||||||
proxy.update(focusedId, focusedValue, callback);
|
proxy.update(focusedId, focusedValue, callback, cancellationSignal);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -252,6 +252,15 @@ public abstract class AugmentedAutofillService extends Service {
|
|||||||
Log.w(TAG, "No proxy for session " + sessionId);
|
Log.w(TAG, "No proxy for session " + sessionId);
|
||||||
return;
|
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();
|
proxy.destroy();
|
||||||
}
|
}
|
||||||
mAutofillProxies.clear();
|
mAutofillProxies.clear();
|
||||||
@@ -442,7 +451,7 @@ public abstract class AugmentedAutofillService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void update(@NonNull AutofillId focusedId, @NonNull AutofillValue focusedValue,
|
private void update(@NonNull AutofillId focusedId, @NonNull AutofillValue focusedValue,
|
||||||
@NonNull IFillCallback callback) {
|
@NonNull IFillCallback callback, @NonNull CancellationSignal cancellationSignal) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
mFocusedId = focusedId;
|
mFocusedId = focusedId;
|
||||||
mFocusedValue = focusedValue;
|
mFocusedValue = focusedValue;
|
||||||
@@ -457,6 +466,7 @@ public abstract class AugmentedAutofillService extends Service {
|
|||||||
Log.d(TAG, "mCallback is updated.");
|
Log.d(TAG, "mCallback is updated.");
|
||||||
}
|
}
|
||||||
mCallback = callback;
|
mCallback = callback;
|
||||||
|
mCancellationSignal = cancellationSignal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user