Loading src/java/com/android/internal/telephony/cdma/CdmaInboundSmsHandler.java +6 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,12 @@ public class CdmaInboundSmsHandler extends InboundSmsHandler { mServiceCategoryProgramHandler.dispatchSmsMessage(sms); return Intents.RESULT_SMS_HANDLED; case SmsEnvelope.TELESERVICE_FDEA_WAP: if (!sms.preprocessCdmaFdeaWap()) { return Intents.RESULT_SMS_HANDLED; } teleService = SmsEnvelope.TELESERVICE_WAP; // fall through case SmsEnvelope.TELESERVICE_WAP: // handled below, after storage check break; Loading tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -22,9 +22,11 @@ import android.test.suitebuilder.annotation.SmallTest; import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails; import com.android.internal.telephony.SmsHeader; import com.android.internal.telephony.SmsMessageBase; import com.android.internal.telephony.cdma.SmsMessage; import com.android.internal.util.HexDump; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; Loading Loading @@ -1033,4 +1035,34 @@ public class CdmaSmsTest extends AndroidTestCase { } } } @SmallTest public void testPreprocessFdeaWdpUserData() throws Exception { // Refer to https://patents.google.com/patent/CN103906005A/en String wdpUserData = "0003156D60018103F80008011F805C26B031230B8383634B1B0BA34B7B717BB3732173BB0B81736B" + "6B996B6B2B9B9B0B3B2805A43D7C246414C212522A3A522BD31AD3931210046C841B43A3A381D179" + "798981719199A1718999B97189897A12522A3A522BD31AD393121004402C081815175C486C018999" + "9989B181C9B99991C80454047011AF78"; SmsMessage cdmaSmsMessage = new SmsMessage(); Field field = SmsMessageBase.class.getDeclaredField("mUserData"); field.setAccessible(true); field.set(cdmaSmsMessage, HexDump.hexStringToByteArray(wdpUserData)); BearerData bearerData = new BearerData(); bearerData.userData = new UserData(); field = SmsMessage.class.getDeclaredField("mBearerData"); field.setAccessible(true); field.set(cdmaSmsMessage, bearerData); bearerData = (BearerData) field.get(cdmaSmsMessage); assertTrue(cdmaSmsMessage.preprocessCdmaFdeaWap()); assertEquals(BearerData.MESSAGE_TYPE_DELIVER, bearerData.messageType); assertEquals(0x56D6, bearerData.messageId); assertEquals(0x7F, bearerData.userData.numFields); assertNotNull(bearerData.userData.payload); } } Loading
src/java/com/android/internal/telephony/cdma/CdmaInboundSmsHandler.java +6 −0 Original line number Diff line number Diff line Loading @@ -152,6 +152,12 @@ public class CdmaInboundSmsHandler extends InboundSmsHandler { mServiceCategoryProgramHandler.dispatchSmsMessage(sms); return Intents.RESULT_SMS_HANDLED; case SmsEnvelope.TELESERVICE_FDEA_WAP: if (!sms.preprocessCdmaFdeaWap()) { return Intents.RESULT_SMS_HANDLED; } teleService = SmsEnvelope.TELESERVICE_WAP; // fall through case SmsEnvelope.TELESERVICE_WAP: // handled below, after storage check break; Loading
tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -22,9 +22,11 @@ import android.test.suitebuilder.annotation.SmallTest; import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails; import com.android.internal.telephony.SmsHeader; import com.android.internal.telephony.SmsMessageBase; import com.android.internal.telephony.cdma.SmsMessage; import com.android.internal.util.HexDump; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; Loading Loading @@ -1033,4 +1035,34 @@ public class CdmaSmsTest extends AndroidTestCase { } } } @SmallTest public void testPreprocessFdeaWdpUserData() throws Exception { // Refer to https://patents.google.com/patent/CN103906005A/en String wdpUserData = "0003156D60018103F80008011F805C26B031230B8383634B1B0BA34B7B717BB3732173BB0B81736B" + "6B996B6B2B9B9B0B3B2805A43D7C246414C212522A3A522BD31AD3931210046C841B43A3A381D179" + "798981719199A1718999B97189897A12522A3A522BD31AD393121004402C081815175C486C018999" + "9989B181C9B99991C80454047011AF78"; SmsMessage cdmaSmsMessage = new SmsMessage(); Field field = SmsMessageBase.class.getDeclaredField("mUserData"); field.setAccessible(true); field.set(cdmaSmsMessage, HexDump.hexStringToByteArray(wdpUserData)); BearerData bearerData = new BearerData(); bearerData.userData = new UserData(); field = SmsMessage.class.getDeclaredField("mBearerData"); field.setAccessible(true); field.set(cdmaSmsMessage, bearerData); bearerData = (BearerData) field.get(cdmaSmsMessage); assertTrue(cdmaSmsMessage.preprocessCdmaFdeaWap()); assertEquals(BearerData.MESSAGE_TYPE_DELIVER, bearerData.messageType); assertEquals(0x56D6, bearerData.messageId); assertEquals(0x7F, bearerData.userData.numFields); assertNotNull(bearerData.userData.payload); } }