summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/content/pm/BaseParceledListSlice.java2
-rw-r--r--core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java31
2 files changed, 25 insertions, 8 deletions
diff --git a/core/java/android/content/pm/BaseParceledListSlice.java b/core/java/android/content/pm/BaseParceledListSlice.java
index aaa5f19c3fca..5877a09b7759 100644
--- a/core/java/android/content/pm/BaseParceledListSlice.java
+++ b/core/java/android/content/pm/BaseParceledListSlice.java
@@ -102,7 +102,7 @@ abstract class BaseParceledListSlice<T> implements Parcelable {
return;
}
while (i < N && reply.readInt() != 0) {
- final T parcelable = reply.readCreator(creator, loader);
+ final T parcelable = readCreator(creator, reply, loader);
verifySameType(listElementClass, parcelable.getClass());
mList.add(parcelable);
diff --git a/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java b/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java
index 5dd3c2ce6b5d..a9d19b4b295c 100644
--- a/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java
+++ b/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java
@@ -2,9 +2,11 @@ package android.content.pm;
import android.os.Parcel;
import android.os.Parcelable;
+
import junit.framework.TestCase;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
public class ParceledListSliceTest extends TestCase {
@@ -91,15 +93,10 @@ public class ParceledListSliceTest extends TestCase {
}
}
- public void testStringList() throws Exception {
- final int objectCount = 400;
- List<String> list = new ArrayList<String>();
- for (long i = 0; i < objectCount; i++) {
- list.add(Long.toString(i * (6 - i)));
- }
-
+ private void sendParcelStringList(List<String> list) {
StringParceledListSlice slice;
Parcel parcel = Parcel.obtain();
+
try {
parcel.writeParcelable(new StringParceledListSlice(list), 0);
parcel.setDataPosition(0);
@@ -113,6 +110,26 @@ public class ParceledListSliceTest extends TestCase {
assertEquals(list, slice.getList());
}
+ public void testStringList() throws Exception {
+ final int objectCount = 400;
+ List<String> list = new ArrayList<String>();
+ for (long i = 0; i < objectCount; i++) {
+ list.add(Long.toString(i * (6 - i)));
+ }
+
+ sendParcelStringList(list);
+ }
+
+ public void testLargeStringList() throws Exception {
+ final int thresholdBytes = 256 * 1024;
+ final String value = Long.toString(Long.MAX_VALUE);
+ final int objectCount = 2 * thresholdBytes / value.length();
+ final List<String> list = Collections.nCopies(objectCount, value);
+
+ sendParcelStringList(list);
+ }
+
+
/**
* Test that only homogeneous elements may be unparceled.
*/