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

Commit 8672d813 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fixing method asymmetry in Parcel"

parents 4a130e44 0e60f22d
Loading
Loading
Loading
Loading
+14 −177
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++;
        }
    }
@@ -1456,159 +1457,13 @@ public final class Parcel {
            int N = val.length;
            writeInt(N);
            for (int i = 0; i < N; i++) {
                T item = val[i];
                if (item != null) {
                    writeInt(1);
                    item.writeToParcel(this, parcelableFlags);
                } else {
                    writeInt(0);
                }
            }
        } else {
            writeInt(-1);
        }
    }

    /**
     * Write a uniform (all items are null or the same class) array list of
     * parcelables.
     *
     * @param list The list to write.
     *
     * @hide
     */
    public final <T extends Parcelable> void writeTypedArrayList(@Nullable ArrayList<T> list,
            int parcelableFlags) {
        if (list != null) {
            int N = list.size();
            writeInt(N);
            boolean wroteCreator = false;
            for (int i = 0; i < N; i++) {
                T item = list.get(i);
                if (item != null) {
                    writeInt(1);
                    if (!wroteCreator) {
                        writeParcelableCreator(item);
                        wroteCreator = true;
                    }
                    item.writeToParcel(this, parcelableFlags);
                } else {
                    writeInt(0);
                }
            }
        } else {
            writeInt(-1);
        }
    }

    /**
     * Reads a uniform (all items are null or the same class) array list of
     * parcelables.
     *
     * @return The list or null.
     *
     * @hide
     */
    public final @Nullable <T> ArrayList<T> readTypedArrayList(@Nullable ClassLoader loader) {
        int N = readInt();
        if (N <= 0) {
            return null;
        }
        Parcelable.Creator<?> creator = null;
        ArrayList<T> result = new ArrayList<T>(N);
        for (int i = 0; i < N; i++) {
            if (readInt() != 0) {
                if (creator == null) {
                    creator = readParcelableCreator(loader);
                    if (creator == null) {
                        return null;
                    }
                }
                final T parcelable;
                if (creator instanceof Parcelable.ClassLoaderCreator<?>) {
                    Parcelable.ClassLoaderCreator<?> classLoaderCreator =
                            (Parcelable.ClassLoaderCreator<?>) creator;
                    parcelable = (T) classLoaderCreator.createFromParcel(this, loader);
                } else {
                    parcelable = (T) creator.createFromParcel(this);
                }
                result.add(parcelable);
            } else {
                result.add(null);
            }
        }
        return result;
    }

    /**
     * Write a uniform (all items are null or the same class) array set of
     * parcelables.
     *
     * @param set The set to write.
     *
     * @hide
     */
    public final <T extends Parcelable> void writeTypedArraySet(@Nullable ArraySet<T> set,
            int parcelableFlags) {
        if (set != null) {
            int N = set.size();
            writeInt(N);
            boolean wroteCreator = false;
            for (int i = 0; i < N; i++) {
                T item = set.valueAt(i);
                if (item != null) {
                    writeInt(1);
                    if (!wroteCreator) {
                        writeParcelableCreator(item);
                        wroteCreator = true;
                    }
                    item.writeToParcel(this, parcelableFlags);
                } else {
                    writeInt(0);
                }
                writeTypedObject(val[i], parcelableFlags);
            }
        } else {
            writeInt(-1);
        }
    }

    /**
     * Reads a uniform (all items are null or the same class) array set of
     * parcelables.
     *
     * @return The set or null.
     *
     * @hide
     */
    public final @Nullable <T> ArraySet<T> readTypedArraySet(@Nullable ClassLoader loader) {
        int N = readInt();
        if (N <= 0) {
            return null;
        }
        Parcelable.Creator<?> creator = null;
        ArraySet<T> result = new ArraySet<T>(N);
        for (int i = 0; i < N; i++) {
            T parcelable = null;
            if (readInt() != 0) {
                if (creator == null) {
                    creator = readParcelableCreator(loader);
                    if (creator == null) {
                        return null;
                    }
                }
                if (creator instanceof Parcelable.ClassLoaderCreator<?>) {
                    Parcelable.ClassLoaderCreator<?> classLoaderCreator =
                            (Parcelable.ClassLoaderCreator<?>) creator;
                    parcelable = (T) classLoaderCreator.createFromParcel(this, loader);
                } else {
                    parcelable = (T) creator.createFromParcel(this);
                }
            }
            result.append(parcelable);
        }
        return result;
    }

    /**
     * Flatten the Parcelable object into the parcel.
     *
@@ -2458,11 +2313,7 @@ public final class Parcel {
        }
        ArrayList<T> l = new ArrayList<T>(N);
        while (N > 0) {
            if (readInt() != 0) {
                l.add(c.createFromParcel(this));
            } else {
                l.add(null);
            }
            l.add(readTypedObject(c));
            N--;
        }
        return l;
@@ -2485,18 +2336,10 @@ public final class Parcel {
        int N = readInt();
        int i = 0;
        for (; i < M && i < N; i++) {
            if (readInt() != 0) {
                list.set(i, c.createFromParcel(this));
            } else {
                list.set(i, null);
            }
            list.set(i, readTypedObject(c));
        }
        for (; i<N; i++) {
            if (readInt() != 0) {
                list.add(c.createFromParcel(this));
            } else {
                list.add(null);
            }
            list.add(readTypedObject(c));
        }
        for (; i<M; i++) {
            list.remove(N);
@@ -2641,9 +2484,7 @@ public final class Parcel {
        }
        T[] l = c.newArray(N);
        for (int i=0; i<N; i++) {
            if (readInt() != 0) {
                l[i] = c.createFromParcel(this);
            }
            l[i] = readTypedObject(c);
        }
        return l;
    }
@@ -2652,11 +2493,7 @@ public final class Parcel {
        int N = readInt();
        if (N == val.length) {
            for (int i=0; i<N; i++) {
                if (readInt() != 0) {
                    val[i] = c.createFromParcel(this);
                } else {
                    val[i] = null;
                }
                val[i] = readTypedObject(c);
            }
        } else {
            throw new RuntimeException("bad array lengths");
+5 −4
Original line number Diff line number Diff line
@@ -323,8 +323,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);
@@ -340,8 +340,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;
+3 −2
Original line number Diff line number Diff line
@@ -48,7 +48,8 @@ public final class SaveRequest implements Parcelable {
    }

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

    /**
@@ -84,7 +85,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);
        parcel.writeStringList(mDatasetIds);
    }