Provide foreground_service usage time in BatteryDiffEntry.
- Fetch foreground service info through new api from UidBatteryConsumer. - Record fgs & bg usage time separately, combine them till ui display. Bug: 315255868 Test: make RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.fuelgauge.*" Change-Id: Ic19844db7908a6ae6522c7a72972f44f94dcfca4
This commit is contained in:
@@ -148,7 +148,8 @@ public class AdvancedPowerUsageDetail extends DashboardFragment
|
|||||||
launchArgs.mShowTimeInformation = showTimeInformation;
|
launchArgs.mShowTimeInformation = showTimeInformation;
|
||||||
if (launchArgs.mShowTimeInformation) {
|
if (launchArgs.mShowTimeInformation) {
|
||||||
launchArgs.mForegroundTimeMs = diffEntry.mForegroundUsageTimeInMs;
|
launchArgs.mForegroundTimeMs = diffEntry.mForegroundUsageTimeInMs;
|
||||||
launchArgs.mBackgroundTimeMs = diffEntry.mBackgroundUsageTimeInMs;
|
launchArgs.mBackgroundTimeMs =
|
||||||
|
diffEntry.mBackgroundUsageTimeInMs + diffEntry.mForegroundServiceUsageTimeInMs;
|
||||||
launchArgs.mScreenOnTimeMs = diffEntry.mScreenOnTimeInMs;
|
launchArgs.mScreenOnTimeMs = diffEntry.mScreenOnTimeInMs;
|
||||||
launchArgs.mAnomalyHintPrefKey = anomalyHintPrefKey;
|
launchArgs.mAnomalyHintPrefKey = anomalyHintPrefKey;
|
||||||
launchArgs.mAnomalyHintText = anomalyHintText;
|
launchArgs.mAnomalyHintText = anomalyHintText;
|
||||||
|
@@ -92,6 +92,7 @@ public class BatteryDiffEntry {
|
|||||||
public String mLegacyLabel;
|
public String mLegacyLabel;
|
||||||
public int mConsumerType;
|
public int mConsumerType;
|
||||||
public long mForegroundUsageTimeInMs;
|
public long mForegroundUsageTimeInMs;
|
||||||
|
public long mForegroundServiceUsageTimeInMs;
|
||||||
public long mBackgroundUsageTimeInMs;
|
public long mBackgroundUsageTimeInMs;
|
||||||
public long mScreenOnTimeInMs;
|
public long mScreenOnTimeInMs;
|
||||||
public double mConsumePower;
|
public double mConsumePower;
|
||||||
@@ -125,6 +126,7 @@ public class BatteryDiffEntry {
|
|||||||
String legacyLabel,
|
String legacyLabel,
|
||||||
int consumerType,
|
int consumerType,
|
||||||
long foregroundUsageTimeInMs,
|
long foregroundUsageTimeInMs,
|
||||||
|
long foregroundServiceUsageTimeInMs,
|
||||||
long backgroundUsageTimeInMs,
|
long backgroundUsageTimeInMs,
|
||||||
long screenOnTimeInMs,
|
long screenOnTimeInMs,
|
||||||
double consumePower,
|
double consumePower,
|
||||||
@@ -142,6 +144,7 @@ public class BatteryDiffEntry {
|
|||||||
mLegacyLabel = legacyLabel;
|
mLegacyLabel = legacyLabel;
|
||||||
mConsumerType = consumerType;
|
mConsumerType = consumerType;
|
||||||
mForegroundUsageTimeInMs = foregroundUsageTimeInMs;
|
mForegroundUsageTimeInMs = foregroundUsageTimeInMs;
|
||||||
|
mForegroundServiceUsageTimeInMs = foregroundServiceUsageTimeInMs;
|
||||||
mBackgroundUsageTimeInMs = backgroundUsageTimeInMs;
|
mBackgroundUsageTimeInMs = backgroundUsageTimeInMs;
|
||||||
mScreenOnTimeInMs = screenOnTimeInMs;
|
mScreenOnTimeInMs = screenOnTimeInMs;
|
||||||
mConsumePower = consumePower;
|
mConsumePower = consumePower;
|
||||||
@@ -164,6 +167,7 @@ public class BatteryDiffEntry {
|
|||||||
legacyLabel,
|
legacyLabel,
|
||||||
consumerType,
|
consumerType,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0,
|
/* backgroundUsageTimeInMs= */ 0,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* consumePower= */ 0,
|
/* consumePower= */ 0,
|
||||||
@@ -232,6 +236,7 @@ public class BatteryDiffEntry {
|
|||||||
this.mLegacyLabel,
|
this.mLegacyLabel,
|
||||||
this.mConsumerType,
|
this.mConsumerType,
|
||||||
this.mForegroundUsageTimeInMs,
|
this.mForegroundUsageTimeInMs,
|
||||||
|
this.mForegroundServiceUsageTimeInMs,
|
||||||
this.mBackgroundUsageTimeInMs,
|
this.mBackgroundUsageTimeInMs,
|
||||||
this.mScreenOnTimeInMs,
|
this.mScreenOnTimeInMs,
|
||||||
this.mConsumePower,
|
this.mConsumePower,
|
||||||
@@ -515,48 +520,50 @@ public class BatteryDiffEntry {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder builder =
|
final StringBuilder builder = new StringBuilder();
|
||||||
new StringBuilder()
|
builder.append("BatteryDiffEntry{");
|
||||||
.append("BatteryDiffEntry{")
|
builder.append(
|
||||||
.append(
|
String.format("\n\tname=%s restrictable=%b", mAppLabel, mValidForRestriction));
|
||||||
String.format(
|
builder.append(
|
||||||
"\n\tname=%s restrictable=%b",
|
String.format(
|
||||||
mAppLabel, mValidForRestriction))
|
"\n\tconsume=%.2f%% %f/%f",
|
||||||
.append(
|
mPercentage, mConsumePower, mTotalConsumePower));
|
||||||
String.format(
|
builder.append(
|
||||||
"\n\tconsume=%.2f%% %f/%f",
|
String.format(
|
||||||
mPercentage, mConsumePower, mTotalConsumePower))
|
"\n\tconsume power= foreground:%f foregroundService:%f",
|
||||||
.append(
|
mForegroundUsageConsumePower, mForegroundServiceUsageConsumePower));
|
||||||
String.format(
|
builder.append(
|
||||||
"\n\tconsume power= foreground:%f foregroundService:%f",
|
String.format(
|
||||||
mForegroundUsageConsumePower,
|
"\n\tconsume power= background:%f cached:%f",
|
||||||
mForegroundServiceUsageConsumePower))
|
mBackgroundUsageConsumePower, mCachedUsageConsumePower));
|
||||||
.append(
|
builder.append(
|
||||||
String.format(
|
String.format(
|
||||||
"\n\tconsume power= background:%f cached:%f",
|
"\n\ttime= foreground:%s foregroundService:%s "
|
||||||
mBackgroundUsageConsumePower, mCachedUsageConsumePower))
|
+ "background:%s screen-on:%s",
|
||||||
.append(
|
StringUtil.formatElapsedTime(
|
||||||
String.format(
|
mContext,
|
||||||
"\n\ttime= foreground:%s background:%s screen-on:%s",
|
(double) mForegroundUsageTimeInMs,
|
||||||
StringUtil.formatElapsedTime(
|
/* withSeconds= */ true,
|
||||||
mContext,
|
/* collapseTimeUnit= */ false),
|
||||||
(double) mForegroundUsageTimeInMs,
|
StringUtil.formatElapsedTime(
|
||||||
/* withSeconds= */ true,
|
mContext,
|
||||||
/* collapseTimeUnit= */ false),
|
(double) mForegroundServiceUsageTimeInMs,
|
||||||
StringUtil.formatElapsedTime(
|
/* withSeconds= */ true,
|
||||||
mContext,
|
/* collapseTimeUnit= */ false),
|
||||||
(double) mBackgroundUsageTimeInMs,
|
StringUtil.formatElapsedTime(
|
||||||
/* withSeconds= */ true,
|
mContext,
|
||||||
/* collapseTimeUnit= */ false),
|
(double) mBackgroundUsageTimeInMs,
|
||||||
StringUtil.formatElapsedTime(
|
/* withSeconds= */ true,
|
||||||
mContext,
|
/* collapseTimeUnit= */ false),
|
||||||
(double) mScreenOnTimeInMs,
|
StringUtil.formatElapsedTime(
|
||||||
/* withSeconds= */ true,
|
mContext,
|
||||||
/* collapseTimeUnit= */ false)))
|
(double) mScreenOnTimeInMs,
|
||||||
.append(
|
/* withSeconds= */ true,
|
||||||
String.format(
|
/* collapseTimeUnit= */ false)));
|
||||||
"\n\tpackage:%s|%s uid:%d userId:%d",
|
builder.append(
|
||||||
mLegacyPackageName, getPackageName(), mUid, mUserId));
|
String.format(
|
||||||
|
"\n\tpackage:%s|%s uid:%d userId:%d",
|
||||||
|
mLegacyPackageName, getPackageName(), mUid, mUserId));
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -111,6 +111,7 @@ public class BatteryEntry {
|
|||||||
@BatteryConsumer.PowerComponent private final int mPowerComponentId;
|
@BatteryConsumer.PowerComponent private final int mPowerComponentId;
|
||||||
private long mUsageDurationMs;
|
private long mUsageDurationMs;
|
||||||
private long mTimeInForegroundMs;
|
private long mTimeInForegroundMs;
|
||||||
|
private long mTimeInForegroundServiceMs;
|
||||||
private long mTimeInBackgroundMs;
|
private long mTimeInBackgroundMs;
|
||||||
|
|
||||||
public String mName;
|
public String mName;
|
||||||
@@ -188,9 +189,14 @@ public class BatteryEntry {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
mTimeInForegroundMs =
|
mTimeInForegroundMs =
|
||||||
uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND);
|
uidBatteryConsumer.getTimeInProcessStateMs(
|
||||||
|
UidBatteryConsumer.PROCESS_STATE_FOREGROUND);
|
||||||
|
mTimeInForegroundServiceMs =
|
||||||
|
uidBatteryConsumer.getTimeInProcessStateMs(
|
||||||
|
UidBatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
||||||
mTimeInBackgroundMs =
|
mTimeInBackgroundMs =
|
||||||
uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND);
|
uidBatteryConsumer.getTimeInProcessStateMs(
|
||||||
|
UidBatteryConsumer.PROCESS_STATE_BACKGROUND);
|
||||||
mConsumedPowerInForeground =
|
mConsumedPowerInForeground =
|
||||||
safeGetConsumedPower(
|
safeGetConsumedPower(
|
||||||
uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND]);
|
uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND]);
|
||||||
@@ -433,20 +439,19 @@ public class BatteryEntry {
|
|||||||
|
|
||||||
/** Returns foreground time/ms that is attributed to this entry. */
|
/** Returns foreground time/ms that is attributed to this entry. */
|
||||||
public long getTimeInForegroundMs() {
|
public long getTimeInForegroundMs() {
|
||||||
if (mBatteryConsumer instanceof UidBatteryConsumer) {
|
return (mBatteryConsumer instanceof UidBatteryConsumer)
|
||||||
return mTimeInForegroundMs;
|
? mTimeInForegroundMs
|
||||||
} else {
|
: mUsageDurationMs;
|
||||||
return mUsageDurationMs;
|
}
|
||||||
}
|
|
||||||
|
/** Returns foreground service time/ms that is attributed to this entry. */
|
||||||
|
public long getTimeInForegroundServiceMs() {
|
||||||
|
return (mBatteryConsumer instanceof UidBatteryConsumer) ? mTimeInForegroundServiceMs : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns background activity time/ms that is attributed to this entry. */
|
/** Returns background activity time/ms that is attributed to this entry. */
|
||||||
public long getTimeInBackgroundMs() {
|
public long getTimeInBackgroundMs() {
|
||||||
if (mBatteryConsumer instanceof UidBatteryConsumer) {
|
return (mBatteryConsumer instanceof UidBatteryConsumer) ? mTimeInBackgroundMs : 0;
|
||||||
return mTimeInBackgroundMs;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns total amount of power (in milli-amp-hours) that is attributed to this entry. */
|
/** Returns total amount of power (in milli-amp-hours) that is attributed to this entry. */
|
||||||
@@ -510,9 +515,14 @@ public class BatteryEntry {
|
|||||||
if (batteryConsumer instanceof UidBatteryConsumer) {
|
if (batteryConsumer instanceof UidBatteryConsumer) {
|
||||||
UidBatteryConsumer uidBatteryConsumer = (UidBatteryConsumer) batteryConsumer;
|
UidBatteryConsumer uidBatteryConsumer = (UidBatteryConsumer) batteryConsumer;
|
||||||
mTimeInForegroundMs +=
|
mTimeInForegroundMs +=
|
||||||
uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND);
|
uidBatteryConsumer.getTimeInProcessStateMs(
|
||||||
|
UidBatteryConsumer.PROCESS_STATE_FOREGROUND);
|
||||||
|
mTimeInForegroundServiceMs +=
|
||||||
|
uidBatteryConsumer.getTimeInProcessStateMs(
|
||||||
|
UidBatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
||||||
mTimeInBackgroundMs +=
|
mTimeInBackgroundMs +=
|
||||||
uidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND);
|
uidBatteryConsumer.getTimeInProcessStateMs(
|
||||||
|
UidBatteryConsumer.PROCESS_STATE_BACKGROUND);
|
||||||
mConsumedPowerInForeground +=
|
mConsumedPowerInForeground +=
|
||||||
safeGetConsumedPower(
|
safeGetConsumedPower(
|
||||||
uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND]);
|
uidBatteryConsumer, BATTERY_DIMENSIONS[BATTERY_USAGE_INDEX_FOREGROUND]);
|
||||||
|
@@ -20,8 +20,6 @@ import android.database.Cursor;
|
|||||||
import android.os.BatteryConsumer;
|
import android.os.BatteryConsumer;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.time.Duration;
|
|
||||||
|
|
||||||
/** A container class to carry data from {@link ContentValues}. */
|
/** A container class to carry data from {@link ContentValues}. */
|
||||||
public class BatteryHistEntry {
|
public class BatteryHistEntry {
|
||||||
private static final boolean DEBUG = false;
|
private static final boolean DEBUG = false;
|
||||||
@@ -57,6 +55,7 @@ public class BatteryHistEntry {
|
|||||||
public final double mCachedUsageConsumePower;
|
public final double mCachedUsageConsumePower;
|
||||||
public final double mPercentOfTotal;
|
public final double mPercentOfTotal;
|
||||||
public final long mForegroundUsageTimeInMs;
|
public final long mForegroundUsageTimeInMs;
|
||||||
|
public final long mForegroundServiceUsageTimeInMs;
|
||||||
public final long mBackgroundUsageTimeInMs;
|
public final long mBackgroundUsageTimeInMs;
|
||||||
@BatteryConsumer.PowerComponent public final int mDrainType;
|
@BatteryConsumer.PowerComponent public final int mDrainType;
|
||||||
@ConvertUtils.ConsumerType public final int mConsumerType;
|
@ConvertUtils.ConsumerType public final int mConsumerType;
|
||||||
@@ -89,6 +88,7 @@ public class BatteryHistEntry {
|
|||||||
mCachedUsageConsumePower = batteryInformation.getCachedUsageConsumePower();
|
mCachedUsageConsumePower = batteryInformation.getCachedUsageConsumePower();
|
||||||
mPercentOfTotal = batteryInformation.getPercentOfTotal();
|
mPercentOfTotal = batteryInformation.getPercentOfTotal();
|
||||||
mForegroundUsageTimeInMs = batteryInformation.getForegroundUsageTimeInMs();
|
mForegroundUsageTimeInMs = batteryInformation.getForegroundUsageTimeInMs();
|
||||||
|
mForegroundServiceUsageTimeInMs = batteryInformation.getForegroundServiceUsageTimeInMs();
|
||||||
mBackgroundUsageTimeInMs = batteryInformation.getBackgroundUsageTimeInMs();
|
mBackgroundUsageTimeInMs = batteryInformation.getBackgroundUsageTimeInMs();
|
||||||
mDrainType = batteryInformation.getDrainType();
|
mDrainType = batteryInformation.getDrainType();
|
||||||
final DeviceBatteryState deviceBatteryState = batteryInformation.getDeviceBatteryState();
|
final DeviceBatteryState deviceBatteryState = batteryInformation.getDeviceBatteryState();
|
||||||
@@ -118,6 +118,7 @@ public class BatteryHistEntry {
|
|||||||
mCachedUsageConsumePower = batteryInformation.getCachedUsageConsumePower();
|
mCachedUsageConsumePower = batteryInformation.getCachedUsageConsumePower();
|
||||||
mPercentOfTotal = batteryInformation.getPercentOfTotal();
|
mPercentOfTotal = batteryInformation.getPercentOfTotal();
|
||||||
mForegroundUsageTimeInMs = batteryInformation.getForegroundUsageTimeInMs();
|
mForegroundUsageTimeInMs = batteryInformation.getForegroundUsageTimeInMs();
|
||||||
|
mForegroundServiceUsageTimeInMs = batteryInformation.getForegroundServiceUsageTimeInMs();
|
||||||
mBackgroundUsageTimeInMs = batteryInformation.getBackgroundUsageTimeInMs();
|
mBackgroundUsageTimeInMs = batteryInformation.getBackgroundUsageTimeInMs();
|
||||||
mDrainType = batteryInformation.getDrainType();
|
mDrainType = batteryInformation.getDrainType();
|
||||||
final DeviceBatteryState deviceBatteryState = batteryInformation.getDeviceBatteryState();
|
final DeviceBatteryState deviceBatteryState = batteryInformation.getDeviceBatteryState();
|
||||||
@@ -137,6 +138,7 @@ public class BatteryHistEntry {
|
|||||||
double backgroundUsageConsumePower,
|
double backgroundUsageConsumePower,
|
||||||
double cachedUsageConsumePower,
|
double cachedUsageConsumePower,
|
||||||
long foregroundUsageTimeInMs,
|
long foregroundUsageTimeInMs,
|
||||||
|
long foregroundServiceUsageTimeInMs,
|
||||||
long backgroundUsageTimeInMs,
|
long backgroundUsageTimeInMs,
|
||||||
int batteryLevel) {
|
int batteryLevel) {
|
||||||
mUid = fromEntry.mUid;
|
mUid = fromEntry.mUid;
|
||||||
@@ -155,6 +157,7 @@ public class BatteryHistEntry {
|
|||||||
mCachedUsageConsumePower = cachedUsageConsumePower;
|
mCachedUsageConsumePower = cachedUsageConsumePower;
|
||||||
mPercentOfTotal = fromEntry.mPercentOfTotal;
|
mPercentOfTotal = fromEntry.mPercentOfTotal;
|
||||||
mForegroundUsageTimeInMs = foregroundUsageTimeInMs;
|
mForegroundUsageTimeInMs = foregroundUsageTimeInMs;
|
||||||
|
mForegroundServiceUsageTimeInMs = foregroundServiceUsageTimeInMs;
|
||||||
mBackgroundUsageTimeInMs = backgroundUsageTimeInMs;
|
mBackgroundUsageTimeInMs = backgroundUsageTimeInMs;
|
||||||
mDrainType = fromEntry.mDrainType;
|
mDrainType = fromEntry.mDrainType;
|
||||||
mConsumerType = fromEntry.mConsumerType;
|
mConsumerType = fromEntry.mConsumerType;
|
||||||
@@ -189,45 +192,40 @@ public class BatteryHistEntry {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final String recordAtDateTime = ConvertUtils.utcToLocalTimeForLogging(mTimestamp);
|
final String recordAtDateTime = ConvertUtils.utcToLocalTimeForLogging(mTimestamp);
|
||||||
final StringBuilder builder =
|
final StringBuilder builder = new StringBuilder();
|
||||||
new StringBuilder()
|
builder.append("\nBatteryHistEntry{");
|
||||||
.append("\nBatteryHistEntry{")
|
builder.append(
|
||||||
.append(
|
String.format(
|
||||||
String.format(
|
"\n\tpackage=%s|label=%s|uid=%d|userId=%d|isHidden=%b",
|
||||||
"\n\tpackage=%s|label=%s|uid=%d|userId=%d|isHidden=%b",
|
mPackageName, mAppLabel, mUid, mUserId, mIsHidden));
|
||||||
mPackageName, mAppLabel, mUid, mUserId, mIsHidden))
|
builder.append(
|
||||||
.append(
|
String.format(
|
||||||
String.format(
|
"\n\ttimestamp=%s|zoneId=%s|bootTimestamp=%d",
|
||||||
"\n\ttimestamp=%s|zoneId=%s|bootTimestamp=%d",
|
recordAtDateTime, mZoneId, TimestampUtils.getSeconds(mBootTimestamp)));
|
||||||
recordAtDateTime,
|
builder.append(
|
||||||
mZoneId,
|
String.format(
|
||||||
Duration.ofMillis(mBootTimestamp).getSeconds()))
|
"\n\tusage=%f|total=%f|consume=%f",
|
||||||
.append(
|
mPercentOfTotal, mTotalPower, mConsumePower));
|
||||||
String.format(
|
builder.append(
|
||||||
"\n\tusage=%f|total=%f|consume=%f",
|
String.format(
|
||||||
mPercentOfTotal, mTotalPower, mConsumePower))
|
"\n\tforeground=%f|foregroundService=%f",
|
||||||
.append(
|
mForegroundUsageConsumePower, mForegroundServiceUsageConsumePower));
|
||||||
String.format(
|
builder.append(
|
||||||
"\n\tforeground=%f|foregroundService=%f",
|
String.format(
|
||||||
mForegroundUsageConsumePower,
|
"\n\tbackground=%f|cached=%f",
|
||||||
mForegroundServiceUsageConsumePower))
|
mBackgroundUsageConsumePower, mCachedUsageConsumePower));
|
||||||
.append(
|
builder.append(
|
||||||
String.format(
|
String.format(
|
||||||
"\n\tbackground=%f|cached=%f",
|
"\n\telapsedTime,fg=%d|fgs=%d|bg=%d",
|
||||||
mBackgroundUsageConsumePower, mCachedUsageConsumePower))
|
TimestampUtils.getSeconds(mBackgroundUsageTimeInMs),
|
||||||
.append(
|
TimestampUtils.getSeconds(mForegroundServiceUsageTimeInMs),
|
||||||
String.format(
|
TimestampUtils.getSeconds(mBackgroundUsageTimeInMs)));
|
||||||
"\n\telapsedTime=%d|%d",
|
builder.append(
|
||||||
Duration.ofMillis(mForegroundUsageTimeInMs).getSeconds(),
|
String.format("\n\tdrainType=%d|consumerType=%d", mDrainType, mConsumerType));
|
||||||
Duration.ofMillis(mBackgroundUsageTimeInMs).getSeconds()))
|
builder.append(
|
||||||
.append(
|
String.format(
|
||||||
String.format(
|
"\n\tbattery=%d|status=%d|health=%d\n}",
|
||||||
"\n\tdrainType=%d|consumerType=%d",
|
mBatteryLevel, mBatteryStatus, mBatteryHealth));
|
||||||
mDrainType, mConsumerType))
|
|
||||||
.append(
|
|
||||||
String.format(
|
|
||||||
"\n\tbattery=%d|status=%d|health=%d\n}",
|
|
||||||
mBatteryLevel, mBatteryStatus, mBatteryHealth));
|
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -323,19 +321,20 @@ public class BatteryHistEntry {
|
|||||||
ratio);
|
ratio);
|
||||||
final double foregroundUsageTimeInMs =
|
final double foregroundUsageTimeInMs =
|
||||||
interpolate(
|
interpolate(
|
||||||
(double)
|
(lowerHistEntry == null ? 0 : lowerHistEntry.mForegroundUsageTimeInMs),
|
||||||
(lowerHistEntry == null
|
upperHistEntry.mForegroundUsageTimeInMs,
|
||||||
? 0
|
ratio);
|
||||||
: lowerHistEntry.mForegroundUsageTimeInMs),
|
final double foregroundServiceUsageTimeInMs =
|
||||||
(double) upperHistEntry.mForegroundUsageTimeInMs,
|
interpolate(
|
||||||
|
(lowerHistEntry == null
|
||||||
|
? 0
|
||||||
|
: lowerHistEntry.mForegroundServiceUsageTimeInMs),
|
||||||
|
upperHistEntry.mForegroundServiceUsageTimeInMs,
|
||||||
ratio);
|
ratio);
|
||||||
final double backgroundUsageTimeInMs =
|
final double backgroundUsageTimeInMs =
|
||||||
interpolate(
|
interpolate(
|
||||||
(double)
|
(lowerHistEntry == null ? 0 : lowerHistEntry.mBackgroundUsageTimeInMs),
|
||||||
(lowerHistEntry == null
|
upperHistEntry.mBackgroundUsageTimeInMs,
|
||||||
? 0
|
|
||||||
: lowerHistEntry.mBackgroundUsageTimeInMs),
|
|
||||||
(double) upperHistEntry.mBackgroundUsageTimeInMs,
|
|
||||||
ratio);
|
ratio);
|
||||||
// Checks whether there is any abnormal cases!
|
// Checks whether there is any abnormal cases!
|
||||||
if (upperHistEntry.mConsumePower < consumePower
|
if (upperHistEntry.mConsumePower < consumePower
|
||||||
@@ -345,6 +344,7 @@ public class BatteryHistEntry {
|
|||||||
|| upperHistEntry.mBackgroundUsageConsumePower < backgroundUsageConsumePower
|
|| upperHistEntry.mBackgroundUsageConsumePower < backgroundUsageConsumePower
|
||||||
|| upperHistEntry.mCachedUsageConsumePower < cachedUsageConsumePower
|
|| upperHistEntry.mCachedUsageConsumePower < cachedUsageConsumePower
|
||||||
|| upperHistEntry.mForegroundUsageTimeInMs < foregroundUsageTimeInMs
|
|| upperHistEntry.mForegroundUsageTimeInMs < foregroundUsageTimeInMs
|
||||||
|
|| upperHistEntry.mForegroundServiceUsageTimeInMs < foregroundServiceUsageTimeInMs
|
||||||
|| upperHistEntry.mBackgroundUsageTimeInMs < backgroundUsageTimeInMs) {
|
|| upperHistEntry.mBackgroundUsageTimeInMs < backgroundUsageTimeInMs) {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.w(
|
Log.w(
|
||||||
@@ -371,6 +371,7 @@ public class BatteryHistEntry {
|
|||||||
backgroundUsageConsumePower,
|
backgroundUsageConsumePower,
|
||||||
cachedUsageConsumePower,
|
cachedUsageConsumePower,
|
||||||
Math.round(foregroundUsageTimeInMs),
|
Math.round(foregroundUsageTimeInMs),
|
||||||
|
Math.round(foregroundServiceUsageTimeInMs),
|
||||||
Math.round(backgroundUsageTimeInMs),
|
Math.round(backgroundUsageTimeInMs),
|
||||||
(int) Math.round(batteryLevel));
|
(int) Math.round(batteryLevel));
|
||||||
}
|
}
|
||||||
|
@@ -400,7 +400,7 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
|
|||||||
mPrefContext,
|
mPrefContext,
|
||||||
entry.isSystemEntry(),
|
entry.isSystemEntry(),
|
||||||
entry.mForegroundUsageTimeInMs,
|
entry.mForegroundUsageTimeInMs,
|
||||||
entry.mBackgroundUsageTimeInMs,
|
entry.mBackgroundUsageTimeInMs + entry.mForegroundServiceUsageTimeInMs,
|
||||||
entry.mScreenOnTimeInMs));
|
entry.mScreenOnTimeInMs));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -544,6 +544,7 @@ public final class ConvertUtils {
|
|||||||
batteryUsageDiff.getLabel(),
|
batteryUsageDiff.getLabel(),
|
||||||
batteryUsageDiff.getConsumerType(),
|
batteryUsageDiff.getConsumerType(),
|
||||||
batteryUsageDiff.getForegroundUsageTime(),
|
batteryUsageDiff.getForegroundUsageTime(),
|
||||||
|
batteryUsageDiff.getForegroundServiceUsageTime(),
|
||||||
batteryUsageDiff.getBackgroundUsageTime(),
|
batteryUsageDiff.getBackgroundUsageTime(),
|
||||||
batteryUsageDiff.getScreenOnTime(),
|
batteryUsageDiff.getScreenOnTime(),
|
||||||
batteryUsageDiff.getConsumePower(),
|
batteryUsageDiff.getConsumePower(),
|
||||||
@@ -612,6 +613,7 @@ public final class ConvertUtils {
|
|||||||
.setPercentOfTotal(entry.mPercent)
|
.setPercentOfTotal(entry.mPercent)
|
||||||
.setDrainType(entry.getPowerComponentId())
|
.setDrainType(entry.getPowerComponentId())
|
||||||
.setForegroundUsageTimeInMs(entry.getTimeInForegroundMs())
|
.setForegroundUsageTimeInMs(entry.getTimeInForegroundMs())
|
||||||
|
.setForegroundServiceUsageTimeInMs(entry.getTimeInForegroundServiceMs())
|
||||||
.setBackgroundUsageTimeInMs(entry.getTimeInBackgroundMs());
|
.setBackgroundUsageTimeInMs(entry.getTimeInBackgroundMs());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -675,6 +675,7 @@ public final class DataProcessor {
|
|||||||
entry.mAppLabel,
|
entry.mAppLabel,
|
||||||
entry.mConsumerType,
|
entry.mConsumerType,
|
||||||
entry.mForegroundUsageTimeInMs,
|
entry.mForegroundUsageTimeInMs,
|
||||||
|
entry.mForegroundServiceUsageTimeInMs,
|
||||||
entry.mBackgroundUsageTimeInMs,
|
entry.mBackgroundUsageTimeInMs,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
entry.mConsumePower,
|
entry.mConsumePower,
|
||||||
@@ -1412,6 +1413,7 @@ public final class DataProcessor {
|
|||||||
|
|
||||||
// Cumulative values is a specific time slot for a specific app.
|
// Cumulative values is a specific time slot for a specific app.
|
||||||
long foregroundUsageTimeInMs = 0;
|
long foregroundUsageTimeInMs = 0;
|
||||||
|
long foregroundServiceUsageTimeInMs = 0;
|
||||||
long backgroundUsageTimeInMs = 0;
|
long backgroundUsageTimeInMs = 0;
|
||||||
double consumePower = 0;
|
double consumePower = 0;
|
||||||
double foregroundUsageConsumePower = 0;
|
double foregroundUsageConsumePower = 0;
|
||||||
@@ -1425,6 +1427,10 @@ public final class DataProcessor {
|
|||||||
getDiffValue(
|
getDiffValue(
|
||||||
currentEntry.mForegroundUsageTimeInMs,
|
currentEntry.mForegroundUsageTimeInMs,
|
||||||
nextEntry.mForegroundUsageTimeInMs);
|
nextEntry.mForegroundUsageTimeInMs);
|
||||||
|
foregroundServiceUsageTimeInMs +=
|
||||||
|
getDiffValue(
|
||||||
|
currentEntry.mForegroundServiceUsageTimeInMs,
|
||||||
|
nextEntry.mForegroundServiceUsageTimeInMs);
|
||||||
backgroundUsageTimeInMs +=
|
backgroundUsageTimeInMs +=
|
||||||
getDiffValue(
|
getDiffValue(
|
||||||
currentEntry.mBackgroundUsageTimeInMs,
|
currentEntry.mBackgroundUsageTimeInMs,
|
||||||
@@ -1453,24 +1459,32 @@ public final class DataProcessor {
|
|||||||
foregroundUsageTimeInMs = slotScreenOnTime;
|
foregroundUsageTimeInMs = slotScreenOnTime;
|
||||||
}
|
}
|
||||||
// Excludes entry since we don't have enough data to calculate.
|
// Excludes entry since we don't have enough data to calculate.
|
||||||
if (foregroundUsageTimeInMs == 0 && backgroundUsageTimeInMs == 0 && consumePower == 0) {
|
if (foregroundUsageTimeInMs == 0
|
||||||
|
&& foregroundServiceUsageTimeInMs == 0
|
||||||
|
&& backgroundUsageTimeInMs == 0
|
||||||
|
&& consumePower == 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Forces refine the cumulative value since it may introduce deviation error since we
|
// Forces refine the cumulative value since it may introduce deviation error since we
|
||||||
// will apply the interpolation arithmetic.
|
// will apply the interpolation arithmetic.
|
||||||
final float totalUsageTimeInMs = foregroundUsageTimeInMs + backgroundUsageTimeInMs;
|
final float totalUsageTimeInMs =
|
||||||
|
foregroundUsageTimeInMs
|
||||||
|
+ backgroundUsageTimeInMs
|
||||||
|
+ foregroundServiceUsageTimeInMs;
|
||||||
if (totalUsageTimeInMs > slotDuration) {
|
if (totalUsageTimeInMs > slotDuration) {
|
||||||
final float ratio = slotDuration / totalUsageTimeInMs;
|
final float ratio = slotDuration / totalUsageTimeInMs;
|
||||||
if (sDebug) {
|
if (sDebug) {
|
||||||
Log.w(
|
Log.w(
|
||||||
TAG,
|
TAG,
|
||||||
String.format(
|
String.format(
|
||||||
"abnormal usage time %d|%d for:\n%s",
|
"abnormal usage time %d|%d|%d for:\n%s",
|
||||||
Duration.ofMillis(foregroundUsageTimeInMs).getSeconds(),
|
Duration.ofMillis(foregroundUsageTimeInMs).getSeconds(),
|
||||||
|
Duration.ofMillis(foregroundServiceUsageTimeInMs).getSeconds(),
|
||||||
Duration.ofMillis(backgroundUsageTimeInMs).getSeconds(),
|
Duration.ofMillis(backgroundUsageTimeInMs).getSeconds(),
|
||||||
selectedBatteryEntry));
|
selectedBatteryEntry));
|
||||||
}
|
}
|
||||||
foregroundUsageTimeInMs = Math.round(foregroundUsageTimeInMs * ratio);
|
foregroundUsageTimeInMs = Math.round(foregroundUsageTimeInMs * ratio);
|
||||||
|
foregroundServiceUsageTimeInMs = Math.round(foregroundServiceUsageTimeInMs * ratio);
|
||||||
backgroundUsageTimeInMs = Math.round(backgroundUsageTimeInMs * ratio);
|
backgroundUsageTimeInMs = Math.round(backgroundUsageTimeInMs * ratio);
|
||||||
consumePower = consumePower * ratio;
|
consumePower = consumePower * ratio;
|
||||||
foregroundUsageConsumePower = foregroundUsageConsumePower * ratio;
|
foregroundUsageConsumePower = foregroundUsageConsumePower * ratio;
|
||||||
@@ -1487,9 +1501,14 @@ public final class DataProcessor {
|
|||||||
appUsageMap,
|
appUsageMap,
|
||||||
selectedBatteryEntry.mUserId,
|
selectedBatteryEntry.mUserId,
|
||||||
selectedBatteryEntry.mPackageName));
|
selectedBatteryEntry.mPackageName));
|
||||||
// Make sure the background + screen-on time will not exceed the threshold.
|
// Ensure the following value will not exceed the threshold.
|
||||||
|
// value = background + foregroundService + screen-on
|
||||||
backgroundUsageTimeInMs =
|
backgroundUsageTimeInMs =
|
||||||
Math.min(backgroundUsageTimeInMs, (long) slotDuration - screenOnTime);
|
Math.min(backgroundUsageTimeInMs, (long) slotDuration - screenOnTime);
|
||||||
|
foregroundServiceUsageTimeInMs =
|
||||||
|
Math.min(
|
||||||
|
foregroundServiceUsageTimeInMs,
|
||||||
|
(long) slotDuration - screenOnTime - backgroundUsageTimeInMs);
|
||||||
final BatteryDiffEntry currentBatteryDiffEntry =
|
final BatteryDiffEntry currentBatteryDiffEntry =
|
||||||
new BatteryDiffEntry(
|
new BatteryDiffEntry(
|
||||||
context,
|
context,
|
||||||
@@ -1502,6 +1521,7 @@ public final class DataProcessor {
|
|||||||
selectedBatteryEntry.mAppLabel,
|
selectedBatteryEntry.mAppLabel,
|
||||||
selectedBatteryEntry.mConsumerType,
|
selectedBatteryEntry.mConsumerType,
|
||||||
foregroundUsageTimeInMs,
|
foregroundUsageTimeInMs,
|
||||||
|
foregroundServiceUsageTimeInMs,
|
||||||
backgroundUsageTimeInMs,
|
backgroundUsageTimeInMs,
|
||||||
screenOnTime,
|
screenOnTime,
|
||||||
consumePower,
|
consumePower,
|
||||||
@@ -1647,6 +1667,8 @@ public final class DataProcessor {
|
|||||||
} else {
|
} else {
|
||||||
// Sums up some field data into the existing one.
|
// Sums up some field data into the existing one.
|
||||||
oldBatteryDiffEntry.mForegroundUsageTimeInMs += entry.mForegroundUsageTimeInMs;
|
oldBatteryDiffEntry.mForegroundUsageTimeInMs += entry.mForegroundUsageTimeInMs;
|
||||||
|
oldBatteryDiffEntry.mForegroundServiceUsageTimeInMs +=
|
||||||
|
entry.mForegroundServiceUsageTimeInMs;
|
||||||
oldBatteryDiffEntry.mBackgroundUsageTimeInMs += entry.mBackgroundUsageTimeInMs;
|
oldBatteryDiffEntry.mBackgroundUsageTimeInMs += entry.mBackgroundUsageTimeInMs;
|
||||||
oldBatteryDiffEntry.mScreenOnTimeInMs += entry.mScreenOnTimeInMs;
|
oldBatteryDiffEntry.mScreenOnTimeInMs += entry.mScreenOnTimeInMs;
|
||||||
oldBatteryDiffEntry.mConsumePower += entry.mConsumePower;
|
oldBatteryDiffEntry.mConsumePower += entry.mConsumePower;
|
||||||
|
@@ -660,36 +660,39 @@ public final class DatabaseUtils {
|
|||||||
// Creates the ContentValues list to insert them into provider.
|
// Creates the ContentValues list to insert them into provider.
|
||||||
final List<ContentValues> valuesList = new ArrayList<>();
|
final List<ContentValues> valuesList = new ArrayList<>();
|
||||||
if (batteryEntryList != null) {
|
if (batteryEntryList != null) {
|
||||||
batteryEntryList.stream()
|
for (BatteryEntry entry : batteryEntryList) {
|
||||||
.filter(
|
final long foregroundMs = entry.getTimeInForegroundMs();
|
||||||
entry -> {
|
final long foregroundServiceMs = entry.getTimeInForegroundServiceMs();
|
||||||
final long foregroundMs = entry.getTimeInForegroundMs();
|
final long backgroundMs = entry.getTimeInBackgroundMs();
|
||||||
final long backgroundMs = entry.getTimeInBackgroundMs();
|
if (entry.getConsumedPower() == 0
|
||||||
if (entry.getConsumedPower() == 0
|
&& (foregroundMs != 0 || foregroundServiceMs != 0 || backgroundMs != 0)) {
|
||||||
&& (foregroundMs != 0 || backgroundMs != 0)) {
|
Log.w(
|
||||||
Log.w(
|
TAG,
|
||||||
TAG,
|
String.format(
|
||||||
String.format(
|
"no consumed power but has running time for %s"
|
||||||
"no consumed power but has running time for %s"
|
+ " time=%d|%d|%d",
|
||||||
+ " time=%d|%d",
|
entry.getLabel(),
|
||||||
entry.getLabel(), foregroundMs, backgroundMs));
|
foregroundMs,
|
||||||
}
|
foregroundServiceMs,
|
||||||
return entry.getConsumedPower() != 0
|
backgroundMs));
|
||||||
|| foregroundMs != 0
|
}
|
||||||
|| backgroundMs != 0;
|
if (entry.getConsumedPower() == 0
|
||||||
})
|
&& foregroundMs == 0
|
||||||
.forEach(
|
&& foregroundServiceMs == 0
|
||||||
entry ->
|
&& backgroundMs == 0) {
|
||||||
valuesList.add(
|
continue;
|
||||||
ConvertUtils.convertBatteryEntryToContentValues(
|
}
|
||||||
entry,
|
valuesList.add(
|
||||||
batteryUsageStats,
|
ConvertUtils.convertBatteryEntryToContentValues(
|
||||||
batteryLevel,
|
entry,
|
||||||
batteryStatus,
|
batteryUsageStats,
|
||||||
batteryHealth,
|
batteryLevel,
|
||||||
snapshotBootTimestamp,
|
batteryStatus,
|
||||||
snapshotTimestamp,
|
batteryHealth,
|
||||||
isFullChargeStart)));
|
snapshotBootTimestamp,
|
||||||
|
snapshotTimestamp,
|
||||||
|
isFullChargeStart));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int size = 1;
|
int size = 1;
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.settings.fuelgauge.batteryusage;
|
package com.android.settings.fuelgauge.batteryusage;
|
||||||
|
|
||||||
|
import java.time.Duration;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
|
||||||
/** A utility class for timestamp operations. */
|
/** A utility class for timestamp operations. */
|
||||||
@@ -48,6 +49,10 @@ final class TimestampUtils {
|
|||||||
return calendar.getTimeInMillis();
|
return calendar.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static long getSeconds(final long timeInMs) {
|
||||||
|
return Duration.ofMillis(timeInMs).getSeconds();
|
||||||
|
}
|
||||||
|
|
||||||
static boolean isMidnight(final long timestamp) {
|
static boolean isMidnight(final long timestamp) {
|
||||||
final Calendar calendar = Calendar.getInstance();
|
final Calendar calendar = Calendar.getInstance();
|
||||||
calendar.setTimeInMillis(timestamp);
|
calendar.setTimeInMillis(timestamp);
|
||||||
|
@@ -31,4 +31,5 @@ message BatteryUsageDiff {
|
|||||||
optional int64 foreground_usage_time = 14;
|
optional int64 foreground_usage_time = 14;
|
||||||
optional int64 background_usage_time = 15;
|
optional int64 background_usage_time = 15;
|
||||||
optional int64 screen_on_time = 16;
|
optional int64 screen_on_time = 16;
|
||||||
|
optional int64 foreground_service_usage_time = 17;
|
||||||
}
|
}
|
||||||
|
@@ -36,4 +36,5 @@ message BatteryInformation {
|
|||||||
optional double foreground_service_usage_consume_power = 17;
|
optional double foreground_service_usage_consume_power = 17;
|
||||||
optional double background_usage_consume_power = 18;
|
optional double background_usage_consume_power = 18;
|
||||||
optional double cached_usage_consume_power = 19;
|
optional double cached_usage_consume_power = 19;
|
||||||
|
optional int64 foreground_service_usage_time_in_ms = 20;
|
||||||
}
|
}
|
@@ -49,7 +49,9 @@ import androidx.loader.app.LoaderManager;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
|
import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry;
|
||||||
import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
|
import com.android.settings.fuelgauge.batteryusage.BatteryEntry;
|
||||||
|
import com.android.settings.fuelgauge.batteryusage.ConvertUtils;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.shadow.ShadowActivityManager;
|
import com.android.settings.testutils.shadow.ShadowActivityManager;
|
||||||
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
|
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
|
||||||
@@ -91,11 +93,10 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
private static final String USAGE_PERCENT = "16%";
|
private static final String USAGE_PERCENT = "16%";
|
||||||
private static final int ICON_ID = 123;
|
private static final int ICON_ID = 123;
|
||||||
private static final int UID = 1;
|
private static final int UID = 1;
|
||||||
|
private static final long FOREGROUND_TIME_MS = 444;
|
||||||
|
private static final long FOREGROUND_SERVICE_TIME_MS = 123;
|
||||||
private static final long BACKGROUND_TIME_MS = 100;
|
private static final long BACKGROUND_TIME_MS = 100;
|
||||||
private static final long FOREGROUND_ACTIVITY_TIME_MS = 123;
|
private static final long SCREEN_ON_TIME_MS = 321;
|
||||||
private static final long FOREGROUND_SERVICE_TIME_MS = 444;
|
|
||||||
private static final long FOREGROUND_TIME_MS =
|
|
||||||
FOREGROUND_ACTIVITY_TIME_MS + FOREGROUND_SERVICE_TIME_MS;
|
|
||||||
private static final String KEY_ALLOW_BACKGROUND_USAGE = "allow_background_usage";
|
private static final String KEY_ALLOW_BACKGROUND_USAGE = "allow_background_usage";
|
||||||
|
|
||||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||||
@@ -105,7 +106,6 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
@Mock private LayoutPreference mHeaderPreference;
|
@Mock private LayoutPreference mHeaderPreference;
|
||||||
@Mock private ApplicationsState mState;
|
@Mock private ApplicationsState mState;
|
||||||
@Mock private ApplicationsState.AppEntry mAppEntry;
|
@Mock private ApplicationsState.AppEntry mAppEntry;
|
||||||
@Mock private Bundle mBundle;
|
|
||||||
@Mock private BatteryEntry mBatteryEntry;
|
@Mock private BatteryEntry mBatteryEntry;
|
||||||
@Mock private PackageManager mPackageManager;
|
@Mock private PackageManager mPackageManager;
|
||||||
@Mock private InstallSourceInfo mInstallSourceInfo;
|
@Mock private InstallSourceInfo mInstallSourceInfo;
|
||||||
@@ -120,6 +120,8 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
private SettingsActivity mTestActivity;
|
private SettingsActivity mTestActivity;
|
||||||
private FakeFeatureFactory mFeatureFactory;
|
private FakeFeatureFactory mFeatureFactory;
|
||||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
|
private BatteryDiffEntry mBatteryDiffEntry;
|
||||||
|
private Bundle mBundle;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
@@ -131,6 +133,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
|
mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
|
||||||
|
|
||||||
mFragment = spy(new AdvancedPowerUsageDetail());
|
mFragment = spy(new AdvancedPowerUsageDetail());
|
||||||
|
mBundle = spy(new Bundle());
|
||||||
doReturn(mContext).when(mFragment).getContext();
|
doReturn(mContext).when(mFragment).getContext();
|
||||||
doReturn(mActivity).when(mFragment).getActivity();
|
doReturn(mActivity).when(mFragment).getActivity();
|
||||||
doReturn(SUMMARY).when(mFragment).getString(anyInt());
|
doReturn(SUMMARY).when(mFragment).getString(anyInt());
|
||||||
@@ -163,10 +166,35 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
|
|
||||||
when(mBatteryEntry.getUid()).thenReturn(UID);
|
when(mBatteryEntry.getUid()).thenReturn(UID);
|
||||||
when(mBatteryEntry.getLabel()).thenReturn(APP_LABEL);
|
when(mBatteryEntry.getLabel()).thenReturn(APP_LABEL);
|
||||||
when(mBatteryEntry.getTimeInBackgroundMs()).thenReturn(BACKGROUND_TIME_MS);
|
|
||||||
when(mBatteryEntry.getTimeInForegroundMs()).thenReturn(FOREGROUND_TIME_MS);
|
when(mBatteryEntry.getTimeInForegroundMs()).thenReturn(FOREGROUND_TIME_MS);
|
||||||
|
when(mBatteryEntry.getTimeInForegroundServiceMs()).thenReturn(FOREGROUND_SERVICE_TIME_MS);
|
||||||
|
when(mBatteryEntry.getTimeInBackgroundMs()).thenReturn(BACKGROUND_TIME_MS);
|
||||||
mBatteryEntry.mIconId = ICON_ID;
|
mBatteryEntry.mIconId = ICON_ID;
|
||||||
|
|
||||||
|
mBatteryDiffEntry =
|
||||||
|
spy(
|
||||||
|
new BatteryDiffEntry(
|
||||||
|
mContext,
|
||||||
|
/* uid= */ UID,
|
||||||
|
/* userId= */ 0,
|
||||||
|
/* key= */ "key",
|
||||||
|
/* isHidden= */ false,
|
||||||
|
/* componentId= */ -1,
|
||||||
|
/* legacyPackageName= */ null,
|
||||||
|
/* legacyLabel= */ null,
|
||||||
|
/*consumerType*/ ConvertUtils.CONSUMER_TYPE_USER_BATTERY,
|
||||||
|
/* foregroundUsageTimeInMs= */ FOREGROUND_TIME_MS,
|
||||||
|
/* foregroundSerUsageTimeInMs= */ FOREGROUND_SERVICE_TIME_MS,
|
||||||
|
/* backgroundUsageTimeInMs= */ BACKGROUND_TIME_MS,
|
||||||
|
/* screenOnTimeInMs= */ SCREEN_ON_TIME_MS,
|
||||||
|
/* consumePower= */ 0,
|
||||||
|
/* foregroundUsageConsumePower= */ 0,
|
||||||
|
/* foregroundServiceUsageConsumePower= */ 0,
|
||||||
|
/* backgroundUsageConsumePower= */ 0,
|
||||||
|
/* cachedUsageConsumePower= */ 0));
|
||||||
|
when(mBatteryDiffEntry.getAppLabel()).thenReturn(APP_LABEL);
|
||||||
|
when(mBatteryDiffEntry.getAppIconId()).thenReturn(ICON_ID);
|
||||||
|
|
||||||
mFragment.mHeaderPreference = mHeaderPreference;
|
mFragment.mHeaderPreference = mHeaderPreference;
|
||||||
mFragment.mState = mState;
|
mFragment.mState = mState;
|
||||||
mFragment.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
|
mFragment.mBatteryOptimizeUtils = mBatteryOptimizeUtils;
|
||||||
@@ -191,6 +219,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
.when(mActivity)
|
.when(mActivity)
|
||||||
.startActivityAsUser(captor.capture(), nullable(UserHandle.class));
|
.startActivityAsUser(captor.capture(), nullable(UserHandle.class));
|
||||||
doAnswer(callable).when(mActivity).startActivity(captor.capture());
|
doAnswer(callable).when(mActivity).startActivity(captor.capture());
|
||||||
|
doAnswer(callable).when(mContext).startActivity(captor.capture());
|
||||||
|
|
||||||
mAllowBackgroundUsagePreference = new PrimarySwitchPreference(mContext);
|
mAllowBackgroundUsagePreference = new PrimarySwitchPreference(mContext);
|
||||||
mAllowBackgroundUsagePreference.setKey(KEY_ALLOW_BACKGROUND_USAGE);
|
mAllowBackgroundUsagePreference.setKey(KEY_ALLOW_BACKGROUND_USAGE);
|
||||||
@@ -256,6 +285,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void startBatteryDetailPage_invalidToShowSummary_noFGBDData() {
|
public void startBatteryDetailPage_invalidToShowSummary_noFGBDData() {
|
||||||
|
mBundle.clear();
|
||||||
AdvancedPowerUsageDetail.startBatteryDetailPage(
|
AdvancedPowerUsageDetail.startBatteryDetailPage(
|
||||||
mActivity, mFragment, mBatteryEntry, USAGE_PERCENT);
|
mActivity, mFragment, mBatteryEntry, USAGE_PERCENT);
|
||||||
|
|
||||||
@@ -267,6 +297,35 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
.isEqualTo(USAGE_PERCENT);
|
.isEqualTo(USAGE_PERCENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void startBatteryDetailPage_showSummary_hasFGBDData() {
|
||||||
|
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
|
||||||
|
mBundle.clear();
|
||||||
|
AdvancedPowerUsageDetail.startBatteryDetailPage(
|
||||||
|
mContext,
|
||||||
|
mFragment.getMetricsCategory(),
|
||||||
|
mBatteryDiffEntry,
|
||||||
|
USAGE_PERCENT,
|
||||||
|
/* slotInformation= */ null,
|
||||||
|
/* showTimeInformation= */ true,
|
||||||
|
/* anomalyHintPrefKey= */ null,
|
||||||
|
/* anomalyHintText= */ null);
|
||||||
|
|
||||||
|
verify(mContext).startActivity(captor.capture());
|
||||||
|
assertThat(mBundle.getInt(AdvancedPowerUsageDetail.EXTRA_UID)).isEqualTo(UID);
|
||||||
|
assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME))
|
||||||
|
.isEqualTo(BACKGROUND_TIME_MS + FOREGROUND_SERVICE_TIME_MS);
|
||||||
|
assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME))
|
||||||
|
.isEqualTo(FOREGROUND_TIME_MS);
|
||||||
|
assertThat(mBundle.getLong(AdvancedPowerUsageDetail.EXTRA_SCREEN_ON_TIME))
|
||||||
|
.isEqualTo(SCREEN_ON_TIME_MS);
|
||||||
|
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT))
|
||||||
|
.isEqualTo(USAGE_PERCENT);
|
||||||
|
assertThat(mBundle.getString(AdvancedPowerUsageDetail.EXTRA_SLOT_TIME))
|
||||||
|
.isEqualTo(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void startBatteryDetailPage_noBatteryUsage_hasBasicData() {
|
public void startBatteryDetailPage_noBatteryUsage_hasBasicData() {
|
||||||
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
|
final ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
|
||||||
@@ -292,6 +351,7 @@ public class AdvancedPowerUsageDetailTest {
|
|||||||
@Test
|
@Test
|
||||||
public void startBatteryDetailPage_batteryEntryNotExisted_extractUidFromPackageName()
|
public void startBatteryDetailPage_batteryEntryNotExisted_extractUidFromPackageName()
|
||||||
throws PackageManager.NameNotFoundException {
|
throws PackageManager.NameNotFoundException {
|
||||||
|
mBundle.clear();
|
||||||
doReturn(UID).when(mPackageManager).getPackageUid(PACKAGE_NAME[0], 0 /* no flag */);
|
doReturn(UID).when(mPackageManager).getPackageUid(PACKAGE_NAME[0], 0 /* no flag */);
|
||||||
|
|
||||||
AdvancedPowerUsageDetail.startBatteryDetailPage(
|
AdvancedPowerUsageDetail.startBatteryDetailPage(
|
||||||
|
@@ -207,6 +207,7 @@ public class BatteryDiffDataTest {
|
|||||||
batteryHistEntry.mAppLabel,
|
batteryHistEntry.mAppLabel,
|
||||||
batteryHistEntry.mConsumerType,
|
batteryHistEntry.mConsumerType,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0,
|
/* backgroundUsageTimeInMs= */ 0,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
consumePower,
|
consumePower,
|
||||||
|
@@ -111,8 +111,9 @@ public final class BatteryDiffEntryTest {
|
|||||||
/* legacyLabel= */ null,
|
/* legacyLabel= */ null,
|
||||||
/*consumerType*/ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
/*consumerType*/ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
||||||
/* foregroundUsageTimeInMs= */ 10001L,
|
/* foregroundUsageTimeInMs= */ 10001L,
|
||||||
/* backgroundUsageTimeInMs= */ 20002L,
|
/* foregroundServiceUsageTimeInMs= */ 20002L,
|
||||||
/* screenOnTimeInMs= */ 30003L,
|
/* backgroundUsageTimeInMs= */ 30003L,
|
||||||
|
/* screenOnTimeInMs= */ 40004L,
|
||||||
/* consumePower= */ 22.0,
|
/* consumePower= */ 22.0,
|
||||||
/* foregroundUsageConsumePower= */ 10.0,
|
/* foregroundUsageConsumePower= */ 10.0,
|
||||||
/* foregroundServiceUsageConsumePower= */ 10.0,
|
/* foregroundServiceUsageConsumePower= */ 10.0,
|
||||||
@@ -137,8 +138,9 @@ public final class BatteryDiffEntryTest {
|
|||||||
/* legacyLabel= */ null,
|
/* legacyLabel= */ null,
|
||||||
/*consumerType*/ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
/*consumerType*/ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
||||||
/* foregroundUsageTimeInMs= */ 10001L,
|
/* foregroundUsageTimeInMs= */ 10001L,
|
||||||
/* backgroundUsageTimeInMs= */ 20002L,
|
/* foregroundServiceUsageTimeInMs= */ 20002L,
|
||||||
/* screenOnTimeInMs= */ 30003L,
|
/* backgroundUsageTimeInMs= */ 30003L,
|
||||||
|
/* screenOnTimeInMs= */ 40004L,
|
||||||
/* consumePower= */ 22.0,
|
/* consumePower= */ 22.0,
|
||||||
/* foregroundUsageConsumePower= */ 10.0,
|
/* foregroundUsageConsumePower= */ 10.0,
|
||||||
/* foregroundServiceUsageConsumePower= */ 10.0,
|
/* foregroundServiceUsageConsumePower= */ 10.0,
|
||||||
@@ -165,6 +167,7 @@ public final class BatteryDiffEntryTest {
|
|||||||
/* legacyLabel= */ BatteryDiffEntry.SYSTEM_APPS_KEY,
|
/* legacyLabel= */ BatteryDiffEntry.SYSTEM_APPS_KEY,
|
||||||
/*consumerType*/ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
/*consumerType*/ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0,
|
/* backgroundUsageTimeInMs= */ 0,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* consumePower= */ 0,
|
/* consumePower= */ 0,
|
||||||
@@ -552,6 +555,7 @@ public final class BatteryDiffEntryTest {
|
|||||||
/* legacyLabel= */ null,
|
/* legacyLabel= */ null,
|
||||||
/*consumerType*/ consumerType,
|
/*consumerType*/ consumerType,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0,
|
/* backgroundUsageTimeInMs= */ 0,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* consumePower= */ 0,
|
/* consumePower= */ 0,
|
||||||
@@ -576,6 +580,7 @@ public final class BatteryDiffEntryTest {
|
|||||||
batteryHistEntry.mConsumerType,
|
batteryHistEntry.mConsumerType,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0,
|
/* backgroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
consumePower,
|
consumePower,
|
||||||
/* foregroundUsageConsumePower= */ 0,
|
/* foregroundUsageConsumePower= */ 0,
|
||||||
|
@@ -195,7 +195,8 @@ public class BatteryEntryTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getTimeInForegroundMs_app() {
|
public void getTimeInForegroundMs_app() {
|
||||||
when(mUidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_FOREGROUND))
|
when(mUidBatteryConsumer.getTimeInProcessStateMs(
|
||||||
|
UidBatteryConsumer.PROCESS_STATE_FOREGROUND))
|
||||||
.thenReturn(100L);
|
.thenReturn(100L);
|
||||||
|
|
||||||
final BatteryEntry entry =
|
final BatteryEntry entry =
|
||||||
@@ -226,8 +227,9 @@ public class BatteryEntryTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getTimeInBackgroundMs_app() {
|
public void getTimeInBackgroundMs_app() {
|
||||||
when(mUidBatteryConsumer.getTimeInStateMs(UidBatteryConsumer.STATE_BACKGROUND))
|
when(mUidBatteryConsumer.getTimeInProcessStateMs(
|
||||||
.thenReturn(100L);
|
UidBatteryConsumer.PROCESS_STATE_BACKGROUND))
|
||||||
|
.thenReturn(30L);
|
||||||
|
|
||||||
final BatteryEntry entry =
|
final BatteryEntry entry =
|
||||||
new BatteryEntry(
|
new BatteryEntry(
|
||||||
@@ -239,7 +241,26 @@ public class BatteryEntryTest {
|
|||||||
null,
|
null,
|
||||||
null);
|
null);
|
||||||
|
|
||||||
assertThat(entry.getTimeInBackgroundMs()).isEqualTo(100L);
|
assertThat(entry.getTimeInBackgroundMs()).isEqualTo(30L);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTimeInForegroundServiceMs_app() {
|
||||||
|
when(mUidBatteryConsumer.getTimeInProcessStateMs(
|
||||||
|
UidBatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE))
|
||||||
|
.thenReturn(70L);
|
||||||
|
|
||||||
|
final BatteryEntry entry =
|
||||||
|
new BatteryEntry(
|
||||||
|
RuntimeEnvironment.application,
|
||||||
|
mMockUserManager,
|
||||||
|
mUidBatteryConsumer,
|
||||||
|
false,
|
||||||
|
0,
|
||||||
|
null,
|
||||||
|
null);
|
||||||
|
|
||||||
|
assertThat(entry.getTimeInForegroundServiceMs()).isEqualTo(70L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -65,6 +65,7 @@ public final class BatteryHistEntryTest {
|
|||||||
when(mMockBatteryEntry.getConsumedPowerInCached()).thenReturn(1.5);
|
when(mMockBatteryEntry.getConsumedPowerInCached()).thenReturn(1.5);
|
||||||
mMockBatteryEntry.mPercent = 0.3;
|
mMockBatteryEntry.mPercent = 0.3;
|
||||||
when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
|
when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
|
||||||
|
when(mMockBatteryEntry.getTimeInForegroundServiceMs()).thenReturn(3456L);
|
||||||
when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
|
when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
|
||||||
when(mMockBatteryEntry.getPowerComponentId()).thenReturn(expectedType);
|
when(mMockBatteryEntry.getPowerComponentId()).thenReturn(expectedType);
|
||||||
when(mMockBatteryEntry.getConsumerType())
|
when(mMockBatteryEntry.getConsumerType())
|
||||||
@@ -105,6 +106,7 @@ public final class BatteryHistEntryTest {
|
|||||||
/* backgroundUsageConsumePower= */ 1.4,
|
/* backgroundUsageConsumePower= */ 1.4,
|
||||||
/* cachedUsageConsumePower= */ 1.5,
|
/* cachedUsageConsumePower= */ 1.5,
|
||||||
/* foregroundUsageTimeInMs= */ 1234L,
|
/* foregroundUsageTimeInMs= */ 1234L,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 3456L,
|
||||||
/* backgroundUsageTimeInMs= */ 5689L,
|
/* backgroundUsageTimeInMs= */ 5689L,
|
||||||
/* batteryLevel= */ 12),
|
/* batteryLevel= */ 12),
|
||||||
/* drainType= */ 3,
|
/* drainType= */ 3,
|
||||||
@@ -211,6 +213,7 @@ public final class BatteryHistEntryTest {
|
|||||||
/* backgroundUsageConsumePower= */ 3,
|
/* backgroundUsageConsumePower= */ 3,
|
||||||
/* cachedUsageConsumePower= */ 4,
|
/* cachedUsageConsumePower= */ 4,
|
||||||
/* foregroundUsageTimeInMs= */ 100,
|
/* foregroundUsageTimeInMs= */ 100,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 150,
|
||||||
/* backgroundUsageTimeInMs= */ 200,
|
/* backgroundUsageTimeInMs= */ 200,
|
||||||
/* batteryLevel= */ 90);
|
/* batteryLevel= */ 90);
|
||||||
final BatteryHistEntry upperHistEntry =
|
final BatteryHistEntry upperHistEntry =
|
||||||
@@ -224,6 +227,7 @@ public final class BatteryHistEntryTest {
|
|||||||
/* backgroundUsageConsumePower= */ 6,
|
/* backgroundUsageConsumePower= */ 6,
|
||||||
/* cachedUsageConsumePower= */ 5,
|
/* cachedUsageConsumePower= */ 5,
|
||||||
/* foregroundUsageTimeInMs= */ 200,
|
/* foregroundUsageTimeInMs= */ 200,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 250,
|
||||||
/* backgroundUsageTimeInMs= */ 300,
|
/* backgroundUsageTimeInMs= */ 300,
|
||||||
/* batteryLevel= */ 80);
|
/* batteryLevel= */ 80);
|
||||||
|
|
||||||
@@ -244,6 +248,7 @@ public final class BatteryHistEntryTest {
|
|||||||
/* backgroundUsageConsumePower= */ 3 + 0.5 * (6 - 3),
|
/* backgroundUsageConsumePower= */ 3 + 0.5 * (6 - 3),
|
||||||
/* cachedUsageConsumePower= */ 4 + 0.5 * (5 - 4),
|
/* cachedUsageConsumePower= */ 4 + 0.5 * (5 - 4),
|
||||||
/* foregroundUsageTimeInMs= */ Math.round(100 + 0.5 * (200 - 100)),
|
/* foregroundUsageTimeInMs= */ Math.round(100 + 0.5 * (200 - 100)),
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ Math.round(150 + 0.5 * (250 - 150)),
|
||||||
/* backgroundUsageTimeInMs= */ Math.round(200 + 0.5 * (300 - 200)),
|
/* backgroundUsageTimeInMs= */ Math.round(200 + 0.5 * (300 - 200)),
|
||||||
/* batteryLevel= */ (int) Math.round(90 + 0.5 * (80 - 90)));
|
/* batteryLevel= */ (int) Math.round(90 + 0.5 * (80 - 90)));
|
||||||
}
|
}
|
||||||
@@ -264,6 +269,7 @@ public final class BatteryHistEntryTest {
|
|||||||
/* backgroundUsageConsumePower= */ 6,
|
/* backgroundUsageConsumePower= */ 6,
|
||||||
/* cachedUsageConsumePower= */ 5,
|
/* cachedUsageConsumePower= */ 5,
|
||||||
/* foregroundUsageTimeInMs= */ 200,
|
/* foregroundUsageTimeInMs= */ 200,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 250,
|
||||||
/* backgroundUsageTimeInMs= */ 300,
|
/* backgroundUsageTimeInMs= */ 300,
|
||||||
/* batteryLevel= */ 80);
|
/* batteryLevel= */ 80);
|
||||||
|
|
||||||
@@ -288,6 +294,7 @@ public final class BatteryHistEntryTest {
|
|||||||
/* backgroundUsageConsumePower= */ 0.5 * 6,
|
/* backgroundUsageConsumePower= */ 0.5 * 6,
|
||||||
/* cachedUsageConsumePower= */ 0.5 * 5,
|
/* cachedUsageConsumePower= */ 0.5 * 5,
|
||||||
/* foregroundUsageTimeInMs= */ Math.round(0.5 * 200),
|
/* foregroundUsageTimeInMs= */ Math.round(0.5 * 200),
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ Math.round(0.5 * 250),
|
||||||
/* backgroundUsageTimeInMs= */ Math.round(0.5 * 300),
|
/* backgroundUsageTimeInMs= */ Math.round(0.5 * 300),
|
||||||
/* batteryLevel= */ upperHistEntry.mBatteryLevel);
|
/* batteryLevel= */ upperHistEntry.mBatteryLevel);
|
||||||
}
|
}
|
||||||
@@ -317,6 +324,7 @@ public final class BatteryHistEntryTest {
|
|||||||
/* backgroundUsageConsumePower= */ 1.4,
|
/* backgroundUsageConsumePower= */ 1.4,
|
||||||
/* cachedUsageConsumePower= */ 1.5,
|
/* cachedUsageConsumePower= */ 1.5,
|
||||||
/* foregroundUsageTimeInMs= */ 1234L,
|
/* foregroundUsageTimeInMs= */ 1234L,
|
||||||
|
/*foregroundServiceUsageTimeInMs=*/ 3456L,
|
||||||
/* backgroundUsageTimeInMs= */ 5689L,
|
/* backgroundUsageTimeInMs= */ 5689L,
|
||||||
/* batteryLevel= */ 12);
|
/* batteryLevel= */ 12);
|
||||||
}
|
}
|
||||||
@@ -334,6 +342,7 @@ public final class BatteryHistEntryTest {
|
|||||||
double backgroundUsageConsumePower,
|
double backgroundUsageConsumePower,
|
||||||
double cachedUsageConsumePower,
|
double cachedUsageConsumePower,
|
||||||
long foregroundUsageTimeInMs,
|
long foregroundUsageTimeInMs,
|
||||||
|
long foregroundServiceUsageTimeInMs,
|
||||||
long backgroundUsageTimeInMs,
|
long backgroundUsageTimeInMs,
|
||||||
int batteryLevel) {
|
int batteryLevel) {
|
||||||
assertThat(entry.isValidEntry()).isTrue();
|
assertThat(entry.isValidEntry()).isTrue();
|
||||||
@@ -354,6 +363,7 @@ public final class BatteryHistEntryTest {
|
|||||||
assertThat(entry.mCachedUsageConsumePower).isEqualTo(cachedUsageConsumePower);
|
assertThat(entry.mCachedUsageConsumePower).isEqualTo(cachedUsageConsumePower);
|
||||||
assertThat(entry.mPercentOfTotal).isEqualTo(percentOfTotal);
|
assertThat(entry.mPercentOfTotal).isEqualTo(percentOfTotal);
|
||||||
assertThat(entry.mForegroundUsageTimeInMs).isEqualTo(foregroundUsageTimeInMs);
|
assertThat(entry.mForegroundUsageTimeInMs).isEqualTo(foregroundUsageTimeInMs);
|
||||||
|
assertThat(entry.mForegroundServiceUsageTimeInMs).isEqualTo(foregroundServiceUsageTimeInMs);
|
||||||
assertThat(entry.mBackgroundUsageTimeInMs).isEqualTo(backgroundUsageTimeInMs);
|
assertThat(entry.mBackgroundUsageTimeInMs).isEqualTo(backgroundUsageTimeInMs);
|
||||||
assertThat(entry.mDrainType).isEqualTo(drainType);
|
assertThat(entry.mDrainType).isEqualTo(drainType);
|
||||||
assertThat(entry.mConsumerType).isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
|
assertThat(entry.mConsumerType).isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
|
||||||
@@ -372,6 +382,7 @@ public final class BatteryHistEntryTest {
|
|||||||
double backgroundUsageConsumePower,
|
double backgroundUsageConsumePower,
|
||||||
double cachedUsageConsumePower,
|
double cachedUsageConsumePower,
|
||||||
long foregroundUsageTimeInMs,
|
long foregroundUsageTimeInMs,
|
||||||
|
long foregroundServiceUsageTimeInMs,
|
||||||
long backgroundUsageTimeInMs,
|
long backgroundUsageTimeInMs,
|
||||||
int batteryLevel) {
|
int batteryLevel) {
|
||||||
final MatrixCursor cursor =
|
final MatrixCursor cursor =
|
||||||
@@ -406,6 +417,7 @@ public final class BatteryHistEntryTest {
|
|||||||
.setPercentOfTotal(0.3)
|
.setPercentOfTotal(0.3)
|
||||||
.setDrainType(3)
|
.setDrainType(3)
|
||||||
.setForegroundUsageTimeInMs(foregroundUsageTimeInMs)
|
.setForegroundUsageTimeInMs(foregroundUsageTimeInMs)
|
||||||
|
.setForegroundServiceUsageTimeInMs(foregroundServiceUsageTimeInMs)
|
||||||
.setBackgroundUsageTimeInMs(backgroundUsageTimeInMs)
|
.setBackgroundUsageTimeInMs(backgroundUsageTimeInMs)
|
||||||
.build();
|
.build();
|
||||||
cursor.addRow(
|
cursor.addRow(
|
||||||
|
@@ -100,7 +100,8 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* legacyLabel= */ null,
|
/* legacyLabel= */ null,
|
||||||
/* consumerType= */ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
/* consumerType= */ ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
||||||
/* foregroundUsageTimeInMs= */ 1,
|
/* foregroundUsageTimeInMs= */ 1,
|
||||||
/* backgroundUsageTimeInMs= */ 2,
|
/* foregroundServiceUsageTimeInMs= */ 2,
|
||||||
|
/* backgroundUsageTimeInMs= */ 3,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* consumePower= */ 3,
|
/* consumePower= */ 3,
|
||||||
/* foregroundUsageConsumePower= */ 0,
|
/* foregroundUsageConsumePower= */ 0,
|
||||||
@@ -275,6 +276,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* isSystem= */ true,
|
/* isSystem= */ true,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0);
|
/* backgroundUsageTimeInMs= */ 0);
|
||||||
batteryDiffEntry.mConsumePower = 0.8;
|
batteryDiffEntry.mConsumePower = 0.8;
|
||||||
batteryDiffEntry.setTotalConsumePower(100);
|
batteryDiffEntry.setTotalConsumePower(100);
|
||||||
@@ -293,6 +295,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* isSystem= */ true,
|
/* isSystem= */ true,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0);
|
/* backgroundUsageTimeInMs= */ 0);
|
||||||
batteryDiffEntry.mConsumePower = 16;
|
batteryDiffEntry.mConsumePower = 16;
|
||||||
batteryDiffEntry.setTotalConsumePower(100);
|
batteryDiffEntry.setTotalConsumePower(100);
|
||||||
@@ -314,6 +317,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* isSystem= */ true,
|
/* isSystem= */ true,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0));
|
/* backgroundUsageTimeInMs= */ 0));
|
||||||
assertThat(pref.getSummary().toString().isEmpty()).isTrue();
|
assertThat(pref.getSummary().toString().isEmpty()).isTrue();
|
||||||
}
|
}
|
||||||
@@ -329,6 +333,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* isSystem= */ true,
|
/* isSystem= */ true,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1,
|
/* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0));
|
/* backgroundUsageTimeInMs= */ 0));
|
||||||
assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a min");
|
assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a min");
|
||||||
}
|
}
|
||||||
@@ -344,6 +349,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* isSystem= */ true,
|
/* isSystem= */ true,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS * 2,
|
/* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS * 2,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0));
|
/* backgroundUsageTimeInMs= */ 0));
|
||||||
assertThat(pref.getSummary().toString()).isEqualTo("Total: 2 min");
|
assertThat(pref.getSummary().toString()).isEqualTo("Total: 2 min");
|
||||||
}
|
}
|
||||||
@@ -359,6 +365,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* isSystem= */ false,
|
/* isSystem= */ false,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0));
|
/* backgroundUsageTimeInMs= */ 0));
|
||||||
assertThat(pref.getSummary().toString().isEmpty()).isTrue();
|
assertThat(pref.getSummary().toString().isEmpty()).isTrue();
|
||||||
}
|
}
|
||||||
@@ -374,10 +381,27 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* isSystem= */ false,
|
/* isSystem= */ false,
|
||||||
/* screenOnTimeInMs= */ 0,
|
/* screenOnTimeInMs= */ 0,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS));
|
/* backgroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS));
|
||||||
assertThat(pref.getSummary().toString()).isEqualTo("Background: 1 min");
|
assertThat(pref.getSummary().toString()).isEqualTo("Background: 1 min");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setPreferenceSummary_appEntryWithFGSTime_expectedSummary() {
|
||||||
|
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
||||||
|
pref.setSummary(PREF_SUMMARY);
|
||||||
|
|
||||||
|
mBatteryUsageBreakdownController.setPreferenceSummary(
|
||||||
|
pref,
|
||||||
|
createBatteryDiffEntry(
|
||||||
|
/* isSystem= */ false,
|
||||||
|
/* screenOnTimeInMs= */ 0,
|
||||||
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS / 2,
|
||||||
|
/* backgroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS / 2));
|
||||||
|
assertThat(pref.getSummary().toString()).isEqualTo("Background: 1 min");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPreferenceSummary_appEntryScreenOnTimeOnly_expectedSummary() {
|
public void setPreferenceSummary_appEntryScreenOnTimeOnly_expectedSummary() {
|
||||||
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
||||||
@@ -389,6 +413,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* isSystem= */ false,
|
/* isSystem= */ false,
|
||||||
/* screenOnTimeInMs= */ DateUtils.MINUTE_IN_MILLIS,
|
/* screenOnTimeInMs= */ DateUtils.MINUTE_IN_MILLIS,
|
||||||
/* foregroundUsageTimeInMs= */ 0,
|
/* foregroundUsageTimeInMs= */ 0,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ 0));
|
/* backgroundUsageTimeInMs= */ 0));
|
||||||
assertThat(pref.getSummary().toString()).isEqualTo("Screen time: 1 min");
|
assertThat(pref.getSummary().toString()).isEqualTo("Screen time: 1 min");
|
||||||
}
|
}
|
||||||
@@ -404,6 +429,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* isSystem= */ false,
|
/* isSystem= */ false,
|
||||||
/* screenOnTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1,
|
/* screenOnTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1,
|
||||||
/* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1,
|
/* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1,
|
||||||
|
/* foregroundServiceUsageTimeInMs= */ 0,
|
||||||
/* backgroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1));
|
/* backgroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1));
|
||||||
assertThat(pref.getSummary().toString())
|
assertThat(pref.getSummary().toString())
|
||||||
.isEqualTo("Screen time: less than a min\nBackground: less than a min");
|
.isEqualTo("Screen time: less than a min\nBackground: less than a min");
|
||||||
@@ -413,6 +439,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
boolean isSystem,
|
boolean isSystem,
|
||||||
long screenOnTimeInMs,
|
long screenOnTimeInMs,
|
||||||
long foregroundUsageTimeInMs,
|
long foregroundUsageTimeInMs,
|
||||||
|
long foregroundServiceUsageTimeInMs,
|
||||||
long backgroundUsageTimeInMs) {
|
long backgroundUsageTimeInMs) {
|
||||||
final ContentValues contentValues = new ContentValues();
|
final ContentValues contentValues = new ContentValues();
|
||||||
contentValues.put(
|
contentValues.put(
|
||||||
@@ -435,6 +462,7 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
batteryHistEntry.mConsumerType,
|
batteryHistEntry.mConsumerType,
|
||||||
foregroundUsageTimeInMs,
|
foregroundUsageTimeInMs,
|
||||||
backgroundUsageTimeInMs,
|
backgroundUsageTimeInMs,
|
||||||
|
foregroundServiceUsageTimeInMs,
|
||||||
screenOnTimeInMs,
|
screenOnTimeInMs,
|
||||||
/* consumePower= */ 0,
|
/* consumePower= */ 0,
|
||||||
/* foregroundUsageConsumePower= */ 0,
|
/* foregroundUsageConsumePower= */ 0,
|
||||||
|
@@ -290,6 +290,7 @@ public final class BatteryUsageContentProviderTest {
|
|||||||
.setPercentOfTotal(0.9)
|
.setPercentOfTotal(0.9)
|
||||||
.setForegroundUsageTimeInMs(1000)
|
.setForegroundUsageTimeInMs(1000)
|
||||||
.setBackgroundUsageTimeInMs(2000)
|
.setBackgroundUsageTimeInMs(2000)
|
||||||
|
.setForegroundServiceUsageTimeInMs(1500)
|
||||||
.setDrainType(1)
|
.setDrainType(1)
|
||||||
.build();
|
.build();
|
||||||
final String expectedBatteryInformationString =
|
final String expectedBatteryInformationString =
|
||||||
|
@@ -92,6 +92,7 @@ public final class ConvertUtilsTest {
|
|||||||
mMockBatteryEntry.mPercent = 0.3;
|
mMockBatteryEntry.mPercent = 0.3;
|
||||||
when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
|
when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
|
||||||
when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
|
when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
|
||||||
|
when(mMockBatteryEntry.getTimeInForegroundServiceMs()).thenReturn(3456L);
|
||||||
when(mMockBatteryEntry.getPowerComponentId()).thenReturn(-1);
|
when(mMockBatteryEntry.getPowerComponentId()).thenReturn(-1);
|
||||||
when(mMockBatteryEntry.getConsumerType())
|
when(mMockBatteryEntry.getConsumerType())
|
||||||
.thenReturn(ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
|
.thenReturn(ConvertUtils.CONSUMER_TYPE_UID_BATTERY);
|
||||||
@@ -133,6 +134,7 @@ public final class ConvertUtilsTest {
|
|||||||
assertThat(batteryInformation.getPercentOfTotal()).isEqualTo(0.3);
|
assertThat(batteryInformation.getPercentOfTotal()).isEqualTo(0.3);
|
||||||
assertThat(batteryInformation.getForegroundUsageTimeInMs()).isEqualTo(1234L);
|
assertThat(batteryInformation.getForegroundUsageTimeInMs()).isEqualTo(1234L);
|
||||||
assertThat(batteryInformation.getBackgroundUsageTimeInMs()).isEqualTo(5689L);
|
assertThat(batteryInformation.getBackgroundUsageTimeInMs()).isEqualTo(5689L);
|
||||||
|
assertThat(batteryInformation.getForegroundServiceUsageTimeInMs()).isEqualTo(3456L);
|
||||||
assertThat(batteryInformation.getDrainType()).isEqualTo(-1);
|
assertThat(batteryInformation.getDrainType()).isEqualTo(-1);
|
||||||
assertThat(deviceBatteryState.getBatteryLevel()).isEqualTo(12);
|
assertThat(deviceBatteryState.getBatteryLevel()).isEqualTo(12);
|
||||||
assertThat(deviceBatteryState.getBatteryStatus())
|
assertThat(deviceBatteryState.getBatteryStatus())
|
||||||
@@ -157,6 +159,7 @@ public final class ConvertUtilsTest {
|
|||||||
mMockBatteryEntry.mPercent = 0.3;
|
mMockBatteryEntry.mPercent = 0.3;
|
||||||
when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
|
when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
|
||||||
when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
|
when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
|
||||||
|
when(mMockBatteryEntry.getTimeInForegroundServiceMs()).thenReturn(3456L);
|
||||||
when(mMockBatteryEntry.getConsumerType())
|
when(mMockBatteryEntry.getConsumerType())
|
||||||
.thenReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
|
.thenReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
|
||||||
|
|
||||||
@@ -196,6 +199,7 @@ public final class ConvertUtilsTest {
|
|||||||
assertThat(batteryInformation.getPercentOfTotal()).isEqualTo(0.3);
|
assertThat(batteryInformation.getPercentOfTotal()).isEqualTo(0.3);
|
||||||
assertThat(batteryInformation.getForegroundUsageTimeInMs()).isEqualTo(1234L);
|
assertThat(batteryInformation.getForegroundUsageTimeInMs()).isEqualTo(1234L);
|
||||||
assertThat(batteryInformation.getBackgroundUsageTimeInMs()).isEqualTo(5689L);
|
assertThat(batteryInformation.getBackgroundUsageTimeInMs()).isEqualTo(5689L);
|
||||||
|
assertThat(batteryInformation.getForegroundServiceUsageTimeInMs()).isEqualTo(3456L);
|
||||||
assertThat(batteryInformation.getDrainType())
|
assertThat(batteryInformation.getDrainType())
|
||||||
.isEqualTo(BatteryConsumer.POWER_COMPONENT_CPU);
|
.isEqualTo(BatteryConsumer.POWER_COMPONENT_CPU);
|
||||||
assertThat(deviceBatteryState.getBatteryLevel()).isEqualTo(12);
|
assertThat(deviceBatteryState.getBatteryLevel()).isEqualTo(12);
|
||||||
@@ -307,6 +311,7 @@ public final class ConvertUtilsTest {
|
|||||||
mMockBatteryEntry.mPercent = 0.3;
|
mMockBatteryEntry.mPercent = 0.3;
|
||||||
when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
|
when(mMockBatteryEntry.getTimeInForegroundMs()).thenReturn(1234L);
|
||||||
when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
|
when(mMockBatteryEntry.getTimeInBackgroundMs()).thenReturn(5689L);
|
||||||
|
when(mMockBatteryEntry.getTimeInForegroundServiceMs()).thenReturn(3456L);
|
||||||
when(mMockBatteryEntry.getPowerComponentId()).thenReturn(expectedType);
|
when(mMockBatteryEntry.getPowerComponentId()).thenReturn(expectedType);
|
||||||
when(mMockBatteryEntry.getConsumerType())
|
when(mMockBatteryEntry.getConsumerType())
|
||||||
.thenReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
|
.thenReturn(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
|
||||||
@@ -331,6 +336,7 @@ public final class ConvertUtilsTest {
|
|||||||
assertThat(batteryHistEntry.mPercentOfTotal).isEqualTo(0.3);
|
assertThat(batteryHistEntry.mPercentOfTotal).isEqualTo(0.3);
|
||||||
assertThat(batteryHistEntry.mForegroundUsageTimeInMs).isEqualTo(1234L);
|
assertThat(batteryHistEntry.mForegroundUsageTimeInMs).isEqualTo(1234L);
|
||||||
assertThat(batteryHistEntry.mBackgroundUsageTimeInMs).isEqualTo(5689L);
|
assertThat(batteryHistEntry.mBackgroundUsageTimeInMs).isEqualTo(5689L);
|
||||||
|
assertThat(batteryHistEntry.mForegroundServiceUsageTimeInMs).isEqualTo(3456L);
|
||||||
assertThat(batteryHistEntry.mDrainType).isEqualTo(expectedType);
|
assertThat(batteryHistEntry.mDrainType).isEqualTo(expectedType);
|
||||||
assertThat(batteryHistEntry.mConsumerType)
|
assertThat(batteryHistEntry.mConsumerType)
|
||||||
.isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
|
.isEqualTo(ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY);
|
||||||
|
Reference in New Issue
Block a user