Loading core/java/android/os/BatteryUsageStats.java +22 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,12 @@ public final class BatteryUsageStats implements Parcelable, Closeable { private static final int STATSD_PULL_ATOM_MAX_BYTES = 45000; private static final int[] UID_USAGE_TIME_PROCESS_STATES = { BatteryConsumer.PROCESS_STATE_FOREGROUND, BatteryConsumer.PROCESS_STATE_BACKGROUND, BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE }; private final int mDischargePercentage; private final double mBatteryCapacityMah; private final long mStatsStartTimestampMs; Loading Loading @@ -516,6 +522,22 @@ public final class BatteryUsageStats implements Parcelable, Closeable { proto.write( BatteryUsageStatsAtomsProto.UidBatteryConsumer.TIME_IN_BACKGROUND_MILLIS, bgMs); for (int processState : UID_USAGE_TIME_PROCESS_STATES) { final long timeInStateMillis = consumer.getTimeInProcessStateMs(processState); if (timeInStateMillis <= 0) { continue; } final long timeInStateToken = proto.start( BatteryUsageStatsAtomsProto.UidBatteryConsumer.TIME_IN_STATE); proto.write( BatteryUsageStatsAtomsProto.UidBatteryConsumer.TimeInState.PROCESS_STATE, processState); proto.write( BatteryUsageStatsAtomsProto.UidBatteryConsumer.TimeInState .TIME_IN_STATE_MILLIS, timeInStateMillis); proto.end(timeInStateToken); } proto.end(token); if (proto.getRawSize() >= maxRawSize) { Loading core/tests/batterystatstests/BatteryUsageStatsProtoTests/src/com/android/internal/os/BatteryUsageStatsPulledTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ public class BatteryUsageStatsPulledTest { private static final int UID_1 = 2000; private static final int UID_2 = 3000; private static final int UID_3 = 4000; private static final int[] UID_USAGE_TIME_PROCESS_STATES = { BatteryConsumer.PROCESS_STATE_FOREGROUND, BatteryConsumer.PROCESS_STATE_BACKGROUND, BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE }; @Test public void testGetStatsProto() { Loading Loading @@ -195,6 +200,20 @@ public class BatteryUsageStatsPulledTest { assertEquals("For uid " + uid, uidConsumer.getTimeInStateMs(android.os.UidBatteryConsumer.STATE_BACKGROUND), uidConsumerProto.timeInBackgroundMillis); for (int processState : UID_USAGE_TIME_PROCESS_STATES) { final long timeInStateMillis = uidConsumer.getTimeInProcessStateMs(processState); if (timeInStateMillis <= 0) { continue; } assertEquals("For uid " + uid + ", process state " + processState, timeInStateMillis, Arrays.stream(uidConsumerProto.timeInState) .filter(timeInState -> timeInState.processState == processState) .findFirst() .orElseThrow() .timeInStateMillis); } if (expectNullBatteryConsumerData) { assertNull("For uid " + uid, uidConsumerProto.batteryConsumerData); } else { Loading Loading
core/java/android/os/BatteryUsageStats.java +22 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,12 @@ public final class BatteryUsageStats implements Parcelable, Closeable { private static final int STATSD_PULL_ATOM_MAX_BYTES = 45000; private static final int[] UID_USAGE_TIME_PROCESS_STATES = { BatteryConsumer.PROCESS_STATE_FOREGROUND, BatteryConsumer.PROCESS_STATE_BACKGROUND, BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE }; private final int mDischargePercentage; private final double mBatteryCapacityMah; private final long mStatsStartTimestampMs; Loading Loading @@ -516,6 +522,22 @@ public final class BatteryUsageStats implements Parcelable, Closeable { proto.write( BatteryUsageStatsAtomsProto.UidBatteryConsumer.TIME_IN_BACKGROUND_MILLIS, bgMs); for (int processState : UID_USAGE_TIME_PROCESS_STATES) { final long timeInStateMillis = consumer.getTimeInProcessStateMs(processState); if (timeInStateMillis <= 0) { continue; } final long timeInStateToken = proto.start( BatteryUsageStatsAtomsProto.UidBatteryConsumer.TIME_IN_STATE); proto.write( BatteryUsageStatsAtomsProto.UidBatteryConsumer.TimeInState.PROCESS_STATE, processState); proto.write( BatteryUsageStatsAtomsProto.UidBatteryConsumer.TimeInState .TIME_IN_STATE_MILLIS, timeInStateMillis); proto.end(timeInStateToken); } proto.end(token); if (proto.getRawSize() >= maxRawSize) { Loading
core/tests/batterystatstests/BatteryUsageStatsProtoTests/src/com/android/internal/os/BatteryUsageStatsPulledTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ public class BatteryUsageStatsPulledTest { private static final int UID_1 = 2000; private static final int UID_2 = 3000; private static final int UID_3 = 4000; private static final int[] UID_USAGE_TIME_PROCESS_STATES = { BatteryConsumer.PROCESS_STATE_FOREGROUND, BatteryConsumer.PROCESS_STATE_BACKGROUND, BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE }; @Test public void testGetStatsProto() { Loading Loading @@ -195,6 +200,20 @@ public class BatteryUsageStatsPulledTest { assertEquals("For uid " + uid, uidConsumer.getTimeInStateMs(android.os.UidBatteryConsumer.STATE_BACKGROUND), uidConsumerProto.timeInBackgroundMillis); for (int processState : UID_USAGE_TIME_PROCESS_STATES) { final long timeInStateMillis = uidConsumer.getTimeInProcessStateMs(processState); if (timeInStateMillis <= 0) { continue; } assertEquals("For uid " + uid + ", process state " + processState, timeInStateMillis, Arrays.stream(uidConsumerProto.timeInState) .filter(timeInState -> timeInState.processState == processState) .findFirst() .orElseThrow() .timeInStateMillis); } if (expectNullBatteryConsumerData) { assertNull("For uid " + uid, uidConsumerProto.batteryConsumerData); } else { Loading