Tint battery fix icon
Fixes: 129492004 Test: manual Change-Id: I161284619bc47e342d78f1507ae291f7c23ad3ff
This commit is contained in:
@@ -160,7 +160,7 @@ public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable {
|
||||
}
|
||||
|
||||
/** Returns the color resid for tinting {@link #getIconId()} or {@link View#NO_ID} if none. */
|
||||
protected @IdRes int getIconTintColorId() {
|
||||
public @IdRes int getIconTintColorId() {
|
||||
return View.NO_ID;
|
||||
}
|
||||
|
||||
|
@@ -25,6 +25,9 @@ import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.PorterDuffColorFilter;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.util.ArrayMap;
|
||||
|
||||
@@ -39,6 +42,7 @@ import androidx.slice.builders.SliceAction;
|
||||
import com.android.internal.os.BatteryStatsHelper;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SubSettings;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.fuelgauge.BatteryStatsHelperLoader;
|
||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
|
||||
@@ -107,8 +111,12 @@ public class BatteryFixSlice implements CustomSliceable {
|
||||
if (batteryTip.getState() == BatteryTip.StateType.INVISIBLE) {
|
||||
continue;
|
||||
}
|
||||
final IconCompat icon = IconCompat.createWithResource(mContext,
|
||||
batteryTip.getIconId());
|
||||
final Drawable drawable = mContext.getDrawable(batteryTip.getIconId());
|
||||
drawable.setColorFilter(new PorterDuffColorFilter(
|
||||
mContext.getResources().getColor(batteryTip.getIconTintColorId()),
|
||||
PorterDuff.Mode.SRC_IN));
|
||||
|
||||
final IconCompat icon = Utils.createIconWithDrawable(drawable);
|
||||
final SliceAction primaryAction = SliceAction.createDeeplink(getPrimaryAction(),
|
||||
icon,
|
||||
ListBuilder.ICON_IMAGE,
|
||||
|
@@ -18,7 +18,11 @@ package com.android.settings.homepage.contextualcards.slices;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
|
||||
import androidx.slice.Slice;
|
||||
import androidx.slice.SliceMetadata;
|
||||
@@ -26,11 +30,13 @@ import androidx.slice.SliceProvider;
|
||||
import androidx.slice.widget.SliceLiveData;
|
||||
|
||||
import com.android.internal.os.BatteryStatsHelper;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.fuelgauge.BatteryStatsHelperLoader;
|
||||
import com.android.settings.fuelgauge.batterytip.BatteryTipLoader;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.EarlyWarningTip;
|
||||
import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip;
|
||||
import com.android.settings.slices.SliceBackgroundWorker;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@@ -48,6 +54,10 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = {
|
||||
BatteryFixSliceTest.ShadowBatteryStatsHelperLoader.class,
|
||||
BatteryFixSliceTest.ShadowBatteryTipLoader.class
|
||||
})
|
||||
public class BatteryFixSliceTest {
|
||||
|
||||
private Context mContext;
|
||||
@@ -66,13 +76,11 @@ public class BatteryFixSliceTest {
|
||||
@After
|
||||
public void tearDown() {
|
||||
ShadowBatteryTipLoader.reset();
|
||||
ShadowSliceBackgroundWorker.reset();
|
||||
ShadowEarlyWarningTip.reset();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = {
|
||||
ShadowBatteryStatsHelperLoader.class,
|
||||
ShadowBatteryTipLoader.class
|
||||
})
|
||||
public void updateBatteryTipAvailabilityCache_hasImportantTip_shouldReturnTrue() {
|
||||
final List<BatteryTip> tips = new ArrayList<>();
|
||||
tips.add(new LowBatteryTip(BatteryTip.StateType.INVISIBLE, false, ""));
|
||||
@@ -85,10 +93,6 @@ public class BatteryFixSliceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = {
|
||||
ShadowBatteryStatsHelperLoader.class,
|
||||
ShadowBatteryTipLoader.class
|
||||
})
|
||||
public void getSlice_unimportantSlice_shouldSkip() {
|
||||
final List<BatteryTip> tips = new ArrayList<>();
|
||||
tips.add(new LowBatteryTip(BatteryTip.StateType.INVISIBLE, false, ""));
|
||||
@@ -101,6 +105,28 @@ public class BatteryFixSliceTest {
|
||||
assertThat(SliceMetadata.from(mContext, slice).isErrorSlice()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = {
|
||||
BatteryFixSliceTest.ShadowEarlyWarningTip.class,
|
||||
BatteryFixSliceTest.ShadowSliceBackgroundWorker.class
|
||||
})
|
||||
public void getSlice_hasImportantTip_shouldTintIcon() {
|
||||
final List<BatteryTip> tips = new ArrayList<>();
|
||||
tips.add(new EarlyWarningTip(BatteryTip.StateType.NEW, false));
|
||||
// Create fake cache data
|
||||
ShadowBatteryTipLoader.setBatteryTips(tips);
|
||||
BatteryFixSlice.updateBatteryTipAvailabilityCache(mContext);
|
||||
// Create fake background worker data
|
||||
BatteryFixSlice.BatteryTipWorker batteryTipWorker = mock(
|
||||
BatteryFixSlice.BatteryTipWorker.class);
|
||||
when(batteryTipWorker.getResults()).thenReturn(tips);
|
||||
ShadowSliceBackgroundWorker.setBatteryTipWorkerWorker(batteryTipWorker);
|
||||
|
||||
final Slice slice = mSlice.getSlice();
|
||||
|
||||
assertThat(ShadowEarlyWarningTip.isIconTintColorIdCalled()).isTrue();
|
||||
}
|
||||
|
||||
@Implements(BatteryStatsHelperLoader.class)
|
||||
public static class ShadowBatteryStatsHelperLoader {
|
||||
|
||||
@@ -129,4 +155,45 @@ public class BatteryFixSliceTest {
|
||||
sBatteryTips = tips;
|
||||
}
|
||||
}
|
||||
|
||||
@Implements(SliceBackgroundWorker.class)
|
||||
public static class ShadowSliceBackgroundWorker {
|
||||
|
||||
private static BatteryFixSlice.BatteryTipWorker sBatteryTipWorkerWorker;
|
||||
|
||||
@Resetter
|
||||
public static void reset() {
|
||||
sBatteryTipWorkerWorker = null;
|
||||
}
|
||||
|
||||
@Implementation
|
||||
protected static <T extends SliceBackgroundWorker> T getInstance(Uri uri) {
|
||||
return (T) sBatteryTipWorkerWorker;
|
||||
}
|
||||
|
||||
public static void setBatteryTipWorkerWorker(BatteryFixSlice.BatteryTipWorker worker) {
|
||||
sBatteryTipWorkerWorker = worker;
|
||||
}
|
||||
}
|
||||
|
||||
@Implements(EarlyWarningTip.class)
|
||||
public static class ShadowEarlyWarningTip {
|
||||
|
||||
private static boolean mIsGetIconTintColorIdCalled;
|
||||
|
||||
@Resetter
|
||||
public static void reset() {
|
||||
mIsGetIconTintColorIdCalled = false;
|
||||
}
|
||||
|
||||
@Implementation
|
||||
protected int getIconTintColorId() {
|
||||
mIsGetIconTintColorIdCalled = true;
|
||||
return R.color.battery_bad_color_light;
|
||||
}
|
||||
|
||||
public static boolean isIconTintColorIdCalled() {
|
||||
return mIsGetIconTintColorIdCalled;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user