Change the method to get foreground time.
This cl changes it to: foregroundTime = MIN(topTime, foregroundActivityTime); Bug: 62884954 Test: RunSettingsRoboTests Change-Id: I236c18b19c4f06c5a6d018bc06ffb9862af51de2
This commit is contained in:
@@ -45,6 +45,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class BatteryUtils {
|
public class BatteryUtils {
|
||||||
public static final int UID_NULL = -1;
|
public static final int UID_NULL = -1;
|
||||||
|
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
@IntDef({StatusType.FOREGROUND,
|
@IntDef({StatusType.FOREGROUND,
|
||||||
StatusType.BACKGROUND,
|
StatusType.BACKGROUND,
|
||||||
@@ -171,7 +172,9 @@ public class BatteryUtils {
|
|||||||
for (int i = 0, size = sippers.size(); i < size; i++) {
|
for (int i = 0, size = sippers.size(); i < size; i++) {
|
||||||
final BatteryStats.Uid uid = sippers.get(i).uidObj;
|
final BatteryStats.Uid uid = sippers.get(i).uidObj;
|
||||||
if (uid != null) {
|
if (uid != null) {
|
||||||
final long timeMs = getForegroundActivityTotalTimeMs(uid, rawRealtimeMs);
|
final long timeMs = Math.min(getForegroundActivityTotalTimeMs(uid, rawRealtimeMs),
|
||||||
|
getProcessTimeMs(StatusType.FOREGROUND, uid,
|
||||||
|
BatteryStats.STATS_SINCE_CHARGED));
|
||||||
activityTimeArray.put(uid.getUid(), timeMs);
|
activityTimeArray.put(uid.getUid(), timeMs);
|
||||||
totalActivityTimeMs += timeMs;
|
totalActivityTimeMs += timeMs;
|
||||||
}
|
}
|
||||||
@@ -248,7 +251,6 @@ public class BatteryUtils {
|
|||||||
* @return the package name. If there are multiple packages related to
|
* @return the package name. If there are multiple packages related to
|
||||||
* given id, return the first one. Or return null if there are no known
|
* given id, return the first one. Or return null if there are no known
|
||||||
* packages with the given id
|
* packages with the given id
|
||||||
*
|
|
||||||
* @see PackageManager#getPackagesForUid(int)
|
* @see PackageManager#getPackagesForUid(int)
|
||||||
*/
|
*/
|
||||||
public String getPackageName(int uid) {
|
public String getPackageName(int uid) {
|
||||||
|
@@ -69,8 +69,8 @@ public class BatteryUtilsTest {
|
|||||||
private static final long TIME_STATE_TOP_SLEEPING = 2500 * UNIT;
|
private static final long TIME_STATE_TOP_SLEEPING = 2500 * UNIT;
|
||||||
private static final long TIME_STATE_FOREGROUND = 3000 * UNIT;
|
private static final long TIME_STATE_FOREGROUND = 3000 * UNIT;
|
||||||
private static final long TIME_STATE_BACKGROUND = 6000 * UNIT;
|
private static final long TIME_STATE_BACKGROUND = 6000 * UNIT;
|
||||||
private static final long TIME_FOREGROUND_ACTIVITY_ZERO = 0;
|
private static final long TIME_FOREGROUND_ZERO = 0;
|
||||||
private static final long TIME_FOREGROUND_ACTIVITY = 100 * DateUtils.MINUTE_IN_MILLIS;
|
private static final long TIME_FOREGROUND = 100 * DateUtils.MINUTE_IN_MILLIS;
|
||||||
private static final long TIME_SINCE_LAST_FULL_CHARGE_MS = 120 * 60 * 1000;
|
private static final long TIME_SINCE_LAST_FULL_CHARGE_MS = 120 * 60 * 1000;
|
||||||
private static final long TIME_SINCE_LAST_FULL_CHARGE_US =
|
private static final long TIME_SINCE_LAST_FULL_CHARGE_US =
|
||||||
TIME_SINCE_LAST_FULL_CHARGE_MS * 1000;
|
TIME_SINCE_LAST_FULL_CHARGE_MS * 1000;
|
||||||
@@ -294,24 +294,29 @@ public class BatteryUtilsTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSmearScreenBatterySipper() {
|
public void testSmearScreenBatterySipper() {
|
||||||
final BatterySipper sipperNull = createTestSmearBatterySipper(TIME_FOREGROUND_ACTIVITY_ZERO,
|
final BatterySipper sipperNull = createTestSmearBatterySipper(TIME_FOREGROUND_ZERO,
|
||||||
BATTERY_APP_USAGE, 0 /* uid */, true /* isUidNull */);
|
TIME_FOREGROUND_ZERO + 500, BATTERY_APP_USAGE, 0 /* uid */, true /* isUidNull */);
|
||||||
final BatterySipper sipperBg = createTestSmearBatterySipper(TIME_FOREGROUND_ACTIVITY_ZERO,
|
final BatterySipper sipperBg = createTestSmearBatterySipper(TIME_FOREGROUND_ZERO + 100,
|
||||||
BATTERY_APP_USAGE, 1 /* uid */, false /* isUidNull */);
|
TIME_FOREGROUND_ZERO, BATTERY_APP_USAGE, 1 /* uid */, false /* isUidNull */);
|
||||||
final BatterySipper sipperFg = createTestSmearBatterySipper(TIME_FOREGROUND_ACTIVITY,
|
final BatterySipper sipperFg = createTestSmearBatterySipper(TIME_FOREGROUND,
|
||||||
BATTERY_APP_USAGE, 2 /* uid */, false /* isUidNull */);
|
TIME_FOREGROUND + 200, BATTERY_APP_USAGE, 2 /* uid */, false /* isUidNull */);
|
||||||
|
final BatterySipper sipperFg2 = createTestSmearBatterySipper(TIME_FOREGROUND + 600,
|
||||||
|
TIME_FOREGROUND, BATTERY_APP_USAGE, 3 /* uid */, false /* isUidNull */);
|
||||||
|
|
||||||
final List<BatterySipper> sippers = new ArrayList<>();
|
final List<BatterySipper> sippers = new ArrayList<>();
|
||||||
sippers.add(sipperNull);
|
sippers.add(sipperNull);
|
||||||
sippers.add(sipperBg);
|
sippers.add(sipperBg);
|
||||||
sippers.add(sipperFg);
|
sippers.add(sipperFg);
|
||||||
|
sippers.add(sipperFg2);
|
||||||
|
|
||||||
mBatteryUtils.smearScreenBatterySipper(sippers, mScreenBatterySipper);
|
mBatteryUtils.smearScreenBatterySipper(sippers, mScreenBatterySipper);
|
||||||
|
|
||||||
assertThat(sipperNull.totalPowerMah).isWithin(PRECISION).of(BATTERY_APP_USAGE);
|
assertThat(sipperNull.totalPowerMah).isWithin(PRECISION).of(BATTERY_APP_USAGE);
|
||||||
assertThat(sipperBg.totalPowerMah).isWithin(PRECISION).of(BATTERY_APP_USAGE);
|
assertThat(sipperBg.totalPowerMah).isWithin(PRECISION).of(BATTERY_APP_USAGE);
|
||||||
assertThat(sipperFg.totalPowerMah).isWithin(PRECISION).of(
|
assertThat(sipperFg.totalPowerMah).isWithin(PRECISION).of(
|
||||||
BATTERY_APP_USAGE + BATTERY_SCREEN_USAGE);
|
BATTERY_APP_USAGE + BATTERY_SCREEN_USAGE / 2);
|
||||||
|
assertThat(sipperFg2.totalPowerMah).isWithin(PRECISION).of(
|
||||||
|
BATTERY_APP_USAGE + BATTERY_SCREEN_USAGE / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -353,8 +358,8 @@ public class BatteryUtilsTest {
|
|||||||
.isEqualTo(R.string.battery_abnormal_location_summary);
|
.isEqualTo(R.string.battery_abnormal_location_summary);
|
||||||
}
|
}
|
||||||
|
|
||||||
private BatterySipper createTestSmearBatterySipper(long activityTime, double totalPowerMah,
|
private BatterySipper createTestSmearBatterySipper(long activityTime, long topTime,
|
||||||
int uidCode, boolean isUidNull) {
|
double totalPowerMah, int uidCode, boolean isUidNull) {
|
||||||
final BatterySipper sipper = mock(BatterySipper.class);
|
final BatterySipper sipper = mock(BatterySipper.class);
|
||||||
sipper.drainType = BatterySipper.DrainType.APP;
|
sipper.drainType = BatterySipper.DrainType.APP;
|
||||||
sipper.totalPowerMah = totalPowerMah;
|
sipper.totalPowerMah = totalPowerMah;
|
||||||
@@ -363,6 +368,8 @@ public class BatteryUtilsTest {
|
|||||||
final BatteryStats.Uid uid = mock(BatteryStats.Uid.class, RETURNS_DEEP_STUBS);
|
final BatteryStats.Uid uid = mock(BatteryStats.Uid.class, RETURNS_DEEP_STUBS);
|
||||||
doReturn(activityTime).when(mBatteryUtils).getForegroundActivityTotalTimeMs(eq(uid),
|
doReturn(activityTime).when(mBatteryUtils).getForegroundActivityTotalTimeMs(eq(uid),
|
||||||
anyLong());
|
anyLong());
|
||||||
|
doReturn(topTime).when(mBatteryUtils).getProcessTimeMs(
|
||||||
|
eq(BatteryUtils.StatusType.FOREGROUND), eq(uid), anyInt());
|
||||||
doReturn(uidCode).when(uid).getUid();
|
doReturn(uidCode).when(uid).getUid();
|
||||||
sipper.uidObj = uid;
|
sipper.uidObj = uid;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user