Loading android/app/src/com/android/bluetooth/mapclient/MceStateMachine.java +10 −5 Original line number Diff line number Diff line Loading @@ -1086,15 +1086,21 @@ class MceStateMachine extends StateMachine { if (message == null) { return; } MessageMetadata metadata = mMessages.get(request.getHandle()); if (metadata == null) { Log.e(TAG, "No request record of received message, handle=" + request.getHandle()); return; } mDatabase.storeMessage( message, request.getHandle(), mMessages.get(request.getHandle()).getTimestamp(), mMessages.get(request.getHandle()).getSeen()); message, request.getHandle(), metadata.getTimestamp(), metadata.getSeen()); if (!INBOX_PATH.equalsIgnoreCase(message.getFolder())) { Log.d(TAG, "Ignoring message received in " + message.getFolder() + "."); return; } switch (message.getType()) { case SMS_CDMA: case SMS_GSM: Loading @@ -1104,7 +1110,6 @@ class MceStateMachine extends StateMachine { Log.d(TAG, "Recipients" + message.getRecipients().toString()); // Grab the message metadata and update the cached read status from the bMessage MessageMetadata metadata = mMessages.get(request.getHandle()); metadata.setRead(request.getMessage().getStatus() == Bmessage.Status.READ); Intent intent = new Intent(); Loading android/app/tests/unit/src/com/android/bluetooth/mapclient/MapClientStateMachineTest.java +43 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,7 @@ public class MapClientStateMachineTest { private Bmessage mTestIncomingMmsBmessage; private String mTestMessageSmsHandle = "0001"; private String mTestMessageMmsHandle = "0002"; private String mTestMessageUnknownHandle = "0003"; boolean mIsAdapterServiceSet; boolean mIsMapClientServiceStarted; Loading Loading @@ -721,6 +722,48 @@ public class MapClientStateMachineTest { eq(MESSAGE_NOT_SEEN)); } @Test public void testReceiveNewMessage_handleNotRecognized_messageDropped() { setupSdpRecordReceipt(); Message msg = Message.obtain(mHandler, MceStateMachine.MSG_MAS_CONNECTED); mMceStateMachine.sendMessage(msg); // verifying that state machine is in the Connected state assertCurrentStateAfterScheduledTask(BluetoothProfile.STATE_CONNECTED); // Send new message event with handle A String dateTime = new ObexTime(Instant.now()).toString(); EventReport event = createNewEventReport( "NewMessage", dateTime, mTestMessageMmsHandle, "telecom/msg/inbox", null, "MMS"); // Prepare to send back message content, but use handle B when(mMockRequestGetMessage.getHandle()).thenReturn(mTestMessageUnknownHandle); when(mMockRequestGetMessage.getMessage()).thenReturn(mTestIncomingMmsBmessage); mMceStateMachine.receiveEvent(event); TestUtils.waitForLooperToBeIdle(mMceStateMachine.getHandler().getLooper()); verify(mMockMasClient).makeRequest(any(RequestGetMessage.class)); msg = Message.obtain( mHandler, MceStateMachine.MSG_MAS_REQUEST_COMPLETED, mMockRequestGetMessage); mMceStateMachine.sendMessage(msg); // We should drop the message and not store it, as it's not one we requested TestUtils.waitForLooperToBeIdle(mMceStateMachine.getHandler().getLooper()); verify(mMockDatabase, never()) .storeMessage(any(Bmessage.class), anyString(), anyLong(), anyBoolean()); } /** Test seen status set in database on initial download */ @Test public void testDownloadExistingSms_messageStoredAsSeen() { Loading Loading
android/app/src/com/android/bluetooth/mapclient/MceStateMachine.java +10 −5 Original line number Diff line number Diff line Loading @@ -1086,15 +1086,21 @@ class MceStateMachine extends StateMachine { if (message == null) { return; } MessageMetadata metadata = mMessages.get(request.getHandle()); if (metadata == null) { Log.e(TAG, "No request record of received message, handle=" + request.getHandle()); return; } mDatabase.storeMessage( message, request.getHandle(), mMessages.get(request.getHandle()).getTimestamp(), mMessages.get(request.getHandle()).getSeen()); message, request.getHandle(), metadata.getTimestamp(), metadata.getSeen()); if (!INBOX_PATH.equalsIgnoreCase(message.getFolder())) { Log.d(TAG, "Ignoring message received in " + message.getFolder() + "."); return; } switch (message.getType()) { case SMS_CDMA: case SMS_GSM: Loading @@ -1104,7 +1110,6 @@ class MceStateMachine extends StateMachine { Log.d(TAG, "Recipients" + message.getRecipients().toString()); // Grab the message metadata and update the cached read status from the bMessage MessageMetadata metadata = mMessages.get(request.getHandle()); metadata.setRead(request.getMessage().getStatus() == Bmessage.Status.READ); Intent intent = new Intent(); Loading
android/app/tests/unit/src/com/android/bluetooth/mapclient/MapClientStateMachineTest.java +43 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,7 @@ public class MapClientStateMachineTest { private Bmessage mTestIncomingMmsBmessage; private String mTestMessageSmsHandle = "0001"; private String mTestMessageMmsHandle = "0002"; private String mTestMessageUnknownHandle = "0003"; boolean mIsAdapterServiceSet; boolean mIsMapClientServiceStarted; Loading Loading @@ -721,6 +722,48 @@ public class MapClientStateMachineTest { eq(MESSAGE_NOT_SEEN)); } @Test public void testReceiveNewMessage_handleNotRecognized_messageDropped() { setupSdpRecordReceipt(); Message msg = Message.obtain(mHandler, MceStateMachine.MSG_MAS_CONNECTED); mMceStateMachine.sendMessage(msg); // verifying that state machine is in the Connected state assertCurrentStateAfterScheduledTask(BluetoothProfile.STATE_CONNECTED); // Send new message event with handle A String dateTime = new ObexTime(Instant.now()).toString(); EventReport event = createNewEventReport( "NewMessage", dateTime, mTestMessageMmsHandle, "telecom/msg/inbox", null, "MMS"); // Prepare to send back message content, but use handle B when(mMockRequestGetMessage.getHandle()).thenReturn(mTestMessageUnknownHandle); when(mMockRequestGetMessage.getMessage()).thenReturn(mTestIncomingMmsBmessage); mMceStateMachine.receiveEvent(event); TestUtils.waitForLooperToBeIdle(mMceStateMachine.getHandler().getLooper()); verify(mMockMasClient).makeRequest(any(RequestGetMessage.class)); msg = Message.obtain( mHandler, MceStateMachine.MSG_MAS_REQUEST_COMPLETED, mMockRequestGetMessage); mMceStateMachine.sendMessage(msg); // We should drop the message and not store it, as it's not one we requested TestUtils.waitForLooperToBeIdle(mMceStateMachine.getHandler().getLooper()); verify(mMockDatabase, never()) .storeMessage(any(Bmessage.class), anyString(), anyLong(), anyBoolean()); } /** Test seen status set in database on initial download */ @Test public void testDownloadExistingSms_messageStoredAsSeen() { Loading