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;