summaryrefslogtreecommitdiff
path: root/core/java/android/util/LongSparseLongArray.java
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2020-09-01 20:04:08 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-09-01 20:04:08 +0000
commitff2ffe48acb657c959cae265529a7290013c7db8 (patch)
tree6d05301b67632d384a392190306ecb088c896cb2 /core/java/android/util/LongSparseLongArray.java
parentb57f32e68ab2f57fd4ade254d524a4efce9ad30f (diff)
parent628590d7ec80e10a3fc24b1c18a1afb55cca10a8 (diff)
Merge "Merge Android R (rvc-dev-plus-aosp-without-vendor@6692709)" into stage-aosp-master
Diffstat (limited to 'core/java/android/util/LongSparseLongArray.java')
-rw-r--r--core/java/android/util/LongSparseLongArray.java47
1 files changed, 47 insertions, 0 deletions
diff --git a/core/java/android/util/LongSparseLongArray.java b/core/java/android/util/LongSparseLongArray.java
index 75f41350fa55..c05dd9de2f17 100644
--- a/core/java/android/util/LongSparseLongArray.java
+++ b/core/java/android/util/LongSparseLongArray.java
@@ -17,9 +17,11 @@
package android.util;
import android.compat.annotation.UnsupportedAppUsage;
+import android.os.Parcel;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.GrowingArrayUtils;
+import com.android.internal.util.Preconditions;
import libcore.util.EmptyArray;
@@ -283,4 +285,49 @@ public class LongSparseLongArray implements Cloneable {
buffer.append('}');
return buffer.toString();
}
+
+ /**
+ * @hide
+ */
+ public static class Parcelling implements
+ com.android.internal.util.Parcelling<LongSparseLongArray> {
+ @Override
+ public void parcel(LongSparseLongArray array, Parcel dest, int parcelFlags) {
+ if (array == null) {
+ dest.writeInt(-1);
+ return;
+ }
+
+ dest.writeInt(array.mSize);
+ dest.writeLongArray(array.mKeys);
+ dest.writeLongArray(array.mValues);
+ }
+
+ @Override
+ public LongSparseLongArray unparcel(Parcel source) {
+ int size = source.readInt();
+ if (size == -1) {
+ return null;
+ }
+
+ LongSparseLongArray array = new LongSparseLongArray(0);
+
+ array.mSize = size;
+ array.mKeys = source.createLongArray();
+ array.mValues = source.createLongArray();
+
+ // Make sure array is sane
+ Preconditions.checkArgument(array.mKeys.length >= size);
+ Preconditions.checkArgument(array.mValues.length >= size);
+
+ if (size > 0) {
+ long last = array.mKeys[0];
+ for (int i = 1; i < size; i++) {
+ Preconditions.checkArgument(last < array.mKeys[i]);
+ }
+ }
+
+ return array;
+ }
+ }
}