diff --git a/packages/SystemUI/res/drawable/qs_battery_saver_icon_off.xml b/packages/SystemUI/res/drawable/qs_battery_saver_icon_off.xml new file mode 100644 index 0000000000000..7b9f23d133eac --- /dev/null +++ b/packages/SystemUI/res/drawable/qs_battery_saver_icon_off.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/SystemUI/res/drawable/qs_battery_saver_icon_on.xml b/packages/SystemUI/res/drawable/qs_battery_saver_icon_on.xml new file mode 100644 index 0000000000000..5e4af398e0174 --- /dev/null +++ b/packages/SystemUI/res/drawable/qs_battery_saver_icon_on.xml @@ -0,0 +1,636 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java index 1004fcae38277..ee49b294dfcd1 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java @@ -57,8 +57,6 @@ public class BatterySaverTile extends QSTileImpl implements private boolean mCharging; private boolean mPluggedIn; - private Icon mIcon = ResourceIcon.get(com.android.internal.R.drawable.ic_qs_battery_saver); - @Inject public BatterySaverTile( QSHost host, @@ -145,7 +143,9 @@ public class BatterySaverTile extends QSTileImpl implements protected void handleUpdateState(BooleanState state, Object arg) { state.state = mPluggedIn ? Tile.STATE_UNAVAILABLE : mPowerSave ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE; - state.icon = mIcon; + state.icon = ResourceIcon.get(mPowerSave + ? R.drawable.qs_battery_saver_icon_on + : R.drawable.qs_battery_saver_icon_off); state.label = mContext.getString(R.string.battery_detail_switch_title); state.secondaryLabel = ""; state.contentDescription = state.label; diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt index 3d9205ee03540..95e7ad9fad4d4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt @@ -24,15 +24,19 @@ import android.testing.TestableLooper.RunWithLooper import android.view.View import androidx.test.filters.SmallTest import com.android.internal.logging.MetricsLogger +import com.android.systemui.R import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingManagerFake import com.android.systemui.plugins.ActivityStarter +import com.android.systemui.plugins.qs.QSTile import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.qs.QSHost import com.android.systemui.qs.logging.QSLogger +import com.android.systemui.qs.tileimpl.QSTileImpl import com.android.systemui.statusbar.policy.BatteryController import com.android.systemui.util.settings.FakeSettings import com.android.systemui.util.settings.SecureSettings +import com.google.common.truth.Truth.assertThat import org.junit.Assert.assertEquals import org.junit.Before import org.junit.Test @@ -77,6 +81,7 @@ class BatterySaverTileTest : SysuiTestCase() { fun setUp() { MockitoAnnotations.initMocks(this) testableLooper = TestableLooper.get(this) + `when`(qsHost.context).thenReturn(mContext) `when`(qsHost.userContext).thenReturn(userContext) `when`(userContext.userId).thenReturn(USER) @@ -133,4 +138,26 @@ class BatterySaverTileTest : SysuiTestCase() { tile.handleSetListening(false) verify(batteryController).clearLastPowerSaverStartView() } + + @Test + fun testIcon_whenBatterySaverDisabled_isOffState() { + val state = QSTile.BooleanState() + tile.onPowerSaveChanged(false) + + tile.handleUpdateState(state, /* arg= */ null) + + assertThat(state.icon) + .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_battery_saver_icon_off)) + } + + @Test + fun testIcon_whenBatterySaverEnabled_isOnState() { + val state = QSTile.BooleanState() + tile.onPowerSaveChanged(true) + + tile.handleUpdateState(state, /* arg= */ null) + + assertThat(state.icon) + .isEqualTo(QSTileImpl.ResourceIcon.get(R.drawable.qs_battery_saver_icon_on)) + } } \ No newline at end of file