Only shows two suggestion cards at once.
Displaying too many cards may overwhelm users, so limit the number of suggestion cards that should be displayed to two. Fixes: 126213965 Test: robotests Change-Id: I17c43746f475b31121c5809e0e8c6cf932efb99d
This commit is contained in:
@@ -50,7 +50,7 @@ import java.util.concurrent.TimeoutException;
|
||||
public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>> {
|
||||
|
||||
@VisibleForTesting
|
||||
static final int DEFAULT_CARD_COUNT = 4;
|
||||
static final int DEFAULT_CARD_COUNT = 2;
|
||||
static final int CARD_CONTENT_LOADER_ID = 1;
|
||||
|
||||
private static final String TAG = "ContextualCardLoader";
|
||||
@@ -141,42 +141,19 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
// The maximum cards are four small cards OR
|
||||
// one large card with two small cards OR
|
||||
// two large cards
|
||||
if (visibleCards.size() <= 2 || getNumberOfLargeCard(visibleCards) == 0) {
|
||||
// four small cards
|
||||
return visibleCards;
|
||||
}
|
||||
if (!CardContentProvider.DELETE_CARD_URI.equals(mNotifyUri)) {
|
||||
final MetricsFeatureProvider metricsFeatureProvider =
|
||||
FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
|
||||
|
||||
if (visibleCards.size() == DEFAULT_CARD_COUNT) {
|
||||
hiddenCards.add(visibleCards.remove(visibleCards.size() - 1));
|
||||
}
|
||||
metricsFeatureProvider.action(mContext,
|
||||
SettingsEnums.ACTION_CONTEXTUAL_CARD_SHOW,
|
||||
ContextualCardLogUtils.buildCardListLog(visibleCards));
|
||||
|
||||
if (getNumberOfLargeCard(visibleCards) == 1) {
|
||||
// One large card with two small cards
|
||||
return visibleCards;
|
||||
}
|
||||
|
||||
hiddenCards.add(visibleCards.remove(visibleCards.size() - 1));
|
||||
|
||||
// Two large cards
|
||||
return visibleCards;
|
||||
} finally {
|
||||
if (!CardContentProvider.DELETE_CARD_URI.equals(mNotifyUri)) {
|
||||
final MetricsFeatureProvider metricsFeatureProvider =
|
||||
FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
|
||||
|
||||
metricsFeatureProvider.action(mContext,
|
||||
SettingsEnums.ACTION_CONTEXTUAL_CARD_SHOW,
|
||||
ContextualCardLogUtils.buildCardListLog(visibleCards));
|
||||
|
||||
metricsFeatureProvider.action(mContext,
|
||||
SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW,
|
||||
ContextualCardLogUtils.buildCardListLog(hiddenCards));
|
||||
}
|
||||
metricsFeatureProvider.action(mContext,
|
||||
SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW,
|
||||
ContextualCardLogUtils.buildCardListLog(hiddenCards));
|
||||
}
|
||||
return visibleCards;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -208,12 +185,6 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
||||
return cards;
|
||||
}
|
||||
|
||||
private int getNumberOfLargeCard(List<ContextualCard> cards) {
|
||||
return (int) cards.stream()
|
||||
.filter(card -> isLargeCard(card))
|
||||
.count();
|
||||
}
|
||||
|
||||
private boolean isLargeCard(ContextualCard card) {
|
||||
return card.getSliceUri().equals(CONTEXTUAL_WIFI_SLICE_URI)
|
||||
|| card.getSliceUri().equals(BLUETOOTH_DEVICES_SLICE_URI)
|
||||
|
Reference in New Issue
Block a user