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

Commit 46c8ad08 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Automerger Merge Worker
Browse files

Merge "Use BatteryStats instead of BatteryStatsImpl in...

Merge "Use BatteryStats instead of BatteryStatsImpl in BatteryUsageStatsProvider" into sc-dev am: d215e29f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14192792

Change-Id: Icefda779ab2d29f24b3146bcc3a56b9ef51875f0
parents 9d44ecfe d215e29f
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.os.BatteryStatsManager.NUM_WIFI_STATES;
import static android.os.BatteryStatsManager.NUM_WIFI_SUPPL_STATES;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.job.JobParameters;
@@ -2622,6 +2623,15 @@ public abstract class BatteryStats implements Parcelable {
     */
    public abstract @Nullable long[] getCustomConsumerMeasuredBatteryConsumptionUC();

    /**
     * Returns the names of all {@link android.hardware.power.stats.EnergyConsumer}'s
     * of (custom) energy consumer type
     * {@link android.hardware.power.stats.EnergyConsumerType#OTHER}).
     *
     * {@hide}
     */
    public abstract @NonNull String[] getCustomEnergyConsumerNames();

    public static final BitDescription[] HISTORY_STATE_DESCRIPTIONS = new BitDescription[] {
        new BitDescription(HistoryItem.STATE_CPU_RUNNING_FLAG, "running", "r"),
        new BitDescription(HistoryItem.STATE_WAKE_LOCK_FLAG, "wake_lock", "w"),
+2 −1
Original line number Diff line number Diff line
@@ -6951,7 +6951,8 @@ public class BatteryStatsImpl extends BatteryStats {
    /**
     * Returns the names of custom power components.
     */
    public @NonNull String[] getCustomPowerComponentNames() {
    @Override
    public @NonNull String[] getCustomEnergyConsumerNames() {
        if (mGlobalMeasuredEnergyStats == null) {
            return new String[0];
        }
+32 −9
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.hardware.SensorManager;
import android.os.BatteryStats;
import android.os.BatteryUsageStats;
import android.os.BatteryUsageStatsQuery;
import android.os.SystemClock;
import android.os.UidBatteryConsumer;
import android.util.SparseArray;

@@ -36,12 +37,12 @@ import java.util.Map;
 */
public class BatteryUsageStatsProvider {
    private final Context mContext;
    private final BatteryStatsImpl mStats;
    private final BatteryStats mStats;
    private final PowerProfile mPowerProfile;
    private final Object mLock = new Object();
    private List<PowerCalculator> mPowerCalculators;

    public BatteryUsageStatsProvider(Context context, BatteryStatsImpl stats) {
    public BatteryUsageStatsProvider(Context context, BatteryStats stats) {
        mContext = context;
        mStats = stats;
        mPowerProfile = new PowerProfile(mContext);
@@ -97,7 +98,7 @@ public class BatteryUsageStatsProvider {
            allowableStatsAge = Math.min(allowableStatsAge, query.getMaxStatsAge());
        }

        return mStats.mClocks.elapsedRealtime() - lastUpdateTimeStampMs > allowableStatsAge;
        return elapsedRealtime() - lastUpdateTimeStampMs > allowableStatsAge;
    }

    /**
@@ -120,10 +121,10 @@ public class BatteryUsageStatsProvider {
     */
    @VisibleForTesting
    public BatteryUsageStats getBatteryUsageStats(BatteryUsageStatsQuery query) {
        final long realtimeUs = mStats.mClocks.elapsedRealtime() * 1000;
        final long uptimeUs = mStats.mClocks.uptimeMillis() * 1000;
        final long realtimeUs = elapsedRealtime() * 1000;
        final long uptimeUs = uptimeMillis() * 1000;

        final String[] customPowerComponentNames = mStats.getCustomPowerComponentNames();
        final String[] customPowerComponentNames = mStats.getCustomEnergyConsumerNames();

        // TODO(b/174186358): read extra time component number from configuration
        final int customTimeComponentCount = 0;
@@ -154,16 +155,22 @@ public class BatteryUsageStatsProvider {

        if ((query.getFlags()
                & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY) != 0) {
            if (!(mStats instanceof BatteryStatsImpl)) {
                throw new UnsupportedOperationException(
                        "History cannot be included for " + getClass().getName());
            }

            BatteryStatsImpl batteryStatsImpl = (BatteryStatsImpl) mStats;
            ArrayList<BatteryStats.HistoryTag> tags = new ArrayList<>(
                    mStats.mHistoryTagPool.size());
                    batteryStatsImpl.mHistoryTagPool.size());
            for (Map.Entry<BatteryStats.HistoryTag, Integer> entry :
                    mStats.mHistoryTagPool.entrySet()) {
                    batteryStatsImpl.mHistoryTagPool.entrySet()) {
                final BatteryStats.HistoryTag tag = entry.getKey();
                tag.poolIdx = entry.getValue();
                tags.add(tag);
            }

            batteryUsageStatsBuilder.setBatteryHistory(mStats.mHistoryBuffer, tags);
            batteryUsageStatsBuilder.setBatteryHistory(batteryStatsImpl.mHistoryBuffer, tags);
        }

        return batteryUsageStatsBuilder.build();
@@ -199,4 +206,20 @@ public class BatteryUsageStatsProvider {
        return uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, realtimeUs,
                BatteryStats.STATS_SINCE_CHARGED) / 1000;
    }

    private long elapsedRealtime() {
        if (mStats instanceof BatteryStatsImpl) {
            return ((BatteryStatsImpl) mStats).mClocks.elapsedRealtime();
        } else {
            return SystemClock.elapsedRealtime();
        }
    }

    private long uptimeMillis() {
        if (mStats instanceof BatteryStatsImpl) {
            return ((BatteryStatsImpl) mStats).mClocks.uptimeMillis();
        } else {
            return SystemClock.uptimeMillis();
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@ public class BatteryUsageStatsRule implements TestRule {
    }

    BatteryUsageStats apply(BatteryUsageStatsQuery query, PowerCalculator... calculators) {
        final String[] customPowerComponentNames = mBatteryStats.getCustomPowerComponentNames();
        final String[] customPowerComponentNames = mBatteryStats.getCustomEnergyConsumerNames();
        final boolean includePowerModels = (query.getFlags()
                & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_POWER_MODELS) != 0;
        BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder(