diff --git a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java index 531501b3b5e..c0cfb3f1430 100644 --- a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java +++ b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java @@ -25,7 +25,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; -import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.annotation.WorkerThread; @@ -49,6 +48,7 @@ import com.android.settings.slices.SliceBackgroundWorker; import com.android.settings.slices.SliceBuilderUtils; import com.android.settingslib.utils.ThreadUtils; +import java.util.Arrays; import java.util.List; public class BatteryFixSlice implements CustomSliceable { @@ -58,6 +58,11 @@ public class BatteryFixSlice implements CustomSliceable { @VisibleForTesting static final String KEY_CURRENT_TIPS_TYPE = "current_tip_type"; + private static final List UNIMPORTANT_BATTERY_TIPS = Arrays.asList( + BatteryTip.TipType.SUMMARY, + BatteryTip.TipType.BATTERY_SAVER + ); + private static final String TAG = "BatteryFixSlice"; private final Context mContext; @@ -78,7 +83,7 @@ public class BatteryFixSlice implements CustomSliceable { .setAccentColor(-1); // TipType.SUMMARY is battery good - if (readBatteryTipAvailabilityCache(mContext) == BatteryTip.TipType.SUMMARY) { + if (UNIMPORTANT_BATTERY_TIPS.contains(readBatteryTipAvailabilityCache(mContext))) { return buildBatteryGoodSlice(sliceBuilder, true); } @@ -91,19 +96,21 @@ public class BatteryFixSlice implements CustomSliceable { } for (BatteryTip batteryTip : batteryTips) { - if (batteryTip.getState() != BatteryTip.StateType.INVISIBLE) { - final IconCompat icon = IconCompat.createWithResource(mContext, batteryTip.getIconId()); - final SliceAction primaryAction = SliceAction.createDeeplink(getPrimaryAction(), - icon, - ListBuilder.ICON_IMAGE, - batteryTip.getTitle(mContext)); - sliceBuilder.addRow(new RowBuilder() - .setTitleItem(icon, ListBuilder.ICON_IMAGE) - .setTitle(batteryTip.getTitle(mContext)) - .setSubtitle(batteryTip.getSummary(mContext)) - .setPrimaryAction(primaryAction)); - break; + if (batteryTip.getState() == BatteryTip.StateType.INVISIBLE) { + continue; } + final IconCompat icon = IconCompat.createWithResource(mContext, + batteryTip.getIconId()); + final SliceAction primaryAction = SliceAction.createDeeplink(getPrimaryAction(), + icon, + ListBuilder.ICON_IMAGE, + batteryTip.getTitle(mContext)); + sliceBuilder.addRow(new RowBuilder() + .setTitleItem(icon, ListBuilder.ICON_IMAGE) + .setTitle(batteryTip.getTitle(mContext)) + .setSubtitle(batteryTip.getSummary(mContext)) + .setPrimaryAction(primaryAction)); + break; } return sliceBuilder.build(); } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java index ff08c6aa312..1c299cb6c40 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSliceTest.java @@ -26,6 +26,8 @@ import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.content.SharedPreferences; +import androidx.slice.Slice; +import androidx.slice.SliceMetadata; import androidx.slice.SliceProvider; import androidx.slice.widget.SliceLiveData; @@ -55,11 +57,13 @@ import java.util.List; public class BatteryFixSliceTest { private Context mContext; + private BatteryFixSlice mSlice; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; + mSlice = new BatteryFixSlice(mContext); // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); @@ -71,7 +75,7 @@ public class BatteryFixSliceTest { } @Test - public void readBatteryTipfromPref_readCorrectValue() { + public void readBatteryTipFromPref_readCorrectValue() { int target = 111; final SharedPreferences.Editor editor = mContext.getSharedPreferences(PREFS, MODE_PRIVATE).edit(); @@ -90,7 +94,7 @@ public class BatteryFixSliceTest { public void updateBatteryTipAvailabilityCache_writeCorrectValue() { final List tips = new ArrayList<>(); tips.add(new LowBatteryTip(BatteryTip.StateType.INVISIBLE, false, "")); - tips.add(new EarlyWarningTip(BatteryTip.StateType.HANDLED, false)); + tips.add(new EarlyWarningTip(BatteryTip.StateType.NEW, false)); ShadowBatteryTipLoader.setBatteryTips(tips); BatteryFixSlice.updateBatteryTipAvailabilityCache(mContext); @@ -99,6 +103,23 @@ public class BatteryFixSliceTest { BatteryTip.TipType.BATTERY_SAVER); } + @Test + @Config(shadows = { + ShadowBatteryStatsHelperLoader.class, + ShadowBatteryTipLoader.class + }) + public void getSlice_unimportantSlice_shouldSkip() { + final List tips = new ArrayList<>(); + tips.add(new LowBatteryTip(BatteryTip.StateType.INVISIBLE, false, "")); + tips.add(new EarlyWarningTip(BatteryTip.StateType.NEW, false)); + ShadowBatteryTipLoader.setBatteryTips(tips); + + BatteryFixSlice.updateBatteryTipAvailabilityCache(mContext); + final Slice slice = mSlice.getSlice(); + + assertThat(SliceMetadata.from(mContext, slice).isErrorSlice()).isTrue(); + } + @Implements(BatteryStatsHelperLoader.class) public static class ShadowBatteryStatsHelperLoader {