am ecbbecf6: Merge change 8620 into donut

Merge commit 'ecbbecf6c535e7f3e1d072d43766a95aa18ee464'

* commit 'ecbbecf6c535e7f3e1d072d43766a95aa18ee464':
  Fix swapped gsm/cdma function dispatch, and 7bit text fragmentation.
diff --git a/telephony/java/android/telephony/SmsMessage.java b/telephony/java/android/telephony/SmsMessage.java
index 775b034..fc491d7 100644
--- a/telephony/java/android/telephony/SmsMessage.java
+++ b/telephony/java/android/telephony/SmsMessage.java
@@ -278,8 +278,8 @@
     public static int[] calculateLength(CharSequence msgBody, boolean use7bitOnly) {
         int activePhone = TelephonyManager.getDefault().getPhoneType();
         TextEncodingDetails ted = (PHONE_TYPE_CDMA == activePhone) ?
-            com.android.internal.telephony.gsm.SmsMessage.calculateLength(msgBody, use7bitOnly) :
-            com.android.internal.telephony.cdma.SmsMessage.calculateLength(msgBody, use7bitOnly);
+            com.android.internal.telephony.cdma.SmsMessage.calculateLength(msgBody, use7bitOnly) :
+            com.android.internal.telephony.gsm.SmsMessage.calculateLength(msgBody, use7bitOnly);
         int ret[] = new int[4];
         ret[0] = ted.msgCount;
         ret[1] = ted.codeUnitCount;
@@ -299,8 +299,8 @@
     public static ArrayList<String> fragmentText(String text) {
         int activePhone = TelephonyManager.getDefault().getPhoneType();
         TextEncodingDetails ted = (PHONE_TYPE_CDMA == activePhone) ?
-            com.android.internal.telephony.gsm.SmsMessage.calculateLength(text, false) :
-            com.android.internal.telephony.cdma.SmsMessage.calculateLength(text, false);
+            com.android.internal.telephony.cdma.SmsMessage.calculateLength(text, false) :
+            com.android.internal.telephony.gsm.SmsMessage.calculateLength(text, false);
 
         // TODO(cleanup): The code here could be rolled into the logic
         // below cleanly if these MAX_* constants were defined more
@@ -321,11 +321,8 @@
         while (pos < textLen) {
             int nextPos = 0;  // Counts code units.
             if (ted.codeUnitSize == ENCODING_7BIT) {
-                if (PHONE_TYPE_CDMA == activePhone) {
-                    nextPos = pos + Math.min(limit, textLen - pos);
-                } else {
-                    nextPos = GsmAlphabet.findGsmSeptetLimitIndex(text, pos, limit);
-                }
+                // For multi-segment messages, CDMA 7bit equals GSM 7bit encoding (EMS mode).
+                nextPos = GsmAlphabet.findGsmSeptetLimitIndex(text, pos, limit);
             } else {  // Assume unicode.
                 nextPos = pos + Math.min(limit / 2, textLen - pos);
             }