summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Samuel Tan <samueltan@google.com> 2015-12-17 09:53:44 -0800
committer android-build-merger <android-build-merger@google.com> 2015-12-17 09:53:44 -0800
commit76d3072dd691666f451e8101d1053f66bd800e33 (patch)
treea4e2f0ad77e6ce23bfe465d6c4cad33caa4e204a
parent19091a7fad36a4a9b4a66bdc20d536f1354fdd52 (diff)
parentd3decff052c4f7471a21fbbb116b32586181b391 (diff)
Merge "Fix PersistableBundle handling in Parcel.writeValue" am: d12959193c
am: d3decff052 * commit 'd3decff052c4f7471a21fbbb116b32586181b391': Fix PersistableBundle handling in Parcel.writeValue
-rw-r--r--core/java/android/os/Parcel.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java
index 9b68f90aa28b..290202194732 100644
--- a/core/java/android/os/Parcel.java
+++ b/core/java/android/os/Parcel.java
@@ -1370,7 +1370,13 @@ public final class Parcel {
// Must be before Parcelable
writeInt(VAL_BUNDLE);
writeBundle((Bundle) v);
+ } else if (v instanceof PersistableBundle) {
+ writeInt(VAL_PERSISTABLEBUNDLE);
+ writePersistableBundle((PersistableBundle) v);
} else if (v instanceof Parcelable) {
+ // IMPOTANT: cases for classes that implement Parcelable must
+ // come before the Parcelable case, so that their specific VAL_*
+ // types will be written.
writeInt(VAL_PARCELABLE);
writeParcelable((Parcelable) v, 0);
} else if (v instanceof Short) {
@@ -1426,9 +1432,6 @@ public final class Parcel {
} else if (v instanceof Byte) {
writeInt(VAL_BYTE);
writeInt((Byte) v);
- } else if (v instanceof PersistableBundle) {
- writeInt(VAL_PERSISTABLEBUNDLE);
- writePersistableBundle((PersistableBundle) v);
} else if (v instanceof Size) {
writeInt(VAL_SIZE);
writeSize((Size) v);