Merge "StringParceledListSlice throws exception when the IPC memory threshold is exceeded" into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
afe28cdf7e
@@ -102,7 +102,7 @@ abstract class BaseParceledListSlice<T> implements Parcelable {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
while (i < N && reply.readInt() != 0) {
|
while (i < N && reply.readInt() != 0) {
|
||||||
final T parcelable = reply.readCreator(creator, loader);
|
final T parcelable = readCreator(creator, reply, loader);
|
||||||
verifySameType(listElementClass, parcelable.getClass());
|
verifySameType(listElementClass, parcelable.getClass());
|
||||||
|
|
||||||
mList.add(parcelable);
|
mList.add(parcelable);
|
||||||
|
|||||||
@@ -2,9 +2,11 @@ package android.content.pm;
|
|||||||
|
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ParceledListSliceTest extends TestCase {
|
public class ParceledListSliceTest extends TestCase {
|
||||||
@@ -91,15 +93,10 @@ public class ParceledListSliceTest extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testStringList() throws Exception {
|
private void sendParcelStringList(List<String> list) {
|
||||||
final int objectCount = 400;
|
|
||||||
List<String> list = new ArrayList<String>();
|
|
||||||
for (long i = 0; i < objectCount; i++) {
|
|
||||||
list.add(Long.toString(i * (6 - i)));
|
|
||||||
}
|
|
||||||
|
|
||||||
StringParceledListSlice slice;
|
StringParceledListSlice slice;
|
||||||
Parcel parcel = Parcel.obtain();
|
Parcel parcel = Parcel.obtain();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
parcel.writeParcelable(new StringParceledListSlice(list), 0);
|
parcel.writeParcelable(new StringParceledListSlice(list), 0);
|
||||||
parcel.setDataPosition(0);
|
parcel.setDataPosition(0);
|
||||||
@@ -113,6 +110,26 @@ public class ParceledListSliceTest extends TestCase {
|
|||||||
assertEquals(list, slice.getList());
|
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.
|
* Test that only homogeneous elements may be unparceled.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user