Sync the charge time with battery info on settings
Test: atest SettingsTests Bug: 296793655 Change-Id: I407de30589e77ba09916f54f06f4f9c345adf330
This commit is contained in:
@@ -24,6 +24,7 @@ import android.os.BatteryStats.HistoryItem;
|
||||
import android.os.BatteryStatsManager;
|
||||
import android.os.BatteryUsageStats;
|
||||
import android.os.SystemClock;
|
||||
import android.provider.Settings;
|
||||
import android.text.format.Formatter;
|
||||
import android.util.Log;
|
||||
import android.util.SparseIntArray;
|
||||
@@ -43,6 +44,7 @@ import com.android.settingslib.utils.StringUtil;
|
||||
|
||||
public class BatteryInfo {
|
||||
private static final String TAG = "BatteryInfo";
|
||||
private static final String GLOBAL_TIME_TO_FULL_MILLIS = "time_to_full_millis";
|
||||
|
||||
public CharSequence chargeLabel;
|
||||
public CharSequence remainingLabel;
|
||||
@@ -147,6 +149,12 @@ public class BatteryInfo {
|
||||
BatteryInfo.getBatteryInfo(context, callback, /* batteryUsageStats */ null, shortString);
|
||||
}
|
||||
|
||||
static long getSettingsChargeTimeRemaining(final Context context) {
|
||||
return Settings.Global.getLong(
|
||||
context.getContentResolver(),
|
||||
GLOBAL_TIME_TO_FULL_MILLIS, -1);
|
||||
}
|
||||
|
||||
public static void getBatteryInfo(final Context context, final Callback callback,
|
||||
@Nullable final BatteryUsageStats batteryUsageStats,
|
||||
boolean shortString) {
|
||||
@@ -276,6 +284,13 @@ public class BatteryInfo {
|
||||
BatteryUsageStats stats, BatteryInfo info, boolean compactStatus) {
|
||||
final Resources resources = context.getResources();
|
||||
final long chargeTimeMs = stats.getChargeTimeRemainingMs();
|
||||
if (getSettingsChargeTimeRemaining(context) != chargeTimeMs) {
|
||||
Settings.Global.putLong(
|
||||
context.getContentResolver(),
|
||||
GLOBAL_TIME_TO_FULL_MILLIS,
|
||||
chargeTimeMs);
|
||||
}
|
||||
|
||||
final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
|
||||
BatteryManager.BATTERY_STATUS_UNKNOWN);
|
||||
info.discharging = false;
|
||||
|
@@ -229,6 +229,37 @@ public class BatteryInfoTest {
|
||||
assertThat(info.chargeLabel.toString()).contains(STATUS_CHARGING_PAUSED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetBatteryInfo_getChargeTimeRemaining_updateSettingsGlobal() {
|
||||
doReturn(TEST_CHARGE_TIME_REMAINING)
|
||||
.when(mBatteryUsageStats)
|
||||
.getChargeTimeRemainingMs();
|
||||
|
||||
BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
|
||||
mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
|
||||
false /* shortString */);
|
||||
|
||||
assertThat(BatteryInfo.getSettingsChargeTimeRemaining(mContext)).isEqualTo(
|
||||
TEST_CHARGE_TIME_REMAINING);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetBatteryInfo_differentChargeTimeRemaining_updateSettingsGlobal() {
|
||||
doReturn(TEST_CHARGE_TIME_REMAINING)
|
||||
.when(mBatteryUsageStats)
|
||||
.getChargeTimeRemainingMs();
|
||||
final long newTimeToFull = 300L;
|
||||
doReturn(newTimeToFull)
|
||||
.when(mBatteryUsageStats)
|
||||
.getChargeTimeRemainingMs();
|
||||
|
||||
BatteryInfo.getBatteryInfo(mContext, mChargingBatteryBroadcast,
|
||||
mBatteryUsageStats, MOCK_ESTIMATE, SystemClock.elapsedRealtime() * 1000,
|
||||
false /* shortString */);
|
||||
|
||||
assertThat(BatteryInfo.getSettingsChargeTimeRemaining(mContext)).isEqualTo(newTimeToFull);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetBatteryInfo_dockDefenderActive_updateChargeString() {
|
||||
doReturn(TEST_CHARGE_TIME_REMAINING / 1000)
|
||||
|
Reference in New Issue
Block a user