Loading android/app/src/com/android/bluetooth/mapclient/MceStateMachine.java +4 −7 Original line number Diff line number Diff line Loading @@ -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( Loading android/app/src/com/android/bluetooth/mapclient/obex/MessagesFilter.java +1 −0 Original line number Diff line number Diff line Loading @@ -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; Loading android/app/tests/unit/src/com/android/bluetooth/mapclient/MapClientStateMachineTest.java +45 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading
android/app/src/com/android/bluetooth/mapclient/MceStateMachine.java +4 −7 Original line number Diff line number Diff line Loading @@ -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( Loading
android/app/src/com/android/bluetooth/mapclient/obex/MessagesFilter.java +1 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
android/app/tests/unit/src/com/android/bluetooth/mapclient/MapClientStateMachineTest.java +45 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading