From 4a5d4e513a75085349a1431ec7e554dfd965c4e4 Mon Sep 17 00:00:00 2001 From: TYM Tsai Date: Wed, 7 Dec 2022 04:25:33 +0800 Subject: [PATCH] Add API for creating AutofillId with virtual child id App needs to create AutofillId for virtual views for client suggestion. That requires new API otherwise client can not have any id with virtual view id when request a response from client. Bug: 261024705 Test: atest android.autofillservice.cts.unittests.AutofillIdTest Change-Id: Ic78a548b414a47239c222192d2d29063341d6c35 --- core/api/current.txt | 1 + .../android/view/autofill/AutofillId.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/core/api/current.txt b/core/api/current.txt index dd8b3d4ea5526..a19b78db2823f 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -53203,6 +53203,7 @@ package android.view.animation { package android.view.autofill { public final class AutofillId implements android.os.Parcelable { + method @NonNull public static android.view.autofill.AutofillId create(@NonNull android.view.View, int); method public int describeContents(); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; diff --git a/core/java/android/view/autofill/AutofillId.java b/core/java/android/view/autofill/AutofillId.java index 313dc431a5e5f..15ba1a16cbfae 100644 --- a/core/java/android/view/autofill/AutofillId.java +++ b/core/java/android/view/autofill/AutofillId.java @@ -22,6 +22,8 @@ import android.os.Parcel; import android.os.Parcelable; import android.view.View; +import java.util.Objects; + /** * A unique identifier for an autofill node inside an {@link android.app.Activity}. */ @@ -76,6 +78,23 @@ public final class AutofillId implements Parcelable { @NonNull public static final AutofillId NO_AUTOFILL_ID = new AutofillId(0); + /** + * Creates an {@link AutofillId} with the virtual id. + * + * This method is used by a {@link View} that contains the virtual view hierarchy. Use this + * method to create the {@link AutofillId} for each virtual view. + * + * @param host the view hosting the virtual view hierarchy which is used to show autofill + * suggestions. + * @param virtualId id identifying the virtual view inside the host view. + * @return an {@link AutofillId} for the virtual view + */ + @NonNull + public static AutofillId create(@NonNull View host, int virtualId) { + Objects.requireNonNull(host); + return new AutofillId(host.getAutofillId(), virtualId); + } + /** @hide */ @NonNull @TestApi