Merge "CHAR_SEQUENCE_CREATOR cannot handle null string"
This commit is contained in:
@@ -627,10 +627,16 @@ public class TextUtils {
|
||||
public CharSequence createFromParcel(Parcel p) {
|
||||
int kind = p.readInt();
|
||||
|
||||
if (kind == 1)
|
||||
return p.readString();
|
||||
String string = p.readString();
|
||||
if (string == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
SpannableString sp = new SpannableString(p.readString());
|
||||
if (kind == 1) {
|
||||
return string;
|
||||
}
|
||||
|
||||
SpannableString sp = new SpannableString(string);
|
||||
|
||||
while (true) {
|
||||
kind = p.readInt();
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package android.text;
|
||||
|
||||
import android.graphics.Paint;
|
||||
import android.os.Parcel;
|
||||
import android.test.suitebuilder.annotation.LargeTest;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.text.Spannable;
|
||||
@@ -352,6 +353,51 @@ public class TextUtilsTest extends TestCase {
|
||||
assertFalse(TextUtils.delimitedStringContains("network,mock,gpsx", ',', "gps"));
|
||||
}
|
||||
|
||||
@SmallTest
|
||||
public void testCharSequenceCreator() {
|
||||
Parcel p = Parcel.obtain();
|
||||
TextUtils.writeToParcel(null, p, 0);
|
||||
CharSequence text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
|
||||
assertNull("null CharSequence should generate null from parcel", text);
|
||||
p = Parcel.obtain();
|
||||
TextUtils.writeToParcel("test", p, 0);
|
||||
text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
|
||||
assertEquals("conversion to/from parcel failed", "test", text);
|
||||
}
|
||||
|
||||
@SmallTest
|
||||
public void testCharSequenceCreatorNull() {
|
||||
Parcel p;
|
||||
CharSequence text;
|
||||
p = Parcel.obtain();
|
||||
TextUtils.writeToParcel(null, p, 0);
|
||||
p.setDataPosition(0);
|
||||
text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
|
||||
assertNull("null CharSequence should generate null from parcel", text);
|
||||
}
|
||||
|
||||
@SmallTest
|
||||
public void testCharSequenceCreatorSpannable() {
|
||||
Parcel p;
|
||||
CharSequence text;
|
||||
p = Parcel.obtain();
|
||||
TextUtils.writeToParcel(new SpannableString("test"), p, 0);
|
||||
p.setDataPosition(0);
|
||||
text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
|
||||
assertEquals("conversion to/from parcel failed", "test", text.toString());
|
||||
}
|
||||
|
||||
@SmallTest
|
||||
public void testCharSequenceCreatorString() {
|
||||
Parcel p;
|
||||
CharSequence text;
|
||||
p = Parcel.obtain();
|
||||
TextUtils.writeToParcel("test", p, 0);
|
||||
p.setDataPosition(0);
|
||||
text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
|
||||
assertEquals("conversion to/from parcel failed", "test", text.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* CharSequence wrapper for testing the cases where text is copied into
|
||||
* a char array instead of working from a String or a Spanned.
|
||||
|
||||
Reference in New Issue
Block a user