Loading src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java +11 −40 Original line number Diff line number Diff line Loading @@ -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"; Loading Loading @@ -141,29 +141,6 @@ 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 (visibleCards.size() == DEFAULT_CARD_COUNT) { hiddenCards.add(visibleCards.remove(visibleCards.size() - 1)); } 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(); Loading @@ -176,7 +153,7 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard> SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW, ContextualCardLogUtils.buildCardListLog(hiddenCards)); } } return visibleCards; } @VisibleForTesting Loading Loading @@ -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) Loading tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java +12 −69 Original line number Diff line number Diff line Loading @@ -61,62 +61,33 @@ public class ContextualCardLoaderTest { } @Test public void getDisplayableCards_twoEligibleCards_shouldShowAll() { final List<ContextualCard> cards = getContextualCardList().stream().limit(2) .collect(Collectors.toList()); doReturn(cards).when(mContextualCardLoader).filterEligibleCards(anyList()); final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards(cards); assertThat(result).hasSize(cards.size()); } @Test public void getDisplayableCards_fiveEligibleCardsNoLarge_shouldShowDefaultCardCount() { final List<ContextualCard> fiveCards = getContextualCardListWithNoLargeCard(); doReturn(fiveCards).when(mContextualCardLoader).filterEligibleCards(anyList()); final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards( fiveCards); public void loadInBackground_legacyMode_shouldReturnNothing() { assertThat(mContext.getResources().getBoolean(R.bool.config_use_legacy_suggestion)) .isTrue(); assertThat(result).hasSize(DEFAULT_CARD_COUNT); assertThat(mContextualCardLoader.loadInBackground()).isEmpty(); } @Test public void getDisplayableCards_threeEligibleCardsOneLarge_shouldShowThreeCards() { public void getDisplayableCards_twoEligibleCards_shouldShowAll() { final List<ContextualCard> cards = getContextualCardList().stream().limit(2) .collect(Collectors.toList()); cards.add(new ContextualCard.Builder() .setName("test_gesture") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse( "content://com.android.settings.test.slices/action/gesture_pick_up")) .build()); doReturn(cards).when(mContextualCardLoader).filterEligibleCards(anyList()); final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards(cards); assertThat(result).hasSize(3); assertThat(result).hasSize(cards.size()); } @Test public void getDisplayableCards_threeEligibleCardsTwoLarge_shouldShowTwoCards() { final List<ContextualCard> threeCards = getContextualCardList().stream().limit(3) .collect(Collectors.toList()); doReturn(threeCards).when(mContextualCardLoader).filterEligibleCards(anyList()); final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards( threeCards); assertThat(result).hasSize(2); } public void getDisplayableCards_fourEligibleCards_shouldShowDefaultCardCount() { final List<ContextualCard> fourCards = getContextualCardList(); doReturn(fourCards).when(mContextualCardLoader).filterEligibleCards(anyList()); @Test public void loadInBackground_legacyMode_shouldReturnNothing() { assertThat(mContext.getResources().getBoolean(R.bool.config_use_legacy_suggestion)) .isTrue(); final List<ContextualCard> result = mContextualCardLoader .getDisplayableCards(fourCards); assertThat(mContextualCardLoader.loadInBackground()).isEmpty(); assertThat(result).hasSize(DEFAULT_CARD_COUNT); } @Test Loading Loading @@ -167,32 +138,4 @@ public class ContextualCardLoaderTest { .build()); return cards; } private List<ContextualCard> getContextualCardListWithNoLargeCard() { final List<ContextualCard> cards = new ArrayList<>(); cards.add(new ContextualCard.Builder() .setName("test_rotate") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri( Uri.parse("content://com.android.settings.test.slices/action/auto_rotate")) .build()); cards.add(new ContextualCard.Builder() .setName("test_flashlight") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri( Uri.parse("content://com.android.settings.test.slices/action/flashlight")) .build()); cards.add(new ContextualCard.Builder() .setName("test_bt") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse("content://android.settings.test.slices/action/bluetooth")) .build()); cards.add(new ContextualCard.Builder() .setName("test_gesture") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse( "content://com.android.settings.test.slices/action/gesture_pick_up")) .build()); return cards; } } Loading
src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java +11 −40 Original line number Diff line number Diff line Loading @@ -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"; Loading Loading @@ -141,29 +141,6 @@ 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 (visibleCards.size() == DEFAULT_CARD_COUNT) { hiddenCards.add(visibleCards.remove(visibleCards.size() - 1)); } 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(); Loading @@ -176,7 +153,7 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard> SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW, ContextualCardLogUtils.buildCardListLog(hiddenCards)); } } return visibleCards; } @VisibleForTesting Loading Loading @@ -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) Loading
tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java +12 −69 Original line number Diff line number Diff line Loading @@ -61,62 +61,33 @@ public class ContextualCardLoaderTest { } @Test public void getDisplayableCards_twoEligibleCards_shouldShowAll() { final List<ContextualCard> cards = getContextualCardList().stream().limit(2) .collect(Collectors.toList()); doReturn(cards).when(mContextualCardLoader).filterEligibleCards(anyList()); final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards(cards); assertThat(result).hasSize(cards.size()); } @Test public void getDisplayableCards_fiveEligibleCardsNoLarge_shouldShowDefaultCardCount() { final List<ContextualCard> fiveCards = getContextualCardListWithNoLargeCard(); doReturn(fiveCards).when(mContextualCardLoader).filterEligibleCards(anyList()); final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards( fiveCards); public void loadInBackground_legacyMode_shouldReturnNothing() { assertThat(mContext.getResources().getBoolean(R.bool.config_use_legacy_suggestion)) .isTrue(); assertThat(result).hasSize(DEFAULT_CARD_COUNT); assertThat(mContextualCardLoader.loadInBackground()).isEmpty(); } @Test public void getDisplayableCards_threeEligibleCardsOneLarge_shouldShowThreeCards() { public void getDisplayableCards_twoEligibleCards_shouldShowAll() { final List<ContextualCard> cards = getContextualCardList().stream().limit(2) .collect(Collectors.toList()); cards.add(new ContextualCard.Builder() .setName("test_gesture") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse( "content://com.android.settings.test.slices/action/gesture_pick_up")) .build()); doReturn(cards).when(mContextualCardLoader).filterEligibleCards(anyList()); final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards(cards); assertThat(result).hasSize(3); assertThat(result).hasSize(cards.size()); } @Test public void getDisplayableCards_threeEligibleCardsTwoLarge_shouldShowTwoCards() { final List<ContextualCard> threeCards = getContextualCardList().stream().limit(3) .collect(Collectors.toList()); doReturn(threeCards).when(mContextualCardLoader).filterEligibleCards(anyList()); final List<ContextualCard> result = mContextualCardLoader.getDisplayableCards( threeCards); assertThat(result).hasSize(2); } public void getDisplayableCards_fourEligibleCards_shouldShowDefaultCardCount() { final List<ContextualCard> fourCards = getContextualCardList(); doReturn(fourCards).when(mContextualCardLoader).filterEligibleCards(anyList()); @Test public void loadInBackground_legacyMode_shouldReturnNothing() { assertThat(mContext.getResources().getBoolean(R.bool.config_use_legacy_suggestion)) .isTrue(); final List<ContextualCard> result = mContextualCardLoader .getDisplayableCards(fourCards); assertThat(mContextualCardLoader.loadInBackground()).isEmpty(); assertThat(result).hasSize(DEFAULT_CARD_COUNT); } @Test Loading Loading @@ -167,32 +138,4 @@ public class ContextualCardLoaderTest { .build()); return cards; } private List<ContextualCard> getContextualCardListWithNoLargeCard() { final List<ContextualCard> cards = new ArrayList<>(); cards.add(new ContextualCard.Builder() .setName("test_rotate") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri( Uri.parse("content://com.android.settings.test.slices/action/auto_rotate")) .build()); cards.add(new ContextualCard.Builder() .setName("test_flashlight") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri( Uri.parse("content://com.android.settings.test.slices/action/flashlight")) .build()); cards.add(new ContextualCard.Builder() .setName("test_bt") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse("content://android.settings.test.slices/action/bluetooth")) .build()); cards.add(new ContextualCard.Builder() .setName("test_gesture") .setCardType(ContextualCard.CardType.SLICE) .setSliceUri(Uri.parse( "content://com.android.settings.test.slices/action/gesture_pick_up")) .build()); return cards; } }