Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2df4cbd7 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 20073

* changes:
  fix CDMA SMS ASCII decode and mapping
parents ec070224 2d65082b
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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(' ');
+3 −3
Original line number Diff line number Diff line
@@ -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);
    }

    /*
+6 −0
Original line number Diff line number Diff line
@@ -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