diff options
author | yueg <yueg@google.com> | 2018-06-26 17:53:20 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-27 11:07:02 -0700 |
commit | 23c51ac27a5b3e99d9ce6a2509c8aa4ca14f2d17 (patch) | |
tree | 644b7577080769c6b12871d52cdc5262c6b0b118 | |
parent | ab99dbe6ec1857fe35bde3bfc58032fdec59048d (diff) |
Fix SpeedDialUiItem.getDefaultVoiceChannel
Test: SpeedDialUiItemTest
PiperOrigin-RevId: 202228252
Change-Id: I72047d599a58a7932942fa8988d38e623fc2aeab
-rw-r--r-- | java/com/android/dialer/speeddial/loader/SpeedDialUiItem.java | 22 |
1 files changed, 13 insertions, 9 deletions
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<Channel> 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() */ |