diff --git a/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java b/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java index 0fcde265696..7fd8a2fd5e6 100644 --- a/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java +++ b/src/com/android/settings/homepage/contextualcards/EligibleCardChecker.java @@ -18,6 +18,8 @@ package com.android.settings.homepage.contextualcards; import static android.app.slice.Slice.HINT_ERROR; +import static com.android.settings.intelligence.ContextualCardProto.ContextualCard.Category.STICKY_VALUE; + import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; @@ -94,6 +96,11 @@ public class EligibleCardChecker implements Callable { return false; } + if (card.getCategory() == STICKY_VALUE) { + Log.d(TAG, "Sticky card, skip checking. Uri = " + card.getSliceUri()); + return true; + } + final Slice slice = bindSlice(uri); if (isSliceToggleable(slice)) { diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/EligibleCardCheckerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/EligibleCardCheckerTest.java index 23ae2f3a75c..e2369195308 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/EligibleCardCheckerTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/EligibleCardCheckerTest.java @@ -18,11 +18,15 @@ package com.android.settings.homepage.contextualcards; import static android.app.slice.Slice.HINT_ERROR; +import static com.android.settings.intelligence.ContextualCardProto.ContextualCard.Category.STICKY_VALUE; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import android.content.Context; import android.net.Uri; @@ -64,6 +68,32 @@ public class EligibleCardCheckerTest { assertThat(mEligibleCardChecker.isSliceToggleable(slice)).isTrue(); } + @Test + public void isCardEligibleToDisplay_stickyCard_returnTrue() { + final ContextualCard card = new ContextualCard.Builder() + .setName("test_card") + .setCardType(ContextualCard.CardType.SLICE) + .setCategory(STICKY_VALUE) + .setSliceUri(CustomSliceRegistry.FLASHLIGHT_SLICE_URI) + .build(); + + assertThat(mEligibleCardChecker.isCardEligibleToDisplay(card)).isTrue(); + } + + @Test + public void isCardEligibleToDisplay_stickyCard_shouldNotPrebind() { + final ContextualCard card = new ContextualCard.Builder() + .setName("test_card") + .setCardType(ContextualCard.CardType.SLICE) + .setCategory(STICKY_VALUE) + .setSliceUri(CustomSliceRegistry.FLASHLIGHT_SLICE_URI) + .build(); + + mEligibleCardChecker.isCardEligibleToDisplay(card); + + verify(mEligibleCardChecker, never()).bindSlice(CustomSliceRegistry.FLASHLIGHT_SLICE_URI); + } + @Test public void isCardEligibleToDisplay_toggleSlice_hasInlineActionShouldBeTrue() { final ContextualWifiSlice wifiSlice = new ContextualWifiSlice(mContext);