From e3d8a1a2993123a1fba16d6c1eca86903afe5063 Mon Sep 17 00:00:00 2001 From: Bernardo Rufino Date: Mon, 6 Dec 2021 13:25:56 +0000 Subject: [PATCH] Deprecate unsafe Parcel.readParcelableArray(ClassLoader) Forgot this one. Test: Builds Bug: 195622897 Change-Id: Ia258f77fd2e706d2071c853c20d6ec3baa170a1f --- core/api/current.txt | 2 +- core/java/android/os/Parcel.java | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index 1f31faec7402e..f633d11e67348 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -31480,7 +31480,7 @@ package android.os { method public void readMap(@NonNull java.util.Map, @Nullable ClassLoader, @NonNull Class, @NonNull Class); method @Deprecated @Nullable public T readParcelable(@Nullable ClassLoader); method @Nullable public T readParcelable(@Nullable ClassLoader, @NonNull Class); - method @Nullable public android.os.Parcelable[] readParcelableArray(@Nullable ClassLoader); + method @Deprecated @Nullable public android.os.Parcelable[] readParcelableArray(@Nullable ClassLoader); method @Nullable public T[] readParcelableArray(@Nullable ClassLoader, @NonNull Class); method @Deprecated @Nullable public android.os.Parcelable.Creator readParcelableCreator(@Nullable ClassLoader); method @Nullable public android.os.Parcelable.Creator readParcelableCreator(@Nullable ClassLoader, @NonNull Class); diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java index 7bdb6b90c07b8..1898a308cdd99 100644 --- a/core/java/android/os/Parcel.java +++ b/core/java/android/os/Parcel.java @@ -4343,9 +4343,16 @@ public final class Parcel { * The given class loader will be used to load any enclosed * Parcelables. * @return the Parcelable array, or null if the array is null + * + * @deprecated Use the type-safer version {@link #readParcelableArray(ClassLoader, Class)} + * starting from Android {@link Build.VERSION_CODES#TIRAMISU}. Also consider changing the + * format to use {@link #createTypedArray(Parcelable.Creator)} if possible (eg. if the + * items' class is final) since this is also more performant. Note that changing to the + * latter also requires changing the writes. */ + @Deprecated @Nullable - public final Parcelable[] readParcelableArray(@Nullable ClassLoader loader) { + public Parcelable[] readParcelableArray(@Nullable ClassLoader loader) { int N = readInt(); if (N < 0) { return null;