am 95434bfa: Allow fragmentText to be called for singleton CDMA messages.
Merge commit '95434bfaee62161ce02012c6424f0c0c8fffccb5' into eclair-plus-aosp * commit '95434bfaee62161ce02012c6424f0c0c8fffccb5': Allow fragmentText to be called for singleton CDMA messages.
This commit is contained in:
@@ -309,8 +309,13 @@ public class SmsMessage {
|
|||||||
while (pos < textLen) {
|
while (pos < textLen) {
|
||||||
int nextPos = 0; // Counts code units.
|
int nextPos = 0; // Counts code units.
|
||||||
if (ted.codeUnitSize == ENCODING_7BIT) {
|
if (ted.codeUnitSize == ENCODING_7BIT) {
|
||||||
// For multi-segment messages, CDMA 7bit equals GSM 7bit encoding (EMS mode).
|
if (activePhone == PHONE_TYPE_CDMA && ted.msgCount == 1) {
|
||||||
nextPos = GsmAlphabet.findGsmSeptetLimitIndex(text, pos, limit);
|
// For a singleton CDMA message, the encoding must be ASCII...
|
||||||
|
nextPos = pos + Math.min(limit, textLen - pos);
|
||||||
|
} else {
|
||||||
|
// For multi-segment messages, CDMA 7bit equals GSM 7bit encoding (EMS mode).
|
||||||
|
nextPos = GsmAlphabet.findGsmSeptetLimitIndex(text, pos, limit);
|
||||||
|
}
|
||||||
} else { // Assume unicode.
|
} else { // Assume unicode.
|
||||||
nextPos = pos + Math.min(limit / 2, textLen - pos);
|
nextPos = pos + Math.min(limit / 2, textLen - pos);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,6 +116,16 @@ public abstract class SmsMessageBase {
|
|||||||
* android.telephony.SmsMessage ENCODING_*).
|
* android.telephony.SmsMessage ENCODING_*).
|
||||||
*/
|
*/
|
||||||
public int codeUnitSize;
|
public int codeUnitSize;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "TextEncodingDetails " +
|
||||||
|
"{ msgCount=" + msgCount +
|
||||||
|
", codeUnitCount=" + codeUnitCount +
|
||||||
|
", codeUnitsRemaining=" + codeUnitsRemaining +
|
||||||
|
", codeUnitSize=" + codeUnitSize +
|
||||||
|
" }";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(): This class is duplicated in SmsMessage.java. Refactor accordingly.
|
// TODO(): This class is duplicated in SmsMessage.java. Refactor accordingly.
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ import android.test.suitebuilder.annotation.SmallTest;
|
|||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class CdmaSmsTest extends AndroidTestCase {
|
public class CdmaSmsTest extends AndroidTestCase {
|
||||||
private final static String LOG_TAG = "XXX CdmaSmsTest XXX";
|
private final static String LOG_TAG = "XXX CdmaSmsTest XXX";
|
||||||
|
|
||||||
@@ -815,4 +817,30 @@ public class CdmaSmsTest extends AndroidTestCase {
|
|||||||
BearerData revBearerData = BearerData.decode(encodedSms);
|
BearerData revBearerData = BearerData.decode(encodedSms);
|
||||||
assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
|
assertEquals(userData.payloadStr, revBearerData.userData.payloadStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
public void testFragmentText() throws Exception {
|
||||||
|
// Valid 160 character ASCII text.
|
||||||
|
String text1 = "123456789012345678901234567890123456789012345678901234567890" +
|
||||||
|
"1234567890123456789012345678901234567890123456789012345678901234567890" +
|
||||||
|
"12345678901234567890123456789[";
|
||||||
|
TextEncodingDetails ted = SmsMessage.calculateLength(text1, false);
|
||||||
|
assertEquals(ted.msgCount, 1);
|
||||||
|
assertEquals(ted.codeUnitCount, 160);
|
||||||
|
assertEquals(ted.codeUnitSize, 1);
|
||||||
|
ArrayList<String> fragments = android.telephony.SmsMessage.fragmentText(text1);
|
||||||
|
assertEquals(fragments.size(), 1);
|
||||||
|
// Valid 160 character GSM text -- the last character is
|
||||||
|
// non-ASCII, and so this will currently generate a singleton
|
||||||
|
// EMS message, which is not necessarily supported by Verizon.
|
||||||
|
String text2 = "123456789012345678901234567890123456789012345678901234567890" +
|
||||||
|
"1234567890123456789012345678901234567890123456789012345678901234567890" +
|
||||||
|
"12345678901234567890123456789\u00a3"; // Trailing pound-currency sign.
|
||||||
|
ted = SmsMessage.calculateLength(text2, false);
|
||||||
|
assertEquals(ted.msgCount, 1);
|
||||||
|
assertEquals(ted.codeUnitCount, 160);
|
||||||
|
assertEquals(ted.codeUnitSize, 1);
|
||||||
|
fragments = android.telephony.SmsMessage.fragmentText(text2);
|
||||||
|
assertEquals(fragments.size(), 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user