Merge change 20073
* changes: fix CDMA SMS ASCII decode and mapping
This commit is contained in:
@@ -868,13 +868,13 @@ public final class BearerData {
|
||||
inStream.skip(offset);
|
||||
for (int i = 0; i < numFields; i++) {
|
||||
int charCode = inStream.read(7);
|
||||
if ((charCode >= UserData.ASCII_MAP_BASE_INDEX) ||
|
||||
if ((charCode >= UserData.ASCII_MAP_BASE_INDEX) &&
|
||||
(charCode <= UserData.ASCII_MAP_MAX_INDEX)) {
|
||||
strBuf.append(UserData.ASCII_MAP[charCode - UserData.ASCII_MAP_BASE_INDEX]);
|
||||
} else if (charCode == UserData.ASCII_LF_INDEX) {
|
||||
strBuf.append('\r');
|
||||
} else if (charCode == UserData.ASCII_CR_INDEX) {
|
||||
} else if (charCode == UserData.ASCII_NL_INDEX) {
|
||||
strBuf.append('\n');
|
||||
} else if (charCode == UserData.ASCII_CR_INDEX) {
|
||||
strBuf.append('\r');
|
||||
} else {
|
||||
/* For other charCodes, they are unprintable, and so simply use SPACE. */
|
||||
strBuf.append(' ');
|
||||
|
||||
@@ -82,15 +82,15 @@ public class UserData {
|
||||
* Only elements between these indices in the ASCII table are printable.
|
||||
*/
|
||||
public static final int PRINTABLE_ASCII_MIN_INDEX = 0x20;
|
||||
public static final int ASCII_LF_INDEX = 0x0A;
|
||||
public static final int ASCII_NL_INDEX = 0x0A;
|
||||
public static final int ASCII_CR_INDEX = 0x0D;
|
||||
public static final SparseIntArray charToAscii = new SparseIntArray();
|
||||
static {
|
||||
for (int i = 0; i < ASCII_MAP.length; i++) {
|
||||
charToAscii.put(ASCII_MAP[i], PRINTABLE_ASCII_MIN_INDEX + i);
|
||||
}
|
||||
charToAscii.put('\r', ASCII_LF_INDEX);
|
||||
charToAscii.put('\n', ASCII_CR_INDEX);
|
||||
charToAscii.put('\n', ASCII_NL_INDEX);
|
||||
charToAscii.put('\r', ASCII_CR_INDEX);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -145,6 +145,12 @@ public class CdmaSmsTest extends AndroidTestCase {
|
||||
assertEquals(userData.msgEncoding, revBearerData.userData.msgEncoding);
|
||||
assertEquals(userData.payloadStr.length(), revBearerData.userData.numFields);
|
||||
assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
|
||||
userData.payloadStr = "Test \u007f standard \u0000 SMS";
|
||||
revBearerData = BearerData.decode(BearerData.encode(bearerData));
|
||||
assertEquals("Test standard SMS", revBearerData.userData.payloadStr);
|
||||
userData.payloadStr = "Test \n standard \r SMS";
|
||||
revBearerData = BearerData.decode(BearerData.encode(bearerData));
|
||||
assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
|
||||
}
|
||||
|
||||
@SmallTest
|
||||
|
||||
Reference in New Issue
Block a user