API to allow Autofill Providers to give detection results to PCC.
Bug: 261106877 Test: atest android.autofillservice.cts.unittests.FillResponseTest Change-Id: I58db4be31ea13327576bb097dd77b916f721b43a
This commit is contained in:
@@ -39547,6 +39547,7 @@ package android.service.autofill {
|
||||
method @Deprecated @NonNull public android.service.autofill.FillResponse.Builder setAuthentication(@NonNull android.view.autofill.AutofillId[], @Nullable android.content.IntentSender, @Nullable android.widget.RemoteViews, @Nullable android.service.autofill.InlinePresentation, @Nullable android.service.autofill.InlinePresentation);
|
||||
method @NonNull public android.service.autofill.FillResponse.Builder setAuthentication(@NonNull android.view.autofill.AutofillId[], @Nullable android.content.IntentSender, @Nullable android.service.autofill.Presentations);
|
||||
method @NonNull public android.service.autofill.FillResponse.Builder setClientState(@Nullable android.os.Bundle);
|
||||
method @NonNull public android.service.autofill.FillResponse.Builder setDetectedFieldClassifications(@NonNull java.util.Set<android.service.assist.classification.FieldClassification>);
|
||||
method @NonNull public android.service.autofill.FillResponse.Builder setDialogHeader(@NonNull android.widget.RemoteViews);
|
||||
method @NonNull public android.service.autofill.FillResponse.Builder setFieldClassificationIds(@NonNull android.view.autofill.AutofillId...);
|
||||
method @NonNull public android.service.autofill.FillResponse.Builder setFillDialogTriggerIds(@NonNull android.view.autofill.AutofillId...);
|
||||
|
||||
@@ -2537,6 +2537,7 @@ package android.service.autofill {
|
||||
}
|
||||
|
||||
public final class FillResponse implements android.os.Parcelable {
|
||||
method @NonNull public java.util.Set<android.service.assist.classification.FieldClassification> getDetectedFieldClassifications();
|
||||
method public int getFlags();
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ import android.content.pm.ParceledListSlice;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.service.assist.classification.FieldClassification;
|
||||
import android.view.autofill.AutofillId;
|
||||
import android.widget.RemoteViews;
|
||||
|
||||
@@ -45,6 +46,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Response for an {@link
|
||||
@@ -113,6 +115,7 @@ public final class FillResponse implements Parcelable {
|
||||
private final @StringRes int mServiceDisplayNameResourceId;
|
||||
private final boolean mShowFillDialogIcon;
|
||||
private final boolean mShowSaveDialogIcon;
|
||||
private final @Nullable FieldClassification[] mDetectedFieldTypes;
|
||||
|
||||
private FillResponse(@NonNull Builder builder) {
|
||||
mDatasets = (builder.mDatasets != null) ? new ParceledListSlice<>(builder.mDatasets) : null;
|
||||
@@ -140,6 +143,14 @@ public final class FillResponse implements Parcelable {
|
||||
mServiceDisplayNameResourceId = builder.mServiceDisplayNameResourceId;
|
||||
mShowFillDialogIcon = builder.mShowFillDialogIcon;
|
||||
mShowSaveDialogIcon = builder.mShowSaveDialogIcon;
|
||||
mDetectedFieldTypes = builder.mDetectedFieldTypes;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@TestApi
|
||||
@NonNull
|
||||
public Set<FieldClassification> getDetectedFieldClassifications() {
|
||||
return Set.of(mDetectedFieldTypes);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@@ -312,6 +323,28 @@ public final class FillResponse implements Parcelable {
|
||||
private int mServiceDisplayNameResourceId;
|
||||
private boolean mShowFillDialogIcon = true;
|
||||
private boolean mShowSaveDialogIcon = true;
|
||||
private FieldClassification[] mDetectedFieldTypes;
|
||||
|
||||
/**
|
||||
* Adds a new {@link FieldClassification} to this response, to
|
||||
* help the platform provide more accurate detection results.
|
||||
*
|
||||
* Call this when a field has been detected with a type.
|
||||
*
|
||||
* Altough similiarly named with {@link setFieldClassificationIds},
|
||||
* it provides a different functionality - setFieldClassificationIds should
|
||||
* be used when a field is only suspected to be Autofillable.
|
||||
* This method should be used when a field is certainly Autofillable
|
||||
* with a certain type.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setDetectedFieldClassifications(
|
||||
@NonNull Set<FieldClassification> fieldInfos) {
|
||||
throwIfDestroyed();
|
||||
throwIfDisableAutofillCalled();
|
||||
mDetectedFieldTypes = fieldInfos.toArray(new FieldClassification[0]);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Triggers a custom UI before autofilling the screen with any data set in this
|
||||
@@ -1122,6 +1155,7 @@ public final class FillResponse implements Parcelable {
|
||||
parcel.writeParcelableArray(mIgnoredIds, flags);
|
||||
parcel.writeLong(mDisableDuration);
|
||||
parcel.writeParcelableArray(mFieldClassificationIds, flags);
|
||||
parcel.writeParcelableArray(mDetectedFieldTypes, flags);
|
||||
parcel.writeInt(mIconResourceId);
|
||||
parcel.writeInt(mServiceDisplayNameResourceId);
|
||||
parcel.writeBoolean(mShowFillDialogIcon);
|
||||
@@ -1192,6 +1226,12 @@ public final class FillResponse implements Parcelable {
|
||||
builder.setFieldClassificationIds(fieldClassifactionIds);
|
||||
}
|
||||
|
||||
final FieldClassification[] detectedFields =
|
||||
parcel.readParcelableArray(null, FieldClassification.class);
|
||||
if (detectedFields != null) {
|
||||
builder.setDetectedFieldClassifications(Set.of(detectedFields));
|
||||
}
|
||||
|
||||
builder.setIconResourceId(parcel.readInt());
|
||||
builder.setServiceDisplayNameResourceId(parcel.readInt());
|
||||
builder.setShowFillDialogIcon(parcel.readBoolean());
|
||||
|
||||
Reference in New Issue
Block a user