Merge "Fix a bug to not complete the augmented autofill request when fill window is shown" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
79f38179de
@@ -564,9 +564,9 @@ public abstract class AugmentedAutofillService extends Service {
|
||||
}
|
||||
|
||||
void reportResult(@Nullable List<Dataset> inlineSuggestionsData,
|
||||
@Nullable Bundle clientState) {
|
||||
@Nullable Bundle clientState, boolean showingFillWindow) {
|
||||
try {
|
||||
mCallback.onSuccess(inlineSuggestionsData, clientState);
|
||||
mCallback.onSuccess(inlineSuggestionsData, clientState, showingFillWindow);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Error calling back with the inline suggestions data: " + e);
|
||||
}
|
||||
|
||||
@@ -56,23 +56,24 @@ public final class FillCallback {
|
||||
|
||||
if (response == null) {
|
||||
mProxy.logEvent(AutofillProxy.REPORT_EVENT_NO_RESPONSE);
|
||||
mProxy.reportResult(/* inlineSuggestionsData */ null, /* clientState */ null);
|
||||
mProxy.reportResult(/* inlineSuggestionsData */ null, /* clientState */
|
||||
null, /* showingFillWindow */ false);
|
||||
return;
|
||||
}
|
||||
|
||||
List<Dataset> inlineSuggestions = response.getInlineSuggestions();
|
||||
Bundle clientState = response.getClientState();
|
||||
// We need to report result regardless of whether inline suggestions are returned or not.
|
||||
mProxy.reportResult(inlineSuggestions, clientState);
|
||||
final List<Dataset> inlineSuggestions = response.getInlineSuggestions();
|
||||
final Bundle clientState = response.getClientState();
|
||||
final FillWindow fillWindow = response.getFillWindow();
|
||||
boolean showingFillWindow = false;
|
||||
if (inlineSuggestions != null && !inlineSuggestions.isEmpty()) {
|
||||
mProxy.logEvent(AutofillProxy.REPORT_EVENT_INLINE_RESPONSE);
|
||||
return;
|
||||
}
|
||||
|
||||
final FillWindow fillWindow = response.getFillWindow();
|
||||
if (fillWindow != null) {
|
||||
} else if (fillWindow != null) {
|
||||
fillWindow.show();
|
||||
showingFillWindow = true;
|
||||
}
|
||||
// We need to report result regardless of whether inline suggestions are returned or not.
|
||||
mProxy.reportResult(inlineSuggestions, clientState, showingFillWindow);
|
||||
|
||||
// TODO(b/123099468): must notify the server so it can update the session state to avoid
|
||||
// showing conflicting UIs (for example, if a new request is made to the main autofill
|
||||
// service and it now wants to show something).
|
||||
|
||||
@@ -30,7 +30,9 @@ import java.util.List;
|
||||
*/
|
||||
interface IFillCallback {
|
||||
void onCancellable(in ICancellationSignal cancellation);
|
||||
void onSuccess(in @nullable List<Dataset> inlineSuggestionsData, in @nullable Bundle clientState);
|
||||
void onSuccess(in @nullable List<Dataset> inlineSuggestionsData,
|
||||
in @nullable Bundle clientState,
|
||||
boolean showingFillWindow);
|
||||
boolean isCompleted();
|
||||
void cancel();
|
||||
}
|
||||
|
||||
@@ -167,14 +167,16 @@ final class RemoteAugmentedAutofillService
|
||||
new IFillCallback.Stub() {
|
||||
@Override
|
||||
public void onSuccess(@Nullable List<Dataset> inlineSuggestionsData,
|
||||
@Nullable Bundle clientState) {
|
||||
@Nullable Bundle clientState, boolean showingFillWindow) {
|
||||
mCallbacks.resetLastResponse();
|
||||
maybeRequestShowInlineSuggestions(sessionId,
|
||||
inlineSuggestionsRequest, inlineSuggestionsData,
|
||||
clientState, focusedId, focusedValue,
|
||||
inlineSuggestionsCallback,
|
||||
client, onErrorCallback, remoteRenderService);
|
||||
requestAutofill.complete(null);
|
||||
if (!showingFillWindow) {
|
||||
requestAutofill.complete(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user