From 23c51ac27a5b3e99d9ce6a2509c8aa4ca14f2d17 Mon Sep 17 00:00:00 2001 From: yueg Date: Tue, 26 Jun 2018 17:53:20 -0700 Subject: Fix SpeedDialUiItem.getDefaultVoiceChannel Test: SpeedDialUiItemTest PiperOrigin-RevId: 202228252 Change-Id: I72047d599a58a7932942fa8988d38e623fc2aeab --- .../dialer/speeddial/loader/SpeedDialUiItem.java | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'java/com/android') diff --git a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java index 9e227553b..4d268f35b 100644 --- a/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java +++ b/java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java @@ -263,14 +263,13 @@ public abstract class SpeedDialUiItem { return defaultChannel(); } - // Default channel is a video channel, so find it's corresponding voice channel - Channel prevChannel = channels().get(0); - for (int i = 1; i < channels().size(); i++) { - Channel currentChannel = channels().get(i); - if (currentChannel.equals(defaultChannel())) { - return prevChannel; + // Default channel is a video channel, so find it's corresponding voice channel by number since + // unreachable channels may not be in the list + for (Channel currentChannel : channels()) { + if (currentChannel.number().equals(defaultChannel().number()) + && currentChannel.technology() == Channel.VOICE) { + return currentChannel; } - prevChannel = currentChannel; } return null; } @@ -306,7 +305,8 @@ public abstract class SpeedDialUiItem { public abstract String photoUri(); /** - * Since a contact can have multiple phone numbers and each number can have multiple technologies, + * Returns a list of channels available. A Duo channel is included iff it is reachable. Since a + * contact can have multiple phone numbers and each number can have multiple technologies, * enumerate each one here so that the user can choose the correct one. Each channel here * represents a row in the {@link com.android.dialer.speeddial.DisambigDialog}. * @@ -330,7 +330,11 @@ public abstract class SpeedDialUiItem { public abstract ImmutableList channels(); /** - * Will be null when the user hasn't chosen a default yet. + * Will be null when the user hasn't chosen a default yet. Note that a default channel may not be + * in the list returned by {@link #channels()}. This is because that list does not contain an + * unreachable Duo channel. When the default channel is a Duo channel and it becomes unreachable, + * it will remain as the default channel but disappear in the list returned by {@link + * #channels()}. * * @see com.android.dialer.speeddial.database.SpeedDialEntry#defaultChannel() */ -- cgit v1.2.3