Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15524dba authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Only shows two suggestion cards at once." into qt-dev

parents 116d4f14 ec01bff5
Loading
Loading
Loading
Loading
+11 −40
Original line number Diff line number Diff line
@@ -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,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();
@@ -176,7 +153,7 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
                    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)
+12 −69
Original line number Diff line number Diff line
@@ -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
@@ -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;
    }
}