Fix "null" toast when FillCallback.onFailure(null) called.
Root cause The error message is set by AutofillService, AutofillService calls FillCallback.onFailure(null) back to the platform. Becausea081250uses String.valueOf(message), this method will make a null object become to a "null" string. This may cause the Autofill session to think we should show message because of a non-null message. And if the AutofillService target SDK is lower than 29, we don't ignore show message, then users will see a "null" toast. Solution Instead of passing the message parameter to String.valueOf() directly , we check the message first, only passing to String.valueOf() if the message is not null. And we pass an empty string if the message parameter is null. Bug: 159888723 Test: Use a test AutofillService which target SDK is lower than 29, make sure no null toast is shown Test: atest CtsAutoFillServiceTestCases Change-Id: Id7ff581b3a7f35cf97b4f3405a40bfa1a420823e (cherry picked from commit3c7ac7de46)
This commit is contained in:
@@ -161,8 +161,9 @@ final class RemoteFillService extends ServiceConnector.Impl<IAutoFillService> {
|
||||
|
||||
@Override
|
||||
public void onFailure(int requestId, CharSequence message) {
|
||||
String errorMessage = message == null ? "" : String.valueOf(message);
|
||||
fillRequest.completeExceptionally(
|
||||
new RuntimeException(String.valueOf(message)));
|
||||
new RuntimeException(errorMessage));
|
||||
}
|
||||
});
|
||||
return fillRequest;
|
||||
|
||||
Reference in New Issue
Block a user