Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03267d04 authored by YK Hung's avatar YK Hung Committed by Android (Google) Code Review
Browse files

Merge "Sync the charge time with battery info on settings" into main

parents ef8cb92b c17809f0
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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;
+31 −0
Original line number Diff line number Diff line
@@ -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)