From fe35e69d964dbd09cc8e6390e41ca9347baea108 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Tue, 21 Feb 2017 13:44:50 -0800 Subject: [PATCH] Use ArrayList instead of ArraySet for FillResponse.getDatasets()... ...otherwise it might not preserve the order. Test: manual verification BUG: 35348724 Change-Id: Ib19d364253ea4f0cbbeca8a73b08800482e74820 --- .../android/service/autofill/FillResponse.java | 16 +++++++++------- .../android/server/autofill/DatasetPicker.java | 3 +-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/core/java/android/service/autofill/FillResponse.java b/core/java/android/service/autofill/FillResponse.java index bac43915281a9..86688d317a8fc 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.AutoFillId; 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 @@ import android.widget.RemoteViews; */ public final class FillResponse implements Parcelable { - private final ArraySet mDatasets; + private final ArrayList mDatasets; private final ArraySet mSavableIds; private final Bundle mExtras; private final RemoteViews mPresentation; @@ -183,7 +185,7 @@ public final class FillResponse implements Parcelable { } /** @hide */ - public @Nullable ArraySet getDatasets() { + public @Nullable ArrayList getDatasets() { return mDatasets; } @@ -207,7 +209,7 @@ public final class FillResponse implements Parcelable { * one dataset or set an authentication intent with a presentation view. */ public static final class Builder { - private ArraySet mDatasets; + private ArrayList mDatasets; private ArraySet mSavableIds; private Bundle mExtras; private RemoteViews mPresentation; @@ -284,7 +286,7 @@ public final class FillResponse implements Parcelable { return this; } if (mDatasets == null) { - mDatasets = new ArraySet<>(); + mDatasets = new ArrayList<>(); } if (!mDatasets.add(dataset)) { return this; @@ -398,7 +400,7 @@ public final class FillResponse implements Parcelable { @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 @@ public final class FillResponse implements Parcelable { // the system obeys the contract of the builder to avoid attacks // using specially crafted parcels. final Builder builder = new Builder(); - final ArraySet datasets = parcel.readTypedArraySet(null); + final ArrayList 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 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 3190f600e649d..e25f2ce801f1f 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.FrameLayout; 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 @@ final class DatasetPicker extends FrameLayout implements OnItemClickListener { private final ArrayAdapter mAdapter; - DatasetPicker(Context context, ArraySet datasets, AutoFillId filteredViewId, + DatasetPicker(Context context, ArrayList datasets, AutoFillId filteredViewId, Listener listener) { super(context); mListener = listener;