diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-21 02:21:58 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-02-21 02:21:58 +0000 |
commit | ef33e63fbd515898f1216c1ae9af12a1bb10f3e8 (patch) | |
tree | e70f61025c0e8a36f0229853e954f748a6a50da2 | |
parent | 9bb03ebce29e157ca3d69914281fae019f87d4a3 (diff) | |
parent | b2d00e02683db564832222dc6b29bb17d0e22d86 (diff) | |
download | Messenger-ef33e63fbd515898f1216c1ae9af12a1bb10f3e8.tar.gz |
Snap for 6224676 from b2d00e02683db564832222dc6b29bb17d0e22d86 to qt-d4-release
Change-Id: I123faaa92e6867a33291237a3d0aefb7b832e378
5 files changed, 30 insertions, 17 deletions
diff --git a/src/com/android/car/messenger/MapMessage.java b/src/com/android/car/messenger/MapMessage.java index b4b7aee..c7e91e6 100644 --- a/src/com/android/car/messenger/MapMessage.java +++ b/src/com/android/car/messenger/MapMessage.java @@ -34,7 +34,7 @@ class MapMessage { private String mMessageText; private long mReceiveTime; private boolean mIsReadOnPhone; - private boolean mIsReadOnCar; + private boolean mShouldInclude; /** * Constructs a {@link MapMessage} from {@code intent} that was received from MAP service via @@ -151,8 +151,13 @@ class MapMessage { return mMessageText; } - public void markMessageAsRead() { - mIsReadOnCar = true; + /** + * Sets the message to be excluded from the notification. Messages that have been read aloud on + * the car, or that have been dismissed by the user should be excluded from the notification if/ + * when the notification gets updated. Note: this state will not be propagated to the phone. + */ + public void excludeFromNotification() { + mShouldInclude = false; } /** @@ -163,10 +168,12 @@ class MapMessage { } /** - * Returns {@code true} if message was read on the car. + * Returns {@code true} if message should be included in the notification. Messages that + * have been read aloud on the car, or that have been dismissed by the user should be excluded + * from the notification if/when the notification gets updated. */ - public boolean isReadOnCar() { - return mIsReadOnCar; + public boolean shouldIncludeInNotification() { + return mShouldInclude; } @Override @@ -179,7 +186,7 @@ class MapMessage { ", mSenderName='" + mSenderName + '\'' + ", mReceiveTime=" + mReceiveTime + '\'' + ", mIsReadOnPhone= " + mIsReadOnPhone + '\'' + - ", mIsReadOnCar= " + mIsReadOnCar + + ", mShouldInclude= " + mShouldInclude + "}"; } } diff --git a/src/com/android/car/messenger/MessengerDelegate.java b/src/com/android/car/messenger/MessengerDelegate.java index 58193d4..8fb77d7 100644 --- a/src/com/android/car/messenger/MessengerDelegate.java +++ b/src/com/android/car/messenger/MessengerDelegate.java @@ -14,7 +14,6 @@ import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.net.Uri; -import android.util.Log; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; @@ -210,12 +209,17 @@ public class MessengerDelegate implements BluetoothMonitor.OnBluetoothEventListe } } - protected void markAsRead(SenderKey senderKey) { + + /** + * Excludes messages from a notification so that the messages are not shown to the user once + * the notification gets updated with newer messages. + */ + protected void excludeFromNotification(SenderKey senderKey) { NotificationInfo info = mNotificationInfos.get(senderKey); for (MessageKey key : info.mMessageKeys) { MapMessage message = mMessages.get(key); - if (!message.isReadOnCar()) { - message.markMessageAsRead(); + if (message.shouldIncludeInNotification()) { + message.excludeFromNotification(); mSmsDatabaseHandler.addOrUpdate(message); } } @@ -239,6 +243,7 @@ public class MessengerDelegate implements BluetoothMonitor.OnBluetoothEventListe if (predicate.test(senderKey)) { mNotificationManager.cancel(notificationInfo.mNotificationId); } + excludeFromNotification(senderKey); }); } @@ -361,7 +366,7 @@ public class MessengerDelegate implements BluetoothMonitor.OnBluetoothEventListe .setUri(notificationInfo.mSenderContactUri) .build(); notificationInfo.mMessageKeys.stream().map(mMessages::get).forEachOrdered(message -> { - if (!message.isReadOnCar()) { + if (message.shouldIncludeInNotification()) { messagingStyle.addMessage( message.getMessageText(), message.getReceiveTime(), diff --git a/src/com/android/car/messenger/MessengerService.java b/src/com/android/car/messenger/MessengerService.java index 0b0e4e4..a441d99 100644 --- a/src/com/android/car/messenger/MessengerService.java +++ b/src/com/android/car/messenger/MessengerService.java @@ -243,7 +243,7 @@ public class MessengerService extends Service { public void markAsRead(Intent intent) { final SenderKey senderKey = intent.getParcelableExtra(EXTRA_SENDER_KEY); L.d(TAG, "markAsRead"); - mMessengerDelegate.markAsRead(senderKey); + mMessengerDelegate.excludeFromNotification(senderKey); } /** diff --git a/src/com/android/car/messenger/SmsDatabaseHandler.java b/src/com/android/car/messenger/SmsDatabaseHandler.java index 77d8e29..a8fd107 100644 --- a/src/com/android/car/messenger/SmsDatabaseHandler.java +++ b/src/com/android/car/messenger/SmsDatabaseHandler.java @@ -168,7 +168,8 @@ class SmsDatabaseHandler { newMessage.put(Telephony.Sms.PERSON, getContactId(mContentResolver, message.getSenderContactUri())); - newMessage.put(Telephony.Sms.READ, (message.isReadOnPhone() || message.isReadOnCar())); + newMessage.put(Telephony.Sms.READ, (message.isReadOnPhone() + || !message.shouldIncludeInNotification())); 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 b160736..5720497 100644 --- a/tests/robotests/src/com/android/car/messenger/MessengerDelegateTest.java +++ b/tests/robotests/src/com/android/car/messenger/MessengerDelegateTest.java @@ -191,12 +191,12 @@ public class MessengerDelegateTest { public void testHandleMarkAsRead() { mMessengerDelegate.onMessageReceived(mMessageOneIntent); - mMessengerDelegate.markAsRead(mSenderKey); + mMessengerDelegate.excludeFromNotification(mSenderKey); MessengerDelegate.NotificationInfo info = mMessengerDelegate.mNotificationInfos.get( mSenderKey); MessengerDelegate.MessageKey key = info.mMessageKeys.get(0); - assertThat(mMessengerDelegate.mMessages.get(key).isReadOnCar()).isTrue(); + assertThat(mMessengerDelegate.mMessages.get(key).shouldIncludeInNotification()).isFalse(); } @Test @@ -210,7 +210,7 @@ public class MessengerDelegateTest { 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).shouldIncludeInNotification()).isTrue(); assertThat(mMessengerDelegate.mMessages.get(key).isReadOnPhone()).isTrue(); } |