diff options
author | Zhizhi Liu <zhizhiliu@google.com> | 2018-05-10 20:00:17 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-05-10 20:00:17 +0000 |
commit | 82cb599f28221115440f6c38ad88feff1cfa484f (patch) | |
tree | 0cea46a6422d8afad420cb5c8c2f0c765c4ed35a | |
parent | 5afb75a4d735bedba40fb1cf772163d53f528991 (diff) | |
parent | 1626b5631a4e997facdf209878ed7e71e9fedb8c (diff) | |
download | TvSettings-82cb599f28221115440f6c38ad88feff1cfa484f.tar.gz |
Merge "Ensure suggested settings summary is updated." into pi-dev
-rw-r--r-- | Settings/src/com/android/tv/settings/MainFragment.java | 18 | ||||
-rw-r--r-- | Settings/tests/robotests/src/com/android/tv/settings/MainFragmentTest.java | 42 |
2 files changed, 55 insertions, 5 deletions
diff --git a/Settings/src/com/android/tv/settings/MainFragment.java b/Settings/src/com/android/tv/settings/MainFragment.java index 94862eb05..5b53c3aac 100644 --- a/Settings/src/com/android/tv/settings/MainFragment.java +++ b/Settings/src/com/android/tv/settings/MainFragment.java @@ -45,7 +45,6 @@ import com.android.tv.settings.system.SecurityFragment; import java.util.List; import java.util.Set; - /** * The fragment where all good things begin. Evil is handled elsewhere. */ @@ -64,9 +63,11 @@ public class MainFragment extends SettingsPreferenceFragment implements @VisibleForTesting ConnectivityListener mConnectivityListener; - private PreferenceCategory mSuggestionsList; + @VisibleForTesting + PreferenceCategory mSuggestionsList; private SuggestionControllerMixin mSuggestionControllerMixin; - private IconCache mIconCache; + @VisibleForTesting + IconCache mIconCache; @VisibleForTesting BluetoothAdapter mBtAdapter; @VisibleForTesting @@ -222,7 +223,8 @@ public class MainFragment extends SettingsPreferenceFragment implements updateSuggestionList(data); } - private void updateSuggestionList(List<Suggestion> suggestions) { + @VisibleForTesting + void updateSuggestionList(List<Suggestion> suggestions) { // Remove suggestions that are not in the new list. for (int i = 0; i < mSuggestionsList.getPreferenceCount(); i++) { SuggestionPreference pref = (SuggestionPreference) mSuggestionsList.getPreference(i); @@ -238,7 +240,7 @@ public class MainFragment extends SettingsPreferenceFragment implements } } - // Add suggestions that are not in the old list. + // Add suggestions that are not in the old list and update the existing suggestions. for (Suggestion suggestion : suggestions) { Preference curPref = findPreference( SuggestionPreference.SUGGESTION_PREFERENCE_KEY + suggestion.getId()); @@ -250,6 +252,12 @@ public class MainFragment extends SettingsPreferenceFragment implements newSuggPref.setTitle(suggestion.getTitle()); newSuggPref.setSummary(suggestion.getSummary()); mSuggestionsList.addPreference(newSuggPref); + } else { + // Even though the id of suggestion might not change, the details could change. + // So we need to update icon, title and summary for the suggestions. + curPref.setIcon(mIconCache.getIcon(suggestion.getIcon())); + curPref.setTitle(suggestion.getTitle()); + curPref.setSummary(suggestion.getSummary()); } } } diff --git a/Settings/tests/robotests/src/com/android/tv/settings/MainFragmentTest.java b/Settings/tests/robotests/src/com/android/tv/settings/MainFragmentTest.java index ad291471d..4433f8ed2 100644 --- a/Settings/tests/robotests/src/com/android/tv/settings/MainFragmentTest.java +++ b/Settings/tests/robotests/src/com/android/tv/settings/MainFragmentTest.java @@ -18,6 +18,7 @@ package com.android.tv.settings; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doReturn; @@ -29,10 +30,15 @@ import android.accounts.Account; import android.accounts.AccountManager; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; +import android.service.settings.suggestions.Suggestion; import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceCategory; +import android.support.v7.preference.PreferenceManager; import android.telephony.SignalStrength; +import com.android.settingslib.utils.IconCache; import com.android.tv.settings.connectivity.ConnectivityListener; +import com.android.tv.settings.suggestions.SuggestionPreference; import com.android.tv.settings.testutils.ShadowUserManager; import org.junit.Before; @@ -44,7 +50,9 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowAccountManager; +import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; @RunWith(TvSettingsRobolectricTestRunner.class) @@ -306,4 +314,38 @@ public class MainFragmentTest { assertTrue(mMainFragment.mHasBtAccessories); } + + @Test + public void testUpdateSuggestionList_hasTheSameSuggestion() { + SuggestionPreference pref = mock(SuggestionPreference.class); + PreferenceCategory suggestionCategory = mock(PreferenceCategory.class); + Suggestion suggestion = new Suggestion.Builder("xyz").setSummary("abc").build(); + List<Suggestion> suggestions = Arrays.asList(suggestion); + mMainFragment.mSuggestionsList = suggestionCategory; + doReturn(pref).when(mMainFragment) + .findPreference(SuggestionPreference.SUGGESTION_PREFERENCE_KEY + "xyz"); + mMainFragment.mIconCache = mock(IconCache.class); + + mMainFragment.updateSuggestionList(suggestions); + + verify(pref, atLeastOnce()).setSummary("abc"); + } + + @Test + public void testUpdateSuggestionList_hasNewSuggestion() { + PreferenceCategory suggestionCategory = mock(PreferenceCategory.class); + Suggestion suggestion = new Suggestion.Builder("xyz").setSummary("abc").build(); + List<Suggestion> suggestions = Arrays.asList(suggestion); + mMainFragment.mSuggestionsList = suggestionCategory; + PreferenceManager preferenceManager = mock(PreferenceManager.class); + doReturn(preferenceManager).when(mMainFragment).getPreferenceManager(); + doReturn(RuntimeEnvironment.application).when(preferenceManager).getContext(); + doReturn(null).when(mMainFragment) + .findPreference(SuggestionPreference.SUGGESTION_PREFERENCE_KEY + "xyz"); + mMainFragment.mIconCache = mock(IconCache.class); + + mMainFragment.updateSuggestionList(suggestions); + + verify(suggestionCategory, atLeastOnce()).addPreference(any()); + } } |