Fix the battery icon on the battery page when low battery
Check power-saving state for drawing the battery icon on the battery page. It will draw red + icon as status-bar did when battery saver is on. Change-Id: Iee4a17c8e5cb3c8ee5d978eb23e3980597d09a1c Fixes: 77150820 Test: Manual test, atest BatteryMeterViewTest BatteryHeaderPreferenceControllerTest
This commit is contained in:
@@ -22,6 +22,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.os.BatteryManager;
|
import android.os.BatteryManager;
|
||||||
|
import android.os.PowerManager;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.PreferenceFragment;
|
import androidx.preference.PreferenceFragment;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
@@ -57,6 +58,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
|
|||||||
private final Activity mActivity;
|
private final Activity mActivity;
|
||||||
private final PreferenceFragment mHost;
|
private final PreferenceFragment mHost;
|
||||||
private final Lifecycle mLifecycle;
|
private final Lifecycle mLifecycle;
|
||||||
|
private final PowerManager mPowerManager;
|
||||||
|
|
||||||
private LayoutPreference mBatteryLayoutPref;
|
private LayoutPreference mBatteryLayoutPref;
|
||||||
|
|
||||||
@@ -69,6 +71,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
|
|||||||
if (mLifecycle != null) {
|
if (mLifecycle != null) {
|
||||||
mLifecycle.addObserver(this);
|
mLifecycle.addObserver(this);
|
||||||
}
|
}
|
||||||
|
mPowerManager = context.getSystemService(PowerManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -115,6 +118,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
|
|||||||
|
|
||||||
mBatteryMeterView.setBatteryLevel(info.batteryLevel);
|
mBatteryMeterView.setBatteryLevel(info.batteryLevel);
|
||||||
mBatteryMeterView.setCharging(!info.discharging);
|
mBatteryMeterView.setCharging(!info.discharging);
|
||||||
|
mBatteryMeterView.setPowerSave(mPowerManager.isPowerSaveMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void quickUpdateHeaderPreference() {
|
public void quickUpdateHeaderPreference() {
|
||||||
@@ -127,6 +131,7 @@ public class BatteryHeaderPreferenceController extends AbstractPreferenceControl
|
|||||||
// Set battery level and charging status
|
// Set battery level and charging status
|
||||||
mBatteryMeterView.setBatteryLevel(batteryLevel);
|
mBatteryMeterView.setBatteryLevel(batteryLevel);
|
||||||
mBatteryMeterView.setCharging(!discharging);
|
mBatteryMeterView.setCharging(!discharging);
|
||||||
|
mBatteryMeterView.setPowerSave(mPowerManager.isPowerSaveMode());
|
||||||
mBatteryPercentText.setText(Utils.formatPercentage(batteryLevel));
|
mBatteryPercentText.setText(Utils.formatPercentage(batteryLevel));
|
||||||
|
|
||||||
// clear all the summaries
|
// clear all the summaries
|
||||||
|
@@ -37,6 +37,7 @@ public class BatteryMeterView extends ImageView {
|
|||||||
ColorFilter mErrorColorFilter;
|
ColorFilter mErrorColorFilter;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
ColorFilter mAccentColorFilter;
|
ColorFilter mAccentColorFilter;
|
||||||
|
private boolean mPowerSaveEnabled;
|
||||||
|
|
||||||
public BatteryMeterView(Context context) {
|
public BatteryMeterView(Context context) {
|
||||||
this(context, null, 0);
|
this(context, null, 0);
|
||||||
@@ -73,6 +74,15 @@ public class BatteryMeterView extends ImageView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPowerSave(boolean powerSave) {
|
||||||
|
mDrawable.setPowerSave(powerSave);
|
||||||
|
mPowerSaveEnabled = powerSave;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getPowerSave() {
|
||||||
|
return mPowerSaveEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
public int getBatteryLevel() {
|
public int getBatteryLevel() {
|
||||||
return mDrawable.getBatteryLevel();
|
return mDrawable.getBatteryLevel();
|
||||||
}
|
}
|
||||||
|
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.doReturn;
|
|||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
import static org.robolectric.Shadows.shadowOf;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import androidx.lifecycle.LifecycleOwner;
|
import androidx.lifecycle.LifecycleOwner;
|
||||||
@@ -33,6 +34,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.BatteryManager;
|
import android.os.BatteryManager;
|
||||||
import androidx.preference.PreferenceFragment;
|
import androidx.preference.PreferenceFragment;
|
||||||
|
import android.os.PowerManager;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
@@ -52,8 +54,9 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.shadows.ShadowPowerManager;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(shadows = {
|
@Config(shadows = {
|
||||||
@@ -80,6 +83,7 @@ public class BatteryHeaderPreferenceControllerTest {
|
|||||||
private EntityHeaderController mEntityHeaderController;
|
private EntityHeaderController mEntityHeaderController;
|
||||||
private BatteryHeaderPreferenceController mController;
|
private BatteryHeaderPreferenceController mController;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
private PowerManager mPowerManager;
|
||||||
private BatteryMeterView mBatteryMeterView;
|
private BatteryMeterView mBatteryMeterView;
|
||||||
private TextView mBatteryPercentText;
|
private TextView mBatteryPercentText;
|
||||||
private TextView mSummary;
|
private TextView mSummary;
|
||||||
@@ -114,6 +118,8 @@ public class BatteryHeaderPreferenceControllerTest {
|
|||||||
|
|
||||||
mBatteryInfo.batteryLevel = BATTERY_LEVEL;
|
mBatteryInfo.batteryLevel = BATTERY_LEVEL;
|
||||||
|
|
||||||
|
mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
|
||||||
|
|
||||||
mController = new BatteryHeaderPreferenceController(
|
mController = new BatteryHeaderPreferenceController(
|
||||||
mContext, mActivity, mPreferenceFragment, mLifecycle);
|
mContext, mActivity, mPreferenceFragment, mLifecycle);
|
||||||
mController.mBatteryMeterView = mBatteryMeterView;
|
mController.mBatteryMeterView = mBatteryMeterView;
|
||||||
@@ -187,4 +193,17 @@ public class BatteryHeaderPreferenceControllerTest {
|
|||||||
assertThat(mBatteryMeterView.getCharging()).isTrue();
|
assertThat(mBatteryMeterView.getCharging()).isTrue();
|
||||||
assertThat(mBatteryPercentText.getText()).isEqualTo("60%");
|
assertThat(mBatteryPercentText.getText()).isEqualTo("60%");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testQuickUpdateHeaderPreference_showPowerSave() {
|
||||||
|
boolean testValues[] = {false, true};
|
||||||
|
|
||||||
|
ShadowPowerManager shadowPowerManager = shadowOf(mPowerManager);
|
||||||
|
for (boolean value : testValues) {
|
||||||
|
shadowPowerManager.setIsPowerSaveMode(value);
|
||||||
|
mController.quickUpdateHeaderPreference();
|
||||||
|
|
||||||
|
assertThat(mBatteryMeterView.getPowerSave()).isEqualTo(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -86,4 +86,11 @@ public class BatteryMeterViewTest {
|
|||||||
|
|
||||||
verify(mDrawable).setBatteryColorFilter(mAccentColorFilter);
|
verify(mDrawable).setBatteryColorFilter(mAccentColorFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSetBatteryInfo_powerSave_setCorrectly() {
|
||||||
|
mBatteryMeterView.setPowerSave(true);
|
||||||
|
|
||||||
|
assertThat(mBatteryMeterView.getPowerSave()).isEqualTo(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user