summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhizhi Liu <zhizhiliu@google.com>2018-05-10 20:00:17 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-05-10 20:00:17 +0000
commit82cb599f28221115440f6c38ad88feff1cfa484f (patch)
tree0cea46a6422d8afad420cb5c8c2f0c765c4ed35a
parent5afb75a4d735bedba40fb1cf772163d53f528991 (diff)
parent1626b5631a4e997facdf209878ed7e71e9fedb8c (diff)
downloadTvSettings-82cb599f28221115440f6c38ad88feff1cfa484f.tar.gz
Merge "Ensure suggested settings summary is updated." into pi-dev
-rw-r--r--Settings/src/com/android/tv/settings/MainFragment.java18
-rw-r--r--Settings/tests/robotests/src/com/android/tv/settings/MainFragmentTest.java42
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());
+ }
}