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

Commit 937e8a5c authored by Wesley Wang's avatar Wesley Wang Committed by Android (Google) Code Review
Browse files

Merge changes from topic "cherrypick-refactor_compact_status-3o1lsmqltp" into tm-mainline-prod

* changes:
  [automerge] Refactor compact battery status method (1/2) 2p: 6cd9fc0a
  Refactor compact battery status method (1/2)
parents 29b078da 29ffb0fb
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -112,7 +112,8 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver {
        if (intent != null && mBatteryListener != null) {
        if (intent != null && mBatteryListener != null) {
            if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {
            if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {
                final String batteryLevel = Utils.getBatteryPercentage(intent);
                final String batteryLevel = Utils.getBatteryPercentage(intent);
                final String batteryStatus = Utils.getBatteryStatus(mContext, intent);
                final String batteryStatus =
                        Utils.getBatteryStatus(mContext, intent, /* compactStatus= */ false);
                final int batteryHealth = intent.getIntExtra(
                final int batteryHealth = intent.getIntExtra(
                        BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN);
                        BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN);
                if (!Utils.isBatteryPresent(intent)) {
                if (!Utils.isBatteryPresent(intent)) {
+7 −34
Original line number Original line Diff line number Diff line
@@ -37,7 +37,6 @@ import com.android.settings.Utils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.UsageView;
import com.android.settings.widget.UsageView;
import com.android.settingslib.R;
import com.android.settingslib.R;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.settingslib.fuelgauge.Estimate;
import com.android.settingslib.fuelgauge.Estimate;
import com.android.settingslib.fuelgauge.EstimateKt;
import com.android.settingslib.fuelgauge.EstimateKt;
import com.android.settingslib.utils.PowerUtil;
import com.android.settingslib.utils.PowerUtil;
@@ -244,6 +243,8 @@ public class BatteryInfo {
            @NonNull BatteryUsageStats batteryUsageStats, Estimate estimate,
            @NonNull BatteryUsageStats batteryUsageStats, Estimate estimate,
            long elapsedRealtimeUs, boolean shortString) {
            long elapsedRealtimeUs, boolean shortString) {
        final long startTime = System.currentTimeMillis();
        final long startTime = System.currentTimeMillis();
        final boolean isCompactStatus = context.getResources().getBoolean(
                com.android.settings.R.bool.config_use_compact_battery_status);
        BatteryInfo info = new BatteryInfo();
        BatteryInfo info = new BatteryInfo();
        info.mBatteryUsageStats = batteryUsageStats;
        info.mBatteryUsageStats = batteryUsageStats;
        info.batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
        info.batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
@@ -254,21 +255,21 @@ public class BatteryInfo {
                BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN)
                BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN)
                == BatteryManager.BATTERY_HEALTH_OVERHEAT;
                == BatteryManager.BATTERY_HEALTH_OVERHEAT;


        info.statusLabel = getBatteryStatus(context, batteryBroadcast);
        info.statusLabel = Utils.getBatteryStatus(context, batteryBroadcast, isCompactStatus);
        info.batteryStatus = batteryBroadcast.getIntExtra(
        info.batteryStatus = batteryBroadcast.getIntExtra(
                BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
                BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
        if (!info.mCharging) {
        if (!info.mCharging) {
            updateBatteryInfoDischarging(context, shortString, estimate, info);
            updateBatteryInfoDischarging(context, shortString, estimate, info);
        } else {
        } else {
            updateBatteryInfoCharging(context, batteryBroadcast, batteryUsageStats,
            updateBatteryInfoCharging(context, batteryBroadcast, batteryUsageStats,
                    info);
                    info, isCompactStatus);
        }
        }
        BatteryUtils.logRuntime(LOG_TAG, "time for getBatteryInfo", startTime);
        BatteryUtils.logRuntime(LOG_TAG, "time for getBatteryInfo", startTime);
        return info;
        return info;
    }
    }


    private static void updateBatteryInfoCharging(Context context, Intent batteryBroadcast,
    private static void updateBatteryInfoCharging(Context context, Intent batteryBroadcast,
            BatteryUsageStats stats, BatteryInfo info) {
            BatteryUsageStats stats, BatteryInfo info, boolean compactStatus) {
        final Resources resources = context.getResources();
        final Resources resources = context.getResources();
        final long chargeTimeMs = stats.getChargeTimeRemainingMs();
        final long chargeTimeMs = stats.getChargeTimeRemainingMs();
        final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
        final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
@@ -292,7 +293,8 @@ public class BatteryInfo {
                    R.string.power_remaining_charging_duration_only, timeString);
                    R.string.power_remaining_charging_duration_only, timeString);
            info.chargeLabel = context.getString(resId, info.batteryPercentString, timeString);
            info.chargeLabel = context.getString(resId, info.batteryPercentString, timeString);
        } else {
        } else {
            final String chargeStatusLabel = getBatteryStatus(context, batteryBroadcast);
            final String chargeStatusLabel =
                    Utils.getBatteryStatus(context, batteryBroadcast, compactStatus);
            info.remainingLabel = null;
            info.remainingLabel = null;
            info.chargeLabel = info.batteryLevel == 100 ? info.batteryPercentString :
            info.chargeLabel = info.batteryLevel == 100 ? info.batteryPercentString :
                    resources.getString(R.string.power_charging, info.batteryPercentString,
                    resources.getString(R.string.power_charging, info.batteryPercentString,
@@ -326,35 +328,6 @@ public class BatteryInfo {
        }
        }
    }
    }


    private static String getBatteryStatus(Context context, Intent batteryChangedIntent) {
        final Resources res = context.getResources();
        final boolean isShortStatus =
                res.getBoolean(com.android.settings.R.bool.config_use_compact_battery_status);

        if (!isShortStatus) {
            return Utils.getBatteryStatus(context, batteryChangedIntent);
        }

        final int status = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_STATUS,
                BatteryManager.BATTERY_STATUS_UNKNOWN);
        final BatteryStatus batteryStatus = new BatteryStatus(batteryChangedIntent);
        String statusString = res.getString(R.string.battery_info_status_unknown);

        if (batteryStatus.isCharged()) {
            statusString = res.getString(R.string.battery_info_status_full);
        } else {
            if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
                statusString = res.getString(R.string.battery_info_status_charging);
            } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) {
                statusString = res.getString(R.string.battery_info_status_discharging);
            } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) {
                statusString = res.getString(R.string.battery_info_status_not_charging);
            }
        }

        return statusString;
    }

    public interface BatteryDataParser {
    public interface BatteryDataParser {
        void onParsingStarted(long startTime, long endTime);
        void onParsingStarted(long startTime, long endTime);


+5 −5
Original line number Original line Diff line number Diff line
@@ -85,8 +85,8 @@ public class BatteryBroadcastReceiverTest {


        assertThat(mBatteryBroadcastReceiver.mBatteryLevel)
        assertThat(mBatteryBroadcastReceiver.mBatteryLevel)
                .isEqualTo(Utils.getBatteryPercentage(mChargingIntent));
                .isEqualTo(Utils.getBatteryPercentage(mChargingIntent));
        assertThat(mBatteryBroadcastReceiver.mBatteryStatus)
        assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(
                .isEqualTo(Utils.getBatteryStatus(mContext, mChargingIntent));
                Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false));
        verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL);
        verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL);
    }
    }


@@ -134,7 +134,7 @@ public class BatteryBroadcastReceiverTest {
    public void testOnReceive_batteryDataNotChanged_listenerNotInvoked() {
    public void testOnReceive_batteryDataNotChanged_listenerNotInvoked() {
        final String batteryLevel = Utils.getBatteryPercentage(mChargingIntent);
        final String batteryLevel = Utils.getBatteryPercentage(mChargingIntent);
        final String batteryStatus =
        final String batteryStatus =
                Utils.getBatteryStatus(mContext, mChargingIntent);
                Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false);
        mBatteryBroadcastReceiver.mBatteryLevel = batteryLevel;
        mBatteryBroadcastReceiver.mBatteryLevel = batteryLevel;
        mBatteryBroadcastReceiver.mBatteryStatus = batteryStatus;
        mBatteryBroadcastReceiver.mBatteryStatus = batteryStatus;


@@ -159,8 +159,8 @@ public class BatteryBroadcastReceiverTest {


        assertThat(mBatteryBroadcastReceiver.mBatteryLevel)
        assertThat(mBatteryBroadcastReceiver.mBatteryLevel)
                .isEqualTo(Utils.getBatteryPercentage(mChargingIntent));
                .isEqualTo(Utils.getBatteryPercentage(mChargingIntent));
        assertThat(mBatteryBroadcastReceiver.mBatteryStatus)
        assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(
                .isEqualTo(Utils.getBatteryStatus(mContext, mChargingIntent));
                Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false));
        assertThat(mBatteryBroadcastReceiver.mBatteryHealth)
        assertThat(mBatteryBroadcastReceiver.mBatteryHealth)
                .isEqualTo(BatteryManager.BATTERY_HEALTH_UNKNOWN);
                .isEqualTo(BatteryManager.BATTERY_HEALTH_UNKNOWN);
        // 2 times because register will force update the battery
        // 2 times because register will force update the battery