Merge "Set default ClassLoader for Parcel readSerializable API." am: 3760188d11 am: d0ba47450c am: 99c9242a10

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1899432

Change-Id: I1bbfacdabbdc20ac3275c6f9528020b2c2569e80
This commit is contained in:
Hao Ke
2021-12-06 18:07:09 +00:00
committed by Automerger Merge Worker

View File

@@ -4430,6 +4430,9 @@ public final class Parcel {
* @return the Serializable object, or null if the Serializable name * @return the Serializable object, or null if the Serializable name
* wasn't found in the parcel. * wasn't found in the parcel.
* *
* Unlike {@link #readSerializable(ClassLoader, Class)}, it uses the nearest valid class loader
* up the execution stack to instantiate the Serializable object.
*
* @deprecated Use the type-safer version {@link #readSerializable(ClassLoader, Class)} starting * @deprecated Use the type-safer version {@link #readSerializable(ClassLoader, Class)} starting
* from Android {@link Build.VERSION_CODES#TIRAMISU}. * from Android {@link Build.VERSION_CODES#TIRAMISU}.
*/ */
@@ -4440,9 +4443,11 @@ public final class Parcel {
} }
/** /**
* Same as {@link #readSerializable()} but accepts {@code loader} parameter * Same as {@link #readSerializable()} but accepts {@code loader} and {@code clazz} parameters.
* as the primary classLoader for resolving the Serializable class; and {@code clazz} parameter *
* as the required type. * @param loader A ClassLoader from which to instantiate the Serializable object,
* or null for the default class loader.
* @param clazz The type of the object expected.
* *
* @throws BadParcelableException Throws BadParcelableException if the item to be deserialized * @throws BadParcelableException Throws BadParcelableException if the item to be deserialized
* is not an instance of that class or any of its children class or there there was an error * is not an instance of that class or any of its children class or there there was an error
@@ -4452,7 +4457,8 @@ public final class Parcel {
public <T extends Serializable> T readSerializable(@Nullable ClassLoader loader, public <T extends Serializable> T readSerializable(@Nullable ClassLoader loader,
@NonNull Class<T> clazz) { @NonNull Class<T> clazz) {
Objects.requireNonNull(clazz); Objects.requireNonNull(clazz);
return readSerializableInternal(loader, clazz); return readSerializableInternal(
loader == null ? getClass().getClassLoader() : loader, clazz);
} }
/** /**