Merge "[DO NOT MERGE] Disabled the following tests in TEST_MAPPING: FrameworksCoreTests:android.view.textclassifier.TextClassifierTest#testSuggetsConversationActions_deduplicate CtsAppTestCases:android.app.cts.ServiceTest#testAppZygoteServices CtsAppTestCases:android.app.cts.SystemFeaturesTest#testLocationFeatures CtsProviderTestCases:android.provider.cts.MediaStore_Images_ThumbnailsTest" into stage-aosp-master
diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
index e2a8913b..ebc98d6 100644
--- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
+++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
@@ -678,6 +678,89 @@
}
/**
+ * Pre-processes an SMS WAP for Teleservice Id 0xFDEA(65002).
+ *
+ * It requires an additional header parsing to extract new Message Identifier and new User Data
+ * from WDP SMS User Data.
+ *
+ * - WDP SMS User Data Subparameter =
+ * |User Data SUBPARAMETER_ID ~ NUM_FIELDS| + |CHARi| + |RESERVED|
+ *
+ * - WDP SMS User Data Subparameter CHARi =
+ * |New Message Identifier Subparameter(HEADER_IND = 0)| +
+ * |New User Data Subparameter(MSG_ENCODING = ENCODING_OCTET)|
+ *
+ * @return true if preprocessing is successful, false otherwise.
+ */
+ public boolean preprocessCdmaFdeaWap() {
+ try {
+ BitwiseInputStream inStream = new BitwiseInputStream(mUserData);
+
+ // Message Identifier SUBPARAMETER_ID(0x00)
+ if (inStream.read(8) != 0x00) {
+ Rlog.e(LOG_TAG, "Invalid FDEA WDP Header Message Identifier SUBPARAMETER_ID");
+ return false;
+ }
+
+ // Message Identifier SUBPARAM_LEN(0x03)
+ if (inStream.read(8) != 0x03) {
+ Rlog.e(LOG_TAG, "Invalid FDEA WDP Header Message Identifier SUBPARAM_LEN");
+ return false;
+ }
+
+ // Message Identifier MESSAGE_TYPE
+ mBearerData.messageType = inStream.read(4);
+
+ // Message Identifier MESSAGE_ID
+ int msgId = inStream.read(8) << 8;
+ msgId |= inStream.read(8);
+ mBearerData.messageId = msgId;
+ mMessageRef = msgId;
+
+ // Message Identifier HEADER_IND
+ mBearerData.hasUserDataHeader = (inStream.read(1) == 1);
+ if (mBearerData.hasUserDataHeader) {
+ Rlog.e(LOG_TAG, "Invalid FDEA WDP Header Message Identifier HEADER_IND");
+ return false;
+ }
+
+ // Message Identifier RESERVED
+ inStream.skip(3);
+
+ // User Data SUBPARAMETER_ID(0x01)
+ if (inStream.read(8) != 0x01) {
+ Rlog.e(LOG_TAG, "Invalid FDEA WDP Header User Data SUBPARAMETER_ID");
+ return false;
+ }
+
+ // User Data SUBPARAM_LEN
+ int userDataLen = inStream.read(8) * 8;
+
+ // User Data MSG_ENCODING
+ mBearerData.userData.msgEncoding = inStream.read(5);
+ int consumedBits = 5;
+ if (mBearerData.userData.msgEncoding != UserData.ENCODING_OCTET) {
+ Rlog.e(LOG_TAG, "Invalid FDEA WDP Header User Data MSG_ENCODING");
+ return false;
+ }
+
+ // User Data NUM_FIELDS
+ mBearerData.userData.numFields = inStream.read(8);
+ consumedBits += 8;
+
+ int remainingBits = userDataLen - consumedBits;
+ int dataBits = mBearerData.userData.numFields * 8;
+ dataBits = dataBits < remainingBits ? dataBits : remainingBits;
+ mBearerData.userData.payload = inStream.readByteArray(dataBits);
+ mUserData = mBearerData.userData.payload;
+ return true;
+ } catch (BitwiseInputStream.AccessException ex) {
+ Rlog.e(LOG_TAG, "Fail to preprocess FDEA WAP: " + ex);
+ }
+ return false;
+ }
+
+ /**
* Parses a SMS message from its BearerData stream.
*/
public void parseSms() {
diff --git a/telephony/java/com/android/internal/telephony/cdma/sms/SmsEnvelope.java b/telephony/java/com/android/internal/telephony/cdma/sms/SmsEnvelope.java
index de93b57..bed2de1 100644
--- a/telephony/java/com/android/internal/telephony/cdma/sms/SmsEnvelope.java
+++ b/telephony/java/com/android/internal/telephony/cdma/sms/SmsEnvelope.java
@@ -39,6 +39,9 @@
static public final int TELESERVICE_WEMT = 0x1005;
static public final int TELESERVICE_SCPT = 0x1006;
+ /** Carriers specific Teleservice IDs. */
+ public static final int TELESERVICE_FDEA_WAP = 0xFDEA; // 65002
+
/**
* The following are defined as extensions to the standard teleservices
*/