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

Commit 4c4e6da9 authored by Joseph Pirozzo's avatar Joseph Pirozzo
Browse files

MapClient sent message parsing

When synchronizing MMS messages utilize both INBOX and SENT folders.
When parsing sources and destinations in messages utilize a similar
comparison opperator to also account for numbers that may have added
country codes.

Bug: 178526795
Test: atest BluetoothInstrumentationTests
Tag: #stability
Change-Id: I9a4f4f268901f8309e326fbd48999cde334564ba
parent a712e835
Loading
Loading
Loading
Loading
+13 −8
Original line number Diff line number Diff line
@@ -287,12 +287,21 @@ class MapClientContent {
            BluetoothMapbMessageMime mmsBmessage = new BluetoothMapbMessageMime();
            mmsBmessage.parseMsgPart(message.getBodyContent());
            int read = message.getStatus() == Bmessage.Status.READ ? 1 : 0;
            Uri contentUri;
            int messageBox;
            if (INBOX_PATH.equalsIgnoreCase(message.getFolder())) {
                contentUri = Mms.Inbox.CONTENT_URI;
                messageBox = Mms.MESSAGE_BOX_INBOX;
            } else {
                contentUri = Mms.Sent.CONTENT_URI;
                messageBox = Mms.MESSAGE_BOX_SENT;
            }
            logD("Parsed");
            values.put(Mms.SUBSCRIPTION_ID, mSubscriptionId);
            values.put(Mms.THREAD_ID, threadId);
            values.put(Mms.DATE, timestamp / 1000L);
            values.put(Mms.TEXT_ONLY, true);
            values.put(Mms.MESSAGE_BOX, Mms.MESSAGE_BOX_INBOX);
            values.put(Mms.MESSAGE_BOX, messageBox);
            values.put(Mms.READ, read);
            values.put(Mms.SEEN, 0);
            values.put(Mms.MESSAGE_TYPE, PduHeaders.MESSAGE_TYPE_SEND_REQ);
@@ -306,7 +315,7 @@ class MapClientContent {
            values.put(Mms.MESSAGE_CLASS, PduHeaders.MESSAGE_CLASS_PERSONAL_STR);
            values.put(Mms.MESSAGE_SIZE, mmsBmessage.getSize());

            Uri results = mResolver.insert(Mms.CONTENT_URI, values);
            Uri results = mResolver.insert(contentUri, values);

            logD("Map InsertedThread" + results);

@@ -316,10 +325,6 @@ class MapClientContent {

            storeAddressPart(message, results);

            Uri contentUri =
                    INBOX_PATH.equalsIgnoreCase(message.getFolder()) ? Mms.Inbox.CONTENT_URI
                            : Mms.Sent.CONTENT_URI;

            String messageContent = mmsBmessage.getMessageAsText();

            values.put(Mms.Part.CONTENT_TYPE, "plain/text");
@@ -399,7 +404,7 @@ class MapClientContent {
        }
        getRecipientsFromMessage(message, messageContacts);

        messageContacts.remove(mPhoneNumber);
        messageContacts.removeIf(number -> (PhoneNumberUtils.compareLoosely(number, mPhoneNumber)));
        logV("Contacts = " + messageContacts.toString());
        return Telephony.Threads.getOrCreateThreadId(mContext, messageContacts);
    }
@@ -420,7 +425,7 @@ class MapClientContent {
        if (originator != null) {
            List<VCardEntry.PhoneData> phoneData = originator.getPhoneList();
            if (phoneData != null && phoneData.size() > 0) {
                return phoneData.get(0).getNumber();
                return PhoneNumberUtils.extractNetworkPortion(phoneData.get(0).getNumber());
            }
        }
        return null;
+5 −4
Original line number Diff line number Diff line
@@ -30,6 +30,8 @@ import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.provider.Telephony.Mms;
import android.provider.Telephony.Sms;
import android.telephony.SubscriptionManager;
import android.test.mock.MockContentProvider;
import android.test.mock.MockContentResolver;
@@ -335,8 +337,7 @@ public class MapClientContentTest {
            Log.i(TAG, "Delete " + uri);
            Log.i(TAG, "Contents" + mContentValues.toString());
            mContentValues.remove(uri);
            if (uri.toString().equals("content://sms") || uri.toString().equals("content://mms")) {

            if (uri.equals(Sms.CONTENT_URI) || uri.equals(Mms.CONTENT_URI)) {
                mContentValues.clear();
            }
            return 1;
@@ -345,10 +346,10 @@ public class MapClientContentTest {
        @Override
        public Uri insert(Uri uri, ContentValues values) {
            Log.i(TAG, "URI = " + uri);
            if (uri.equals(Mms.Inbox.CONTENT_URI)) uri = Mms.CONTENT_URI;
            Uri returnUri = Uri.withAppendedPath(uri, String.valueOf(mContentValues.size() + 1));
            //only store top level message parts
            if (uri.toString().equals("content://sms/inbox") || uri.toString()
                    .equals("content://mms")) {
            if (uri.equals(Sms.Inbox.CONTENT_URI) || uri.equals(Mms.CONTENT_URI)) {
                Log.i(TAG, "adding content" + values);
                mContentValues.put(returnUri, values);
                Log.i(TAG, "ContentSize = " + mContentValues.size());