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

Commit 6568f8f2 authored by Taesu Lee's avatar Taesu Lee
Browse files

Use an original text for next force 7bit encoding



If config_sms_force_7bit_encoding is true, an original text will be
translated based on 7-bit ASCII table for CDMA. But if the translated
text can not be encoded as single-part SMS, the original text should be
used for next try instead and it will be translated based on GSM 7-bit
alphabet for ENCODING_GSM_7BIT_ALPHABET.

Bug: 151061215
Test: Manual

Signed-off-by: default avatarTaesu Lee <taesu82.lee@samsung.com>
Change-Id: I679786b96d19c6f3f30ec3e2037221110f5d3f84
parent abc516b9
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -493,7 +493,10 @@ public class SmsMessage {
        String newMsgBody = null;
        Resources r = Resources.getSystem();
        if (r.getBoolean(com.android.internal.R.bool.config_sms_force_7bit_encoding)) {
            newMsgBody = Sms7BitEncodingTranslator.translate(text, isCdma);
            // 7-bit ASCII table based translation is required only for CDMA single-part SMS since
            // ENCODING_7BIT_ASCII is used for CDMA single-part SMS and ENCODING_GSM_7BIT_ALPHABET
            // is used for CDMA multi-part SMS.
            newMsgBody = Sms7BitEncodingTranslator.translate(text, isCdma && ted.msgCount == 1);
        }
        if (TextUtils.isEmpty(newMsgBody)) {
            newMsgBody = text;
+1 −11
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.internal.telephony.cdma;

import android.compat.annotation.UnsupportedAppUsage;
import android.content.res.Resources;
import android.os.Build;
import android.sysprop.TelephonyProperties;
import android.telephony.PhoneNumberUtils;
@@ -28,7 +27,6 @@ import android.text.TextUtils;
import android.util.Log;

import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails;
import com.android.internal.telephony.Sms7BitEncodingTranslator;
import com.android.internal.telephony.SmsAddress;
import com.android.internal.telephony.SmsConstants;
import com.android.internal.telephony.SmsHeader;
@@ -416,15 +414,7 @@ public class SmsMessage extends SmsMessageBase {
    @UnsupportedAppUsage
    public static TextEncodingDetails calculateLength(CharSequence messageBody,
            boolean use7bitOnly, boolean isEntireMsg) {
        CharSequence newMsgBody = null;
        Resources r = Resources.getSystem();
        if (r.getBoolean(com.android.internal.R.bool.config_sms_force_7bit_encoding)) {
            newMsgBody = Sms7BitEncodingTranslator.translate(messageBody, true /* isCdmaFormat */);
        }
        if (TextUtils.isEmpty(newMsgBody)) {
            newMsgBody = messageBody;
        }
        return BearerData.calcTextEncodingDetails(newMsgBody, use7bitOnly, isEntireMsg);
        return BearerData.calcTextEncodingDetails(messageBody, use7bitOnly, isEntireMsg);
    }

    /**
+12 −1
Original line number Diff line number Diff line
@@ -21,9 +21,11 @@ import android.content.res.Resources;
import android.telephony.SmsCbCmasInfo;
import android.telephony.cdma.CdmaSmsCbProgramData;
import android.telephony.cdma.CdmaSmsCbProgramResults;
import android.text.TextUtils;

import com.android.internal.telephony.GsmAlphabet;
import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails;
import com.android.internal.telephony.Sms7BitEncodingTranslator;
import com.android.internal.telephony.SmsConstants;
import com.android.internal.telephony.SmsHeader;
import com.android.internal.telephony.SmsMessageBase;
@@ -540,8 +542,17 @@ public final class BearerData {
     */
    public static TextEncodingDetails calcTextEncodingDetails(CharSequence msg,
            boolean force7BitEncoding, boolean isEntireMsg) {
        CharSequence newMsg = null;
        Resources r = Resources.getSystem();
        if (r.getBoolean(com.android.internal.R.bool.config_sms_force_7bit_encoding)) {
            newMsg = Sms7BitEncodingTranslator.translate(msg, true /* isCdmaFormat */);
        }
        if (TextUtils.isEmpty(newMsg)) {
            newMsg = msg;
        }

        TextEncodingDetails ted;
        int septets = countAsciiSeptets(msg, force7BitEncoding);
        int septets = countAsciiSeptets(newMsg, force7BitEncoding);
        if (septets != -1 && septets <= SmsConstants.MAX_USER_DATA_SEPTETS) {
            ted = new TextEncodingDetails();
            ted.msgCount = 1;