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

Commit 5fd05977 authored by Aditi Katragadda's avatar Aditi Katragadda Committed by Gerrit Code Review
Browse files

Merge "Exclude unsupported message types from MSG_GET_MESSAGE_LISTING" into main

parents 60042ce7 bbbbb7ec
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -734,15 +734,12 @@ class MceStateMachine extends StateMachine {
                    // Get the 50 most recent messages from the last week
                    Calendar calendar = Calendar.getInstance();
                    calendar.add(Calendar.DATE, -7);
                    byte messageType;
                    // bit mask - messageType discludes unsupported message types
                    byte messageType =
                            MessagesFilter.MESSAGE_TYPE_EMAIL | MessagesFilter.MESSAGE_TYPE_IM;
                    if (Utils.isPtsTestMode()) {
                        messageType =
                                (byte)
                                        SystemProperties.getInt(
                                                FETCH_MESSAGE_TYPE,
                                                MessagesFilter.MESSAGE_TYPE_ALL);
                    } else {
                        messageType = MessagesFilter.MESSAGE_TYPE_ALL;
                                (byte) SystemProperties.getInt(FETCH_MESSAGE_TYPE, messageType);
                    }

                    mMasClient.makeRequest(
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ public final class MessagesFilter {
    public static final byte MESSAGE_TYPE_SMS_CDMA = 0x02;
    public static final byte MESSAGE_TYPE_EMAIL = 0x04;
    public static final byte MESSAGE_TYPE_MMS = 0x08;
    public static final byte MESSAGE_TYPE_IM = 0x10;

    public static final byte READ_STATUS_ANY = 0x00;
    public static final byte READ_STATUS_UNREAD = 0x01;
+45 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import androidx.test.InstrumentationRegistry;
import androidx.test.filters.MediumTest;
import androidx.test.rule.ServiceTestRule;

import com.android.bluetooth.ObexAppParameters;
import com.android.bluetooth.TestUtils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.storage.DatabaseManager;
@@ -916,6 +917,50 @@ public class MapClientStateMachineTest {
                dateTime);
    }

    /**
     * Test MSG_GET_MESSAGE_LISTING does not grab unsupported message types of MESSAGE_TYPE_EMAIL
     * and MESSAGE_TYPE_IM
     */
    @Test
    public void testMsgGetMessageListing_unsupportedMessageTypesNotRequested() {
        setupSdpRecordReceipt();
        clearInvocations(mMockMasClient);
        byte expectedFilter = MessagesFilter.MESSAGE_TYPE_EMAIL | MessagesFilter.MESSAGE_TYPE_IM;
        Message msg = Message.obtain(mHandler, MceStateMachine.MSG_MAS_CONNECTED);
        mMceStateMachine.sendMessage(msg);

        TestUtils.waitForLooperToBeIdle(mMceStateMachine.getHandler().getLooper());
        assertThat(mMceStateMachine.getState()).isEqualTo(BluetoothProfile.STATE_CONNECTED);

        msg =
                Message.obtain(
                        mHandler,
                        MceStateMachine.MSG_GET_MESSAGE_LISTING,
                        MceStateMachine.FOLDER_INBOX);
        mMceStateMachine.sendMessage(msg);

        // using Request class as captor grabs all Request sub-classes even if
        // RequestGetMessagesListing is specifically requested
        ArgumentCaptor<Request> requestCaptor = ArgumentCaptor.forClass(Request.class);
        TestUtils.waitForLooperToBeIdle(mMceStateMachine.getHandler().getLooper());
        verify(mMockMasClient, atLeastOnce()).makeRequest(requestCaptor.capture());
        List<Request> requests = requestCaptor.getAllValues();

        // iterating through captured values to grab RequestGetMessagesListing object
        RequestGetMessagesListing messagesListingRequest = null;
        for (int i = 0; i < requests.size(); i++) {
            if (requests.get(i) instanceof RequestGetMessagesListing) {
                messagesListingRequest = (RequestGetMessagesListing) requests.get(i);
                break;
            }
        }

        ObexAppParameters appParams =
                ObexAppParameters.fromHeaderSet(messagesListingRequest.mHeaderSet);
        byte filter = appParams.getByte(Request.OAP_TAGID_FILTER_MESSAGE_TYPE);
        assertThat(filter).isEqualTo(expectedFilter);
    }

    @Test
    public void testReceivedNewMmsNoSMSDefaultPackage_broadcastToSMSReplyPackage() {
        setupSdpRecordReceipt();