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

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

Merge "Exclude SDK Sandbox virtual UID from BatteryUsageStats" into tm-dev am: 1f900152

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

Change-Id: Ib5fc981c4b44d5ae1da37ae081631c2740493924
parents 17730f2a 1f900152
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5655,6 +5655,7 @@ public abstract class BatteryStats implements Parcelable {
                        .setMaxStatsAgeMs(0)
                        .includePowerModels()
                        .includeProcessStateData()
                        .includeVirtualUids()
                        .build());
        stats.dump(pw, prefix);

+12 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ public final class BatteryUsageStatsQuery implements Parcelable {
            FLAG_BATTERY_USAGE_STATS_POWER_PROFILE_MODEL,
            FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY,
            FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA,
            FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface BatteryUsageStatsFlags {}
@@ -69,6 +70,8 @@ public final class BatteryUsageStatsQuery implements Parcelable {

    public static final int FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA = 0x0008;

    public static final int FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS = 0x0010;

    private static final long DEFAULT_MAX_STATS_AGE_MS = 5 * 60 * 1000;

    private final int mFlags;
@@ -270,6 +273,15 @@ public final class BatteryUsageStatsQuery implements Parcelable {
            return this;
        }

        /**
         * Requests to return attribution data for virtual UIDs such as
         * {@link Process#SDK_SANDBOX_VIRTUAL_UID}.
         */
        public Builder includeVirtualUids() {
            mFlags |= BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS;
            return this;
        }

        /**
         * Requests to aggregate stored snapshots between the two supplied timestamps
         * @param fromTimestamp Exclusive starting timestamp, as per System.currentTimeMillis()
+13 −5
Original line number Diff line number Diff line
@@ -202,20 +202,24 @@ public final class UidBatteryConsumer extends BatteryConsumer {
        private static final String PACKAGE_NAME_UNINITIALIZED = "";
        private final BatteryStats.Uid mBatteryStatsUid;
        private final int mUid;
        private final boolean mIsVirtualUid;
        private String mPackageWithHighestDrain = PACKAGE_NAME_UNINITIALIZED;
        private boolean mExcludeFromBatteryUsageStats;

        public Builder(BatteryConsumerData data, @NonNull BatteryStats.Uid batteryStatsUid) {
            super(data, CONSUMER_TYPE_UID);
            mBatteryStatsUid = batteryStatsUid;
            mUid = batteryStatsUid.getUid();
            data.putLong(COLUMN_INDEX_UID, mUid);
            this(data, batteryStatsUid, batteryStatsUid.getUid());
        }

        public Builder(BatteryConsumerData data, int uid) {
            this(data, null, uid);
        }

        private Builder(BatteryConsumerData data, @Nullable BatteryStats.Uid batteryStatsUid,
                int uid) {
            super(data, CONSUMER_TYPE_UID);
            mBatteryStatsUid = null;
            mBatteryStatsUid = batteryStatsUid;
            mUid = uid;
            mIsVirtualUid = mUid == Process.SDK_SANDBOX_VIRTUAL_UID;
            data.putLong(COLUMN_INDEX_UID, mUid);
        }

@@ -232,6 +236,10 @@ public final class UidBatteryConsumer extends BatteryConsumer {
            return mUid;
        }

        public boolean isVirtualUid() {
            return mIsVirtualUid;
        }

        /**
         * Sets the name of the package owned by this UID that consumed the highest amount
         * of power since BatteryStats reset.
+4 −2
Original line number Diff line number Diff line
@@ -78,7 +78,9 @@ public class AudioPowerCalculator extends PowerCalculator {
        final double powerMah = mPowerEstimator.calculatePower(durationMs);
        app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO, durationMs)
                .setConsumedPower(BatteryConsumer.POWER_COMPONENT_AUDIO, powerMah);
        if (!app.isVirtualUid()) {
            total.durationMs += durationMs;
            total.powerMah += powerMah;
        }
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.BatteryStats;
import android.os.BatteryUsageStats;
import android.os.BatteryUsageStatsQuery;
import android.os.Parcel;
import android.os.Process;
import android.os.SystemClock;
import android.os.UidBatteryConsumer;
import android.util.Log;
@@ -162,6 +163,8 @@ public class BatteryUsageStatsProvider {
        final boolean includeProcessStateData = ((query.getFlags()
                & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA) != 0)
                && mStats.isProcessStateDataAvailable();
        final boolean includeVirtualUids =  ((query.getFlags()
                & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS) != 0);

        final BatteryUsageStats.Builder batteryUsageStatsBuilder = new BatteryUsageStats.Builder(
                mStats.getCustomEnergyConsumerNames(), includePowerModels,
@@ -174,6 +177,10 @@ public class BatteryUsageStatsProvider {
        SparseArray<? extends BatteryStats.Uid> uidStats = mStats.getUidStats();
        for (int i = uidStats.size() - 1; i >= 0; i--) {
            final BatteryStats.Uid uid = uidStats.valueAt(i);
            if (!includeVirtualUids && uid.getUid() == Process.SDK_SANDBOX_VIRTUAL_UID) {
                continue;
            }

            batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(uid)
                    .setTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND,
                            getProcessBackgroundTimeMs(uid, realtimeUs))
Loading