Handle spanned conversation labels
Test: Robotests Fixes: 194446117 Change-Id: If21f727e00b181f0da127b09e5a1c46ec3257836
This commit is contained in:
@@ -233,8 +233,13 @@ public class RecentConversationsPreferenceController extends AbstractPreferenceC
|
|||||||
private final Collator sCollator = Collator.getInstance();
|
private final Collator sCollator = Collator.getInstance();
|
||||||
@Override
|
@Override
|
||||||
public int compare(ConversationChannel o1, ConversationChannel o2) {
|
public int compare(ConversationChannel o1, ConversationChannel o2) {
|
||||||
int labelComparison = sCollator.compare(o1.getShortcutInfo().getLabel(),
|
int labelComparison = 0;
|
||||||
o2.getShortcutInfo().getLabel());
|
if (o1.getShortcutInfo().getLabel() != null
|
||||||
|
&& o2.getShortcutInfo().getLabel() != null) {
|
||||||
|
labelComparison = sCollator.compare(
|
||||||
|
o1.getShortcutInfo().getLabel().toString(),
|
||||||
|
o2.getShortcutInfo().getLabel().toString());
|
||||||
|
}
|
||||||
|
|
||||||
if (labelComparison == 0) {
|
if (labelComparison == 0) {
|
||||||
return o1.getNotificationChannel().getId().compareTo(
|
return o1.getNotificationChannel().getId().compareTo(
|
||||||
|
@@ -36,6 +36,7 @@ import android.content.pm.ShortcutInfo;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.text.SpannedString;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
@@ -338,4 +339,36 @@ public class RecentConversationsPreferenceControllerTest {
|
|||||||
// one for the preference, none for 'clear all'
|
// one for the preference, none for 'clear all'
|
||||||
verify(outerContainer, times(1)).addPreference(any());
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user