Use ArrayList instead of ArraySet for FillResponse.getDatasets()...
...otherwise it might not preserve the order.
Test: manual verification
BUG: 35348724
Change-Id: Ib19d364253ea4f0cbbeca8a73b08800482e74820
diff --git a/core/java/android/service/autofill/FillResponse.java b/core/java/android/service/autofill/FillResponse.java
index bac4391..86688d3 100644
--- a/core/java/android/service/autofill/FillResponse.java
+++ b/core/java/android/service/autofill/FillResponse.java
@@ -28,6 +28,8 @@
import android.view.autofill.AutoFillManager;
import android.widget.RemoteViews;
+import java.util.ArrayList;
+
/**
* Response for a {@link
* AutoFillService#onFillRequest(android.app.assist.AssistStructure,
@@ -163,7 +165,7 @@
*/
public final class FillResponse implements Parcelable {
- private final ArraySet<Dataset> mDatasets;
+ private final ArrayList<Dataset> mDatasets;
private final ArraySet<AutoFillId> mSavableIds;
private final Bundle mExtras;
private final RemoteViews mPresentation;
@@ -183,7 +185,7 @@
}
/** @hide */
- public @Nullable ArraySet<Dataset> getDatasets() {
+ public @Nullable ArrayList<Dataset> getDatasets() {
return mDatasets;
}
@@ -207,7 +209,7 @@
* one dataset or set an authentication intent with a presentation view.
*/
public static final class Builder {
- private ArraySet<Dataset> mDatasets;
+ private ArrayList<Dataset> mDatasets;
private ArraySet<AutoFillId> mSavableIds;
private Bundle mExtras;
private RemoteViews mPresentation;
@@ -284,7 +286,7 @@
return this;
}
if (mDatasets == null) {
- mDatasets = new ArraySet<>();
+ mDatasets = new ArrayList<>();
}
if (!mDatasets.add(dataset)) {
return this;
@@ -398,7 +400,7 @@
@Override
public void writeToParcel(Parcel parcel, int flags) {
- parcel.writeTypedArraySet(mDatasets, flags);
+ parcel.writeTypedArrayList(mDatasets, flags);
parcel.writeTypedArraySet(mSavableIds, flags);
parcel.writeParcelable(mExtras, flags);
parcel.writeParcelable(mPresentation, flags);
@@ -413,10 +415,10 @@
// the system obeys the contract of the builder to avoid attacks
// using specially crafted parcels.
final Builder builder = new Builder();
- final ArraySet<Dataset> datasets = parcel.readTypedArraySet(null);
+ final ArrayList<Dataset> datasets = parcel.readTypedArrayList(null);
final int datasetCount = (datasets != null) ? datasets.size() : 0;
for (int i = 0; i < datasetCount; i++) {
- builder.addDataset(datasets.valueAt(i));
+ builder.addDataset(datasets.get(i));
}
final ArraySet<AutoFillId> fillIds = parcel.readTypedArraySet(null);
final int fillIdCount = (fillIds != null) ? fillIds.size() : 0;
diff --git a/services/autofill/java/com/android/server/autofill/DatasetPicker.java b/services/autofill/java/com/android/server/autofill/DatasetPicker.java
index 3190f60..e25f2ce 100644
--- a/services/autofill/java/com/android/server/autofill/DatasetPicker.java
+++ b/services/autofill/java/com/android/server/autofill/DatasetPicker.java
@@ -30,7 +30,6 @@
import android.widget.ListView;
import android.widget.RemoteViews;
import com.android.internal.R;
-import com.android.internal.R;
import java.util.ArrayList;
import java.util.List;
@@ -48,7 +47,7 @@
private final ArrayAdapter<ViewItem> mAdapter;
- DatasetPicker(Context context, ArraySet<Dataset> datasets, AutoFillId filteredViewId,
+ DatasetPicker(Context context, ArrayList<Dataset> datasets, AutoFillId filteredViewId,
Listener listener) {
super(context);
mListener = listener;