diff --git a/core/java/android/service/autofill/CustomDescription.java b/core/java/android/service/autofill/CustomDescription.java index 3da0b5e844998..4f06bd759e479 100644 --- a/core/java/android/service/autofill/CustomDescription.java +++ b/core/java/android/service/autofill/CustomDescription.java @@ -22,11 +22,13 @@ import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; -import android.util.SparseArray; +import android.util.Pair; import android.widget.RemoteViews; import com.android.internal.util.Preconditions; +import java.util.ArrayList; + /** * Defines a custom description for the Save UI affordance. * @@ -65,14 +67,17 @@ import com.android.internal.util.Preconditions; * new ImageTransformation.Builder(ccNumberId) * .addOption(Pattern.compile(""^4815.*$"), R.drawable.ic_credit_card_logo1) * .addOption(Pattern.compile(""^1623.*$"), R.drawable.ic_credit_card_logo2) - * .addOption(Pattern.compile(""^42.*$"), R.drawable.ic_credit_card_logo3); + * .addOption(Pattern.compile(""^42.*$"), R.drawable.ic_credit_card_logo3) + * .build(); * // Masked credit card number (as .....LAST_4_DIGITS) - * builder.addChild(R.id.templateCcNumber, new CharSequenceTransformation.Builder() - * .addField(ccNumberId, Pattern.compile(""^.*(\\d\\d\\d\\d)$"), "...$1") + * builder.addChild(R.id.templateCcNumber, new CharSequenceTransformation + * .Builder(ccNumberId, Pattern.compile(""^.*(\\d\\d\\d\\d)$"), "...$1") + * .build(); * // Expiration date as MM / YYYY: - * builder.addChild(R.id.templateExpDate, new CharSequenceTransformation.Builder() - * .addField(ccExpMonthId, Pattern.compile(""^(\\d\\d)$"), "Exp: $1") - * .addField(ccExpYearId, Pattern.compile(""^(\\d\\d)$"), "/$1"); + * builder.addChild(R.id.templateExpDate, new CharSequenceTransformation + * .Builder(ccExpMonthId, Pattern.compile(""^(\\d\\d)$"), "Exp: $1") + * .addField(ccExpYearId, Pattern.compile(""^(\\d\\d)$"), "/$1") + * .build(); * * *
See {@link ImageTransformation}, {@link CharSequenceTransformation} for more info about these
@@ -83,7 +88,7 @@ public final class CustomDescription implements Parcelable {
private static final String TAG = "CustomDescription";
private final RemoteViews mPresentation;
- private final SparseArray When multiple transformations are added for the same child view, they will be applied
+ * in the same order as added.
+ *
* @param id view id of the children view.
* @param transformation an implementation provided by the Android System.
* @return this builder.
@@ -144,9 +153,9 @@ public final class CustomDescription implements Parcelable {
Preconditions.checkArgument((transformation instanceof InternalTransformation),
"not provided by Android System: " + transformation);
if (mTransformations == null) {
- mTransformations = new SparseArray<>();
+ mTransformations = new ArrayList<>();
}
- mTransformations.put(id, (InternalTransformation) transformation);
+ mTransformations.add(new Pair<>(id, (InternalTransformation) transformation));
return this;
}
@@ -189,8 +198,9 @@ public final class CustomDescription implements Parcelable {
final int[] ids = new int[size];
final InternalTransformation[] values = new InternalTransformation[size];
for (int i = 0; i < size; i++) {
- ids[i] = mTransformations.keyAt(i);
- values[i] = mTransformations.valueAt(i);
+ final Pair