Revert "Revert "Filter and display top 3 suggestions for exclusive type""
This reverts commit 184ae963e7
.
Change-Id: Iac60fc52a5b0c153945c22b97394546a529d3bb4
This commit is contained in:
@@ -41,12 +41,13 @@ import com.android.settings.dashboard.suggestions.SuggestionDismissController;
|
||||
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
|
||||
import com.android.settings.dashboard.suggestions.SuggestionsChecks;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.SuggestionParser;
|
||||
import com.android.settingslib.drawer.CategoryKey;
|
||||
import com.android.settingslib.drawer.DashboardCategory;
|
||||
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
||||
import com.android.settingslib.drawer.SettingsDrawerActivity.CategoryListener;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
import com.android.settingslib.suggestions.SuggestionList;
|
||||
import com.android.settingslib.suggestions.SuggestionParser;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -257,7 +258,9 @@ public class DashboardSummary extends InstrumentedFragment
|
||||
final Context context = getContext();
|
||||
boolean isSmartSuggestionEnabled =
|
||||
mSuggestionFeatureProvider.isSmartSuggestionEnabled(context);
|
||||
List<Tile> suggestions = mSuggestionParser.getSuggestions(isSmartSuggestionEnabled);
|
||||
final SuggestionList sl = mSuggestionParser.getSuggestions(isSmartSuggestionEnabled);
|
||||
final List<Tile> suggestions = sl.getSuggestions();
|
||||
|
||||
if (isSmartSuggestionEnabled) {
|
||||
List<String> suggestionIds = new ArrayList<>(suggestions.size());
|
||||
for (Tile suggestion : suggestions) {
|
||||
@@ -275,6 +278,9 @@ public class DashboardSummary extends InstrumentedFragment
|
||||
suggestions.remove(i--);
|
||||
}
|
||||
}
|
||||
if (sl.isExclusiveSuggestionCategory()) {
|
||||
mSuggestionFeatureProvider.filterExclusiveSuggestions(suggestions);
|
||||
}
|
||||
return suggestions;
|
||||
}
|
||||
|
||||
|
@@ -22,8 +22,8 @@ import android.support.v7.widget.helper.ItemTouchHelper;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.SuggestionParser;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
import com.android.settingslib.suggestions.SuggestionParser;
|
||||
|
||||
public class SuggestionDismissController extends ItemTouchHelper.SimpleCallback {
|
||||
|
||||
|
@@ -18,8 +18,8 @@ package com.android.settings.dashboard.suggestions;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.settingslib.SuggestionParser;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
import com.android.settingslib.suggestions.SuggestionParser;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -45,6 +45,11 @@ public interface SuggestionFeatureProvider {
|
||||
*/
|
||||
void rankSuggestions(final List<Tile> suggestions, List<String> suggestionIds);
|
||||
|
||||
/**
|
||||
* Only keep top few suggestions from exclusive suggestions.
|
||||
*/
|
||||
void filterExclusiveSuggestions(List<Tile> suggestions);
|
||||
|
||||
/**
|
||||
* Dismisses a suggestion.
|
||||
*/
|
||||
|
@@ -18,17 +18,21 @@ package com.android.settings.dashboard.suggestions;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.SuggestionParser;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
import com.android.settingslib.suggestions.SuggestionParser;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider {
|
||||
|
||||
private static final String TAG = "SuggestionFeature";
|
||||
private static final int EXCLUSIVE_SUGGESTION_MAX_COUNT = 3;
|
||||
|
||||
private final SuggestionRanker mSuggestionRanker;
|
||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||
|
||||
@@ -61,6 +65,17 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider
|
||||
mSuggestionRanker.rankSuggestions(suggestions, suggestionIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void filterExclusiveSuggestions(List<Tile> suggestions) {
|
||||
if (suggestions == null) {
|
||||
return;
|
||||
}
|
||||
for (int i = suggestions.size() - 1; i >= EXCLUSIVE_SUGGESTION_MAX_COUNT; i--) {
|
||||
Log.d(TAG, "Removing exclusive suggestion");
|
||||
suggestions.remove(i);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dismissSuggestion(Context context, SuggestionParser parser, Tile suggestion) {
|
||||
if (parser == null || suggestion == null || context == null) {
|
||||
|
@@ -24,8 +24,8 @@ import com.android.settings.R;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settingslib.SuggestionParser;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
import com.android.settingslib.suggestions.SuggestionParser;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@@ -24,8 +24,8 @@ import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import com.android.settingslib.SuggestionParser;
|
||||
import com.android.settingslib.drawer.Tile;
|
||||
import com.android.settingslib.suggestions.SuggestionParser;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -36,6 +36,9 @@ import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Matchers.anyBoolean;
|
||||
@@ -153,4 +156,20 @@ public class SuggestionFeatureProviderImplTest {
|
||||
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
|
||||
PackageManager.DONT_KILL_APP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void filterExclusiveSuggestions_shouldOnlyKeepFirst3() {
|
||||
final List<Tile> suggestions = new ArrayList<>();
|
||||
suggestions.add(new Tile());
|
||||
suggestions.add(new Tile());
|
||||
suggestions.add(new Tile());
|
||||
suggestions.add(new Tile());
|
||||
suggestions.add(new Tile());
|
||||
suggestions.add(new Tile());
|
||||
suggestions.add(new Tile());
|
||||
|
||||
mProvider.filterExclusiveSuggestions(suggestions);
|
||||
|
||||
assertThat(suggestions).hasSize(3);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user