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.SuggestionFeatureProvider;
|
||||||
import com.android.settings.dashboard.suggestions.SuggestionsChecks;
|
import com.android.settings.dashboard.suggestions.SuggestionsChecks;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.SuggestionParser;
|
|
||||||
import com.android.settingslib.drawer.CategoryKey;
|
import com.android.settingslib.drawer.CategoryKey;
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
||||||
import com.android.settingslib.drawer.SettingsDrawerActivity.CategoryListener;
|
import com.android.settingslib.drawer.SettingsDrawerActivity.CategoryListener;
|
||||||
import com.android.settingslib.drawer.Tile;
|
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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -257,7 +258,9 @@ public class DashboardSummary extends InstrumentedFragment
|
|||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
boolean isSmartSuggestionEnabled =
|
boolean isSmartSuggestionEnabled =
|
||||||
mSuggestionFeatureProvider.isSmartSuggestionEnabled(context);
|
mSuggestionFeatureProvider.isSmartSuggestionEnabled(context);
|
||||||
List<Tile> suggestions = mSuggestionParser.getSuggestions(isSmartSuggestionEnabled);
|
final SuggestionList sl = mSuggestionParser.getSuggestions(isSmartSuggestionEnabled);
|
||||||
|
final List<Tile> suggestions = sl.getSuggestions();
|
||||||
|
|
||||||
if (isSmartSuggestionEnabled) {
|
if (isSmartSuggestionEnabled) {
|
||||||
List<String> suggestionIds = new ArrayList<>(suggestions.size());
|
List<String> suggestionIds = new ArrayList<>(suggestions.size());
|
||||||
for (Tile suggestion : suggestions) {
|
for (Tile suggestion : suggestions) {
|
||||||
@@ -275,6 +278,9 @@ public class DashboardSummary extends InstrumentedFragment
|
|||||||
suggestions.remove(i--);
|
suggestions.remove(i--);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (sl.isExclusiveSuggestionCategory()) {
|
||||||
|
mSuggestionFeatureProvider.filterExclusiveSuggestions(suggestions);
|
||||||
|
}
|
||||||
return suggestions;
|
return suggestions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -22,8 +22,8 @@ import android.support.v7.widget.helper.ItemTouchHelper;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.SuggestionParser;
|
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
|
import com.android.settingslib.suggestions.SuggestionParser;
|
||||||
|
|
||||||
public class SuggestionDismissController extends ItemTouchHelper.SimpleCallback {
|
public class SuggestionDismissController extends ItemTouchHelper.SimpleCallback {
|
||||||
|
|
||||||
|
@@ -18,8 +18,8 @@ package com.android.settings.dashboard.suggestions;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.android.settingslib.SuggestionParser;
|
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
|
import com.android.settingslib.suggestions.SuggestionParser;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -45,6 +45,11 @@ public interface SuggestionFeatureProvider {
|
|||||||
*/
|
*/
|
||||||
void rankSuggestions(final List<Tile> suggestions, List<String> suggestionIds);
|
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.
|
* Dismisses a suggestion.
|
||||||
*/
|
*/
|
||||||
|
@@ -18,17 +18,21 @@ package com.android.settings.dashboard.suggestions;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.SuggestionParser;
|
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
|
import com.android.settingslib.suggestions.SuggestionParser;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider {
|
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 SuggestionRanker mSuggestionRanker;
|
||||||
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
|
|
||||||
@@ -61,6 +65,17 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider
|
|||||||
mSuggestionRanker.rankSuggestions(suggestions, suggestionIds);
|
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
|
@Override
|
||||||
public void dismissSuggestion(Context context, SuggestionParser parser, Tile suggestion) {
|
public void dismissSuggestion(Context context, SuggestionParser parser, Tile suggestion) {
|
||||||
if (parser == null || suggestion == null || context == null) {
|
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.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settingslib.SuggestionParser;
|
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
|
import com.android.settingslib.suggestions.SuggestionParser;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@@ -24,8 +24,8 @@ import com.android.internal.logging.nano.MetricsProto;
|
|||||||
import com.android.settings.SettingsRobolectricTestRunner;
|
import com.android.settings.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settingslib.SuggestionParser;
|
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
|
import com.android.settingslib.suggestions.SuggestionParser;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -36,6 +36,9 @@ import org.mockito.MockitoAnnotations;
|
|||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.mockito.Matchers.any;
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Matchers.anyBoolean;
|
import static org.mockito.Matchers.anyBoolean;
|
||||||
@@ -153,4 +156,20 @@ public class SuggestionFeatureProviderImplTest {
|
|||||||
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
|
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
|
||||||
PackageManager.DONT_KILL_APP);
|
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