From 2ffbb747d4f77ab08ef4074498f74e40315f8ca9 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Thu, 12 Aug 2021 14:34:07 -0400 Subject: [PATCH] Handle spanned conversation labels Test: Robotests Fixes: 194446117 Change-Id: If21f727e00b181f0da127b09e5a1c46ec3257836 --- ...centConversationsPreferenceController.java | 9 +++-- ...ConversationsPreferenceControllerTest.java | 33 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/notification/app/RecentConversationsPreferenceController.java b/src/com/android/settings/notification/app/RecentConversationsPreferenceController.java index 4984fad9400..1ceb45cb316 100644 --- a/src/com/android/settings/notification/app/RecentConversationsPreferenceController.java +++ b/src/com/android/settings/notification/app/RecentConversationsPreferenceController.java @@ -233,8 +233,13 @@ public class RecentConversationsPreferenceController extends AbstractPreferenceC private final Collator sCollator = Collator.getInstance(); @Override public int compare(ConversationChannel o1, ConversationChannel o2) { - int labelComparison = sCollator.compare(o1.getShortcutInfo().getLabel(), - o2.getShortcutInfo().getLabel()); + int labelComparison = 0; + if (o1.getShortcutInfo().getLabel() != null + && o2.getShortcutInfo().getLabel() != null) { + labelComparison = sCollator.compare( + o1.getShortcutInfo().getLabel().toString(), + o2.getShortcutInfo().getLabel().toString()); + } if (labelComparison == 0) { return o1.getNotificationChannel().getId().compareTo( diff --git a/tests/robotests/src/com/android/settings/notification/app/RecentConversationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/RecentConversationsPreferenceControllerTest.java index f0ae7ab376d..1688d63ec52 100644 --- a/tests/robotests/src/com/android/settings/notification/app/RecentConversationsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/app/RecentConversationsPreferenceControllerTest.java @@ -36,6 +36,7 @@ import android.content.pm.ShortcutInfo; import android.os.Bundle; import android.os.UserHandle; import android.provider.Settings; +import android.text.SpannedString; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; @@ -338,4 +339,36 @@ public class RecentConversationsPreferenceControllerTest { // one for the preference, none for 'clear all' verify(outerContainer, times(1)).addPreference(any()); } + + @Test + public void testSpans() { + ShortcutInfo si = mock(ShortcutInfo.class); + when(si.getLabel()).thenReturn(new SpannedString("hello")); + ConversationChannel ccw = new ConversationChannel(si, 6, + new NotificationChannel("hi", "hi", 4), + null, 7, + true /* hasactivenotifs */); + ShortcutInfo si2 = mock(ShortcutInfo.class); + when(si2.getLabel()).thenReturn("hello"); + ConversationChannel ccw2 = new ConversationChannel(si2, 6, + new NotificationChannel("hi2", "hi2", 4), + null, 7, + true /* hasactivenotifs */); + // no crash + mController.mConversationComparator.compare(ccw, ccw2); + } + + @Test + public void testNullSpans() { + ConversationChannel ccw = new ConversationChannel(mock(ShortcutInfo.class), 6, + new NotificationChannel("hi", "hi", 4), + null, 7, + true /* hasactivenotifs */); + ConversationChannel ccw2 = new ConversationChannel(mock(ShortcutInfo.class), 6, + new NotificationChannel("hi2", "hi2", 4), + null, 7, + true /* hasactivenotifs */); + // no crash + mController.mConversationComparator.compare(ccw, ccw2); + } }