summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorSamuel Tan <samueltan@google.com>2015-12-17 00:35:43 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-12-17 00:35:43 +0000
commitd12959193c60254b6b03b2a60a9c6e598e9da2e5 (patch)
treeac423f44b13804aaa3a2f1aa8bc34add6b67d28e /core/java
parent477fa220b1766a3822171fa514983198e09daabb (diff)
parentceafe5ed8a9968752c9454ae67428caf8c6719e6 (diff)
Merge "Fix PersistableBundle handling in Parcel.writeValue"
Diffstat (limited to 'core/java')
-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);