Do not prebind sticky slices.
We have a precheck mechanism to filter out slices that are not eligible to be displayed on the homepage. Since sticky cards are designed to be always available, which implies they will never be null, so skip prechecking on them. This allows us to prevent from the precheck timeout which usually leads to the disappearance of cards. Fixes: 152365480 Test: robotests Change-Id: Ic9e3df8b55609e9b5d1d3fd3a8d95e4086d3d7a4
This commit is contained in:
@@ -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<ContextualCard> {
|
||||
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)) {
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user