Merge "Fix a bug to not complete the augmented autofill request when fill window is shown" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-06-17 19:49:13 +00:00
committed by Android (Google) Code Review
4 changed files with 20 additions and 15 deletions

View File

@@ -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);
}

View File

@@ -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).

View File

@@ -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();
}

View File

@@ -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