Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3692d924 authored by Fyodor Kupolov's avatar Fyodor Kupolov Committed by android-build-team Robot
Browse files

Use concrete CREATOR instance for parceling lists

Replaced readTypedArrayList/writeTypedArrayList with
writeTypedList/createTypedArrayList(CREATOR)

Bug: 71508348
Test: CtsAutoFillServiceTestCases pass
Merged-In: I2a8321023b40cc74b7026eb0fb32a9cc5f5543a9
Change-Id: Id17d02e40a4ae567bf2d74d2ea8ba4d8a943bdb7
(cherry picked from commit 4921986d)
parent 0f1d7d1a
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -1340,6 +1340,13 @@ public final class Parcel {
     * @see Parcelable
     */
    public final <T extends Parcelable> void writeTypedList(List<T> val) {
        writeTypedList(val, 0);
    }

    /**
     * @hide
     */
    public <T extends Parcelable> void writeTypedList(List<T> val, int parcelableFlags) {
        if (val == null) {
            writeInt(-1);
            return;
@@ -1348,13 +1355,7 @@ public final class Parcel {
        int i=0;
        writeInt(N);
        while (i < N) {
            T item = val.get(i);
            if (item != null) {
                writeInt(1);
                item.writeToParcel(this, 0);
            } else {
                writeInt(0);
            }
            writeTypedObject(val.get(i), parcelableFlags);
            i++;
        }
    }
+5 −4
Original line number Diff line number Diff line
@@ -316,8 +316,8 @@ public final class Dataset implements Parcelable {
    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeParcelable(mPresentation, flags);
        parcel.writeTypedArrayList(mFieldIds, flags);
        parcel.writeTypedArrayList(mFieldValues, flags);
        parcel.writeTypedList(mFieldIds, flags);
        parcel.writeTypedList(mFieldValues, flags);
        parcel.writeParcelableList(mFieldPresentations, flags);
        parcel.writeParcelable(mAuthentication, flags);
        parcel.writeString(mId);
@@ -333,8 +333,9 @@ public final class Dataset implements Parcelable {
            final Builder builder = (presentation == null)
                    ? new Builder()
                    : new Builder(presentation);
            final ArrayList<AutofillId> ids = parcel.readTypedArrayList(null);
            final ArrayList<AutofillValue> values = parcel.readTypedArrayList(null);
            final ArrayList<AutofillId> ids = parcel.createTypedArrayList(AutofillId.CREATOR);
            final ArrayList<AutofillValue> values =
                    parcel.createTypedArrayList(AutofillValue.CREATOR);
            final ArrayList<RemoteViews> presentations = new ArrayList<>();
            parcel.readParcelableList(presentations, null);
            final int idCount = (ids != null) ? ids.size() : 0;
+4 −4
Original line number Diff line number Diff line
@@ -19,9 +19,9 @@ package android.service.autofill;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Parcel;
import android.os.Parcelable;

import com.android.internal.util.Preconditions;

import java.util.ArrayList;
@@ -45,7 +45,7 @@ public final class SaveRequest implements Parcelable {
    }

    private SaveRequest(@NonNull Parcel parcel) {
        this(parcel.readTypedArrayList(null), parcel.readBundle());
        this(parcel.createTypedArrayList(FillContext.CREATOR), parcel.readBundle());
    }

    /**
@@ -57,7 +57,7 @@ public final class SaveRequest implements Parcelable {

    /**
     * Gets the extra client state returned from the last {@link
     * AutofillService#onFillRequest(FillRequest, CancellationSignal, FillCallback)}
     * AutofillService#onFillRequest(FillRequest, android.os.CancellationSignal, FillCallback)}
     * fill request}.
     *
     * @return The client state.
@@ -73,7 +73,7 @@ public final class SaveRequest implements Parcelable {

    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeTypedArrayList(mFillContexts, flags);
        parcel.writeTypedList(mFillContexts, flags);
        parcel.writeBundle(mClientState);
    }