diff options
author | Ritwika Mitra <ritwikam@google.com> | 2019-08-06 14:30:24 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-08-06 14:30:24 -0700 |
commit | 0db99fd5fefad9cc36709bd01eb2c192a2ced39a (patch) | |
tree | e9632dee869aea8afb85a6ab456d570ad43b867b | |
parent | 289018176890a06379c049d893b48dea0539ff78 (diff) | |
parent | 4a6a99f1710792ee2fb04884b0ba4f399789cec4 (diff) | |
download | Messenger-0db99fd5fefad9cc36709bd01eb2c192a2ced39a.tar.gz |
Merge "Differentiate between message read on the phone, and on the car." into pi-car-dev am: 2e3cbea03b
am: 4a6a99f171
Change-Id: Id42fbe3be5f94d1011832f61750805d7ac79ea5d
4 files changed, 43 insertions, 16 deletions
diff --git a/src/com/android/car/messenger/MapMessage.java b/src/com/android/car/messenger/MapMessage.java index 4eee956..b4b7aee 100644 --- a/src/com/android/car/messenger/MapMessage.java +++ b/src/com/android/car/messenger/MapMessage.java @@ -33,7 +33,8 @@ class MapMessage { private String mSenderContactUri; private String mMessageText; private long mReceiveTime; - private boolean mIsRead; + private boolean mIsReadOnPhone; + private boolean mIsReadOnCar; /** * Constructs a {@link MapMessage} from {@code intent} that was received from MAP service via @@ -99,7 +100,7 @@ class MapMessage { mSenderContactUri = senderContactUri; mSenderName = senderName; mReceiveTime = receiveTime; - mIsRead = isRead; + mIsReadOnPhone = isRead; } /** @@ -151,14 +152,21 @@ class MapMessage { } public void markMessageAsRead() { - mIsRead = true; + mIsReadOnCar = true; } /** - * Returns the read status of the message. + * Returns {@code true} if message was read on the phone before it was received on the car. */ - public boolean isRead() { - return mIsRead; + public boolean isReadOnPhone() { + return mIsReadOnPhone; + } + + /** + * Returns {@code true} if message was read on the car. + */ + public boolean isReadOnCar() { + return mIsReadOnCar; } @Override @@ -169,8 +177,9 @@ class MapMessage { ", mMessageText='" + mMessageText + '\'' + ", mSenderContactUri='" + mSenderContactUri + '\'' + ", mSenderName='" + mSenderName + '\'' + - ", mReceiveTime=" + mReceiveTime + - ", mIsRead= " + mIsRead + + ", mReceiveTime=" + mReceiveTime + '\'' + + ", mIsReadOnPhone= " + mIsReadOnPhone + '\'' + + ", mIsReadOnCar= " + mIsReadOnCar + "}"; } } diff --git a/src/com/android/car/messenger/MessengerDelegate.java b/src/com/android/car/messenger/MessengerDelegate.java index 8c7b382..28eeeee 100644 --- a/src/com/android/car/messenger/MessengerDelegate.java +++ b/src/com/android/car/messenger/MessengerDelegate.java @@ -219,7 +219,7 @@ public class MessengerDelegate implements BluetoothMonitor.OnBluetoothEventListe NotificationInfo info = mNotificationInfos.get(senderKey); for (MessageKey key : info.mMessageKeys) { MapMessage message = mMessages.get(key); - if (!message.isRead()) { + if (!message.isReadOnCar()) { message.markMessageAsRead(); mSmsDatabaseHandler.addOrUpdate(message); } @@ -359,7 +359,7 @@ public class MessengerDelegate implements BluetoothMonitor.OnBluetoothEventListe .setUri(notificationInfo.mSenderContactUri) .build(); notificationInfo.mMessageKeys.stream().map(mMessages::get).forEachOrdered(message -> { - if (!message.isRead()) { + if (!message.isReadOnCar()) { messagingStyle.addMessage( message.getMessageText(), message.getReceiveTime(), diff --git a/src/com/android/car/messenger/SmsDatabaseHandler.java b/src/com/android/car/messenger/SmsDatabaseHandler.java index b672354..333d8d7 100644 --- a/src/com/android/car/messenger/SmsDatabaseHandler.java +++ b/src/com/android/car/messenger/SmsDatabaseHandler.java @@ -168,7 +168,7 @@ class SmsDatabaseHandler { newMessage.put(Telephony.Sms.PERSON, getContactId(mContentResolver, message.getSenderContactUri())); - newMessage.put(Telephony.Sms.READ, message.isRead()); + newMessage.put(Telephony.Sms.READ, (message.isReadOnPhone() || message.isReadOnCar())); return newMessage; } diff --git a/tests/robotests/src/com/android/car/messenger/MessengerDelegateTest.java b/tests/robotests/src/com/android/car/messenger/MessengerDelegateTest.java index 6e730f0..cf04da3 100644 --- a/tests/robotests/src/com/android/car/messenger/MessengerDelegateTest.java +++ b/tests/robotests/src/com/android/car/messenger/MessengerDelegateTest.java @@ -94,7 +94,8 @@ public class MessengerDelegateTest { long deviceConnectionTimestamp = mMessengerDelegate.mBTDeviceAddressToConnectionTimestamp.get(BLUETOOTH_ADDRESS_TWO); - assertThat(deviceConnectionTimestamp).isEqualTo(timestamp); + // Sometimes there is slight flakiness in the timestamps. + assertThat(deviceConnectionTimestamp-timestamp).isLessThan(5L); } @Test @@ -195,14 +196,30 @@ public class MessengerDelegateTest { MessengerDelegate.NotificationInfo info = mMessengerDelegate.mNotificationInfos.get( mSenderKey); MessengerDelegate.MessageKey key = info.mMessageKeys.get(0); - assertThat(mMessengerDelegate.mMessages.get(key).isRead()).isTrue(); + assertThat(mMessengerDelegate.mMessages.get(key).isReadOnCar()).isTrue(); + } + + @Test + public void testMessageReadOnPhone() { + Intent readMessageIntent = createMessageIntent(mMockBluetoothDeviceOne, "mockHandle", + "510-111-2222", "testSender", + "Hello", /* timestamp= */ System.currentTimeMillis() + 10000L, + /* isReadOnPhone */ true); + mMessengerDelegate.onMessageReceived(readMessageIntent); + + MessengerDelegate.NotificationInfo info = mMessengerDelegate.mNotificationInfos.get( + mSenderKey); + MessengerDelegate.MessageKey key = info.mMessageKeys.get(0); + assertThat(mMessengerDelegate.mMessages.get(key).isReadOnCar()).isFalse(); + assertThat(mMessengerDelegate.mMessages.get(key).isReadOnPhone()).isTrue(); } @Test public void testNotificationsNotShownForExistingMessages() { Intent existingMessageIntent = createMessageIntent(mMockBluetoothDeviceTwo, "mockHandle", "510-111-2222", "testSender", - "Hello", /* timestamp= */ System.currentTimeMillis() - 10000L); + "Hello", /* timestamp= */ System.currentTimeMillis() - 10000L, + /* isReadOnPhone */ false); mMessengerDelegate.onDeviceConnected(mMockBluetoothDeviceTwo); mMessengerDelegate.onMessageReceived(existingMessageIntent); @@ -212,13 +229,14 @@ public class MessengerDelegateTest { } private Intent createMessageIntent(BluetoothDevice device, String handle, String senderUri, - String senderName, String messageText, Long timestamp) { + String senderName, String messageText, Long timestamp, boolean isReadOnPhone) { Intent intent = new Intent(); intent.setAction(BluetoothMapClient.ACTION_MESSAGE_RECEIVED); intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device); intent.putExtra(BluetoothMapClient.EXTRA_MESSAGE_HANDLE, handle); intent.putExtra(BluetoothMapClient.EXTRA_SENDER_CONTACT_URI, senderUri); intent.putExtra(BluetoothMapClient.EXTRA_SENDER_CONTACT_NAME, senderName); + intent.putExtra(BluetoothMapClient.EXTRA_MESSAGE_READ_STATUS, isReadOnPhone); intent.putExtra(android.content.Intent.EXTRA_TEXT, messageText); if (timestamp != null) { intent.putExtra(BluetoothMapClient.EXTRA_MESSAGE_TIMESTAMP, timestamp); @@ -240,7 +258,7 @@ public class MessengerDelegateTest { private void createMockMessages() { mMessageOneIntent= createMessageIntent(mMockBluetoothDeviceOne, "mockHandle", "510-111-2222", "testSender", - "Hello", /* timestamp= */ null); + "Hello", /* timestamp= */ null, /* isReadOnPhone */ false); mMessageOne = MapMessage.parseFrom(mMessageOneIntent); mMessageOneKey = new MessengerDelegate.MessageKey(mMessageOne); mSenderKey = new MessengerDelegate.SenderKey(mMessageOne); |