Merge "Make contextual card count configurable."
diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
index b9b8b87..17a226d 100644
--- a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
+++ b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
@@ -27,6 +27,7 @@
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
+import android.provider.Settings;
import android.util.Log;
import androidx.annotation.NonNull;
@@ -50,6 +51,8 @@
@VisibleForTesting
static final int DEFAULT_CARD_COUNT = 3;
+ @VisibleForTesting
+ static final String CONTEXTUAL_CARD_COUNT = "contextual_card_count";
static final int CARD_CONTENT_LOADER_ID = 1;
private static final String TAG = "ContextualCardLoader";
@@ -130,8 +133,9 @@
final List<ContextualCard> hiddenCards = new ArrayList<>();
final int size = eligibleCards.size();
+ final int cardCount = getCardCount();
for (int i = 0; i < size; i++) {
- if (i < DEFAULT_CARD_COUNT) {
+ if (i < cardCount) {
visibleCards.add(eligibleCards.get(i));
} else {
hiddenCards.add(eligibleCards.get(i));
@@ -150,6 +154,14 @@
}
@VisibleForTesting
+ int getCardCount() {
+ // Return the card count if Settings.Global has KEY_CONTEXTUAL_CARD_COUNT key,
+ // otherwise return the default one.
+ return Settings.Global.getInt(mContext.getContentResolver(),
+ CONTEXTUAL_CARD_COUNT, DEFAULT_CARD_COUNT);
+ }
+
+ @VisibleForTesting
Cursor getContextualCardsFromProvider() {
return CardDatabaseHelper.getInstance(mContext).getContextualCards();
}
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
index e8d7713..00993f6 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardLoaderTest.java
@@ -31,6 +31,7 @@
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.net.Uri;
+import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.slices.CustomSliceRegistry;
@@ -110,6 +111,20 @@
eq(SettingsEnums.ACTION_CONTEXTUAL_CARD_NOT_SHOW), any(String.class));
}
+ @Test
+ public void getCardCount_noConfiguredCardCount_returnDefaultCardCount() {
+ assertThat(mContextualCardLoader.getCardCount()).isEqualTo(DEFAULT_CARD_COUNT);
+ }
+
+ @Test
+ public void getCardCount_hasConfiguredCardCount_returnConfiguredCardCount() {
+ int configCount = 4;
+ Settings.Global.putLong(mContext.getContentResolver(),
+ ContextualCardLoader.CONTEXTUAL_CARD_COUNT, configCount);
+
+ assertThat(mContextualCardLoader.getCardCount()).isEqualTo(configCount);
+ }
+
private List<ContextualCard> getContextualCardList() {
final List<ContextualCard> cards = new ArrayList<>();
cards.add(new ContextualCard.Builder()