Fix b/265387286: The total percentage of all apps is not 100%
Bug: 265387286 Fix: 265387286 Test: manual Change-Id: I654f8211a45c818f9a2d4867ac679e72c9ce6eb1
This commit is contained in:
@@ -5350,6 +5350,8 @@
|
|||||||
<string name="battery_usage_spinner_breakdown_by_apps">Breakdown by apps</string>
|
<string name="battery_usage_spinner_breakdown_by_apps">Breakdown by apps</string>
|
||||||
<!-- [CHAR_LIMIT=NONE] The spinner item text in the battery usage breakdown. -->
|
<!-- [CHAR_LIMIT=NONE] The spinner item text in the battery usage breakdown. -->
|
||||||
<string name="battery_usage_spinner_breakdown_by_system">Breakdown by system</string>
|
<string name="battery_usage_spinner_breakdown_by_system">Breakdown by system</string>
|
||||||
|
<!-- [CHAR_LIMIT=NONE] Less than some percentage, e.g. < 1% -->
|
||||||
|
<string name="battery_usage_less_than_percent">< <xliff:g id="percentage">%1$s</xliff:g></string>
|
||||||
<!-- Process Stats strings -->
|
<!-- Process Stats strings -->
|
||||||
<skip />
|
<skip />
|
||||||
|
|
||||||
|
@@ -124,7 +124,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
|
|||||||
mParent.getMetricsCategory(),
|
mParent.getMetricsCategory(),
|
||||||
mBatteryDiffEntry,
|
mBatteryDiffEntry,
|
||||||
Utils.formatPercentage(
|
Utils.formatPercentage(
|
||||||
mBatteryDiffEntry.getPercentOfTotal(), /* round */ true),
|
mBatteryDiffEntry.getPercentage(), /* round */ true),
|
||||||
/*slotInformation=*/ null, /*showTimeInformation=*/ false);
|
/*slotInformation=*/ null, /*showTimeInformation=*/ false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -190,7 +190,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
|
|||||||
void updateBatteryWithDiffEntry() {
|
void updateBatteryWithDiffEntry() {
|
||||||
if (mBatteryDiffEntry != null && mBatteryDiffEntry.mConsumePower > 0) {
|
if (mBatteryDiffEntry != null && mBatteryDiffEntry.mConsumePower > 0) {
|
||||||
mBatteryPercent = Utils.formatPercentage(
|
mBatteryPercent = Utils.formatPercentage(
|
||||||
mBatteryDiffEntry.getPercentOfTotal(), /* round */ true);
|
mBatteryDiffEntry.getPercentage(), /* round */ true);
|
||||||
mPreference.setSummary(mContext.getString(
|
mPreference.setSummary(mContext.getString(
|
||||||
R.string.battery_summary, mBatteryPercent));
|
R.string.battery_summary, mBatteryPercent));
|
||||||
} else {
|
} else {
|
||||||
|
@@ -32,6 +32,8 @@ import java.util.Set;
|
|||||||
|
|
||||||
/** Wraps the battery usage diff data for each entry used for battery usage app list. */
|
/** Wraps the battery usage diff data for each entry used for battery usage app list. */
|
||||||
public class BatteryDiffData {
|
public class BatteryDiffData {
|
||||||
|
static final double SMALL_PERCENTAGE_THRESHOLD = 1f;
|
||||||
|
|
||||||
private final List<BatteryDiffEntry> mAppEntries;
|
private final List<BatteryDiffEntry> mAppEntries;
|
||||||
private final List<BatteryDiffEntry> mSystemEntries;
|
private final List<BatteryDiffEntry> mSystemEntries;
|
||||||
|
|
||||||
@@ -52,8 +54,8 @@ public class BatteryDiffData {
|
|||||||
combineBatteryDiffEntry(context, featureProvider, systemAppsSet);
|
combineBatteryDiffEntry(context, featureProvider, systemAppsSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
setTotalConsumePower();
|
processAndSortEntries(mAppEntries);
|
||||||
sortEntries();
|
processAndSortEntries(mSystemEntries);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<BatteryDiffEntry> getAppDiffEntryList() {
|
public List<BatteryDiffEntry> getAppDiffEntryList() {
|
||||||
@@ -77,18 +79,6 @@ public class BatteryDiffData {
|
|||||||
combineSystemItemsIntoOthers(context, featureProvider, mSystemEntries);
|
combineSystemItemsIntoOthers(context, featureProvider, mSystemEntries);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sets total consume power for app and system entries separately. */
|
|
||||||
private void setTotalConsumePower() {
|
|
||||||
setTotalConsumePowerForAllEntries(mAppEntries);
|
|
||||||
setTotalConsumePowerForAllEntries(mSystemEntries);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Sorts entries based on consumed percentage. */
|
|
||||||
private void sortEntries() {
|
|
||||||
Collections.sort(mAppEntries, BatteryDiffEntry.COMPARATOR);
|
|
||||||
Collections.sort(mSystemEntries, BatteryDiffEntry.COMPARATOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void purgeBatteryDiffData(
|
private static void purgeBatteryDiffData(
|
||||||
final PowerUsageFeatureProvider featureProvider,
|
final PowerUsageFeatureProvider featureProvider,
|
||||||
final List<BatteryDiffEntry> entries) {
|
final List<BatteryDiffEntry> entries) {
|
||||||
@@ -177,18 +167,6 @@ public class BatteryDiffData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets total consume power for each entry.
|
|
||||||
private static void setTotalConsumePowerForAllEntries(
|
|
||||||
final List<BatteryDiffEntry> batteryDiffEntries) {
|
|
||||||
double totalConsumePower = 0.0;
|
|
||||||
for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) {
|
|
||||||
totalConsumePower += batteryDiffEntry.mConsumePower;
|
|
||||||
}
|
|
||||||
for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) {
|
|
||||||
batteryDiffEntry.setTotalConsumePower(totalConsumePower);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static boolean needsCombineInSystemApp(final BatteryDiffEntry batteryDiffEntry,
|
static boolean needsCombineInSystemApp(final BatteryDiffEntry batteryDiffEntry,
|
||||||
final List<String> systemAppsAllowlist, final Set<String> systemAppsSet) {
|
final List<String> systemAppsAllowlist, final Set<String> systemAppsSet) {
|
||||||
@@ -207,4 +185,51 @@ public class BatteryDiffData {
|
|||||||
|
|
||||||
return systemAppsSet != null && systemAppsSet.contains(packageName);
|
return systemAppsSet != null && systemAppsSet.contains(packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets total consume power, and adjusts the percentages to ensure the total round percentage
|
||||||
|
* could be 100%, and then sorts entries based on the sorting key.
|
||||||
|
*/
|
||||||
|
@VisibleForTesting
|
||||||
|
static void processAndSortEntries(final List<BatteryDiffEntry> batteryDiffEntries) {
|
||||||
|
if (batteryDiffEntries.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sets total consume power.
|
||||||
|
double totalConsumePower = 0.0;
|
||||||
|
for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) {
|
||||||
|
totalConsumePower += batteryDiffEntry.mConsumePower;
|
||||||
|
}
|
||||||
|
for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) {
|
||||||
|
batteryDiffEntry.setTotalConsumePower(totalConsumePower);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adjusts percentages to show.
|
||||||
|
// The lower bound is treating all the small percentages as 0.
|
||||||
|
// The upper bound is treating all the small percentages as 1.
|
||||||
|
int totalLowerBound = 0;
|
||||||
|
int totalUpperBound = 0;
|
||||||
|
for (BatteryDiffEntry entry : batteryDiffEntries) {
|
||||||
|
if (entry.getPercentage() < SMALL_PERCENTAGE_THRESHOLD) {
|
||||||
|
totalUpperBound += 1;
|
||||||
|
} else {
|
||||||
|
int roundPercentage = Math.round((float) entry.getPercentage());
|
||||||
|
totalLowerBound += roundPercentage;
|
||||||
|
totalUpperBound += roundPercentage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (totalLowerBound > 100 || totalUpperBound < 100) {
|
||||||
|
Collections.sort(batteryDiffEntries, BatteryDiffEntry.COMPARATOR);
|
||||||
|
for (int i = 0; i < totalLowerBound - 100 && i < batteryDiffEntries.size(); i++) {
|
||||||
|
batteryDiffEntries.get(i).setAdjustPercentageOffset(-1);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 100 - totalUpperBound && i < batteryDiffEntries.size(); i++) {
|
||||||
|
batteryDiffEntries.get(i).setAdjustPercentageOffset(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sorts entries.
|
||||||
|
Collections.sort(batteryDiffEntries, BatteryDiffEntry.COMPARATOR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -47,7 +47,7 @@ public class BatteryDiffEntry {
|
|||||||
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
|
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
|
||||||
public static final Map<String, Boolean> sValidForRestriction = new HashMap<>();
|
public static final Map<String, Boolean> sValidForRestriction = new HashMap<>();
|
||||||
|
|
||||||
/** A comparator for {@link BatteryDiffEntry} based on consumed percentage. */
|
/** A comparator for {@link BatteryDiffEntry} based on the sorting key. */
|
||||||
public static final Comparator<BatteryDiffEntry> COMPARATOR =
|
public static final Comparator<BatteryDiffEntry> COMPARATOR =
|
||||||
(a, b) -> Double.compare(b.getSortingKey(), a.getSortingKey());
|
(a, b) -> Double.compare(b.getSortingKey(), a.getSortingKey());
|
||||||
|
|
||||||
@@ -65,7 +65,8 @@ public class BatteryDiffEntry {
|
|||||||
protected Context mContext;
|
protected Context mContext;
|
||||||
|
|
||||||
private double mTotalConsumePower;
|
private double mTotalConsumePower;
|
||||||
private double mPercentOfTotal;
|
private double mPercentage;
|
||||||
|
private int mAdjustPercentageOffset;
|
||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
private String mDefaultPackageName = null;
|
private String mDefaultPackageName = null;
|
||||||
|
|
||||||
@@ -107,8 +108,9 @@ public class BatteryDiffEntry {
|
|||||||
/** Sets the total consumed power in a specific time slot. */
|
/** Sets the total consumed power in a specific time slot. */
|
||||||
public void setTotalConsumePower(double totalConsumePower) {
|
public void setTotalConsumePower(double totalConsumePower) {
|
||||||
mTotalConsumePower = totalConsumePower;
|
mTotalConsumePower = totalConsumePower;
|
||||||
mPercentOfTotal = totalConsumePower == 0
|
mPercentage = totalConsumePower == 0
|
||||||
? 0 : (mConsumePower / mTotalConsumePower) * 100.0;
|
? 0 : (mConsumePower / mTotalConsumePower) * 100.0;
|
||||||
|
mAdjustPercentageOffset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Gets the total consumed power in a specific time slot. */
|
/** Gets the total consumed power in a specific time slot. */
|
||||||
@@ -117,13 +119,23 @@ public class BatteryDiffEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Gets the percentage of total consumed power. */
|
/** Gets the percentage of total consumed power. */
|
||||||
public double getPercentOfTotal() {
|
public double getPercentage() {
|
||||||
return mPercentOfTotal;
|
return mPercentage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Gets the percentage offset to adjust. */
|
||||||
|
public double getAdjustPercentageOffset() {
|
||||||
|
return mAdjustPercentageOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Sets the percentage offset to adjust. */
|
||||||
|
public void setAdjustPercentageOffset(int offset) {
|
||||||
|
mAdjustPercentageOffset = offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Gets the key for sorting */
|
/** Gets the key for sorting */
|
||||||
public double getSortingKey() {
|
public double getSortingKey() {
|
||||||
return getPercentOfTotal();
|
return getPercentage() + getAdjustPercentageOffset();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Clones a new instance. */
|
/** Clones a new instance. */
|
||||||
@@ -369,7 +381,7 @@ public class BatteryDiffEntry {
|
|||||||
.append(String.format("\n\tname=%s restrictable=%b",
|
.append(String.format("\n\tname=%s restrictable=%b",
|
||||||
mAppLabel, mValidForRestriction))
|
mAppLabel, mValidForRestriction))
|
||||||
.append(String.format("\n\tconsume=%.2f%% %f/%f",
|
.append(String.format("\n\tconsume=%.2f%% %f/%f",
|
||||||
mPercentOfTotal, mConsumePower, mTotalConsumePower))
|
mPercentage, mConsumePower, mTotalConsumePower))
|
||||||
.append(String.format("\n\tconsume power= foreground:%f foregroundService:%f",
|
.append(String.format("\n\tconsume power= foreground:%f foregroundService:%f",
|
||||||
mForegroundUsageConsumePower, mForegroundServiceUsageConsumePower))
|
mForegroundUsageConsumePower, mForegroundServiceUsageConsumePower))
|
||||||
.append(String.format("\n\tconsume power= background:%f cached:%f",
|
.append(String.format("\n\tconsume power= background:%f cached:%f",
|
||||||
|
@@ -35,6 +35,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
import com.android.settings.core.InstrumentedPreferenceFragment;
|
||||||
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
|
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
|
||||||
@@ -86,6 +87,8 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
|
|||||||
FooterPreference mFooterPreference;
|
FooterPreference mFooterPreference;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
BatteryDiffData mBatteryDiffData;
|
BatteryDiffData mBatteryDiffData;
|
||||||
|
@VisibleForTesting
|
||||||
|
String mPercentLessThanThresholdText;
|
||||||
|
|
||||||
public BatteryUsageBreakdownController(
|
public BatteryUsageBreakdownController(
|
||||||
Context context, Lifecycle lifecycle, SettingsActivity activity,
|
Context context, Lifecycle lifecycle, SettingsActivity activity,
|
||||||
@@ -147,11 +150,11 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
|
|||||||
: SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM,
|
: SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM,
|
||||||
/* pageId */ SettingsEnums.OPEN_BATTERY_USAGE,
|
/* pageId */ SettingsEnums.OPEN_BATTERY_USAGE,
|
||||||
TextUtils.isEmpty(packageName) ? PACKAGE_NAME_NONE : packageName,
|
TextUtils.isEmpty(packageName) ? PACKAGE_NAME_NONE : packageName,
|
||||||
(int) Math.round(diffEntry.getPercentOfTotal()));
|
(int) Math.round(diffEntry.getPercentage()));
|
||||||
Log.d(TAG, String.format("handleClick() label=%s key=%s package=%s",
|
Log.d(TAG, String.format("handleClick() label=%s key=%s package=%s",
|
||||||
diffEntry.getAppLabel(), histEntry.getKey(), histEntry.mPackageName));
|
diffEntry.getAppLabel(), histEntry.getKey(), histEntry.mPackageName));
|
||||||
AdvancedPowerUsageDetail.startBatteryDetailPage(
|
AdvancedPowerUsageDetail.startBatteryDetailPage(
|
||||||
mActivity, mFragment, diffEntry, powerPref.getPercent(), mSlotTimestamp);
|
mActivity, mFragment, diffEntry, powerPref.getPercentage(), mSlotTimestamp);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,6 +166,9 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
|
|||||||
mSpinnerPreference = screen.findPreference(SPINNER_PREFERENCE_KEY);
|
mSpinnerPreference = screen.findPreference(SPINNER_PREFERENCE_KEY);
|
||||||
mAppListPreferenceGroup = screen.findPreference(APP_LIST_PREFERENCE_KEY);
|
mAppListPreferenceGroup = screen.findPreference(APP_LIST_PREFERENCE_KEY);
|
||||||
mFooterPreference = screen.findPreference(FOOTER_PREFERENCE_KEY);
|
mFooterPreference = screen.findPreference(FOOTER_PREFERENCE_KEY);
|
||||||
|
mPercentLessThanThresholdText = mPrefContext.getString(
|
||||||
|
R.string.battery_usage_less_than_percent,
|
||||||
|
Utils.formatPercentage(BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD, false));
|
||||||
|
|
||||||
mAppListPreferenceGroup.setOrderingAsAdded(false);
|
mAppListPreferenceGroup.setOrderingAsAdded(false);
|
||||||
mSpinnerPreference.initializeSpinner(
|
mSpinnerPreference.initializeSpinner(
|
||||||
@@ -279,11 +285,11 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
|
|||||||
pref.setIcon(appIcon);
|
pref.setIcon(appIcon);
|
||||||
pref.setTitle(appLabel);
|
pref.setTitle(appLabel);
|
||||||
pref.setOrder(prefIndex);
|
pref.setOrder(prefIndex);
|
||||||
pref.setPercent(entry.getPercentOfTotal());
|
|
||||||
pref.setSingleLineTitle(true);
|
pref.setSingleLineTitle(true);
|
||||||
// Sets the BatteryDiffEntry to preference for launching detailed page.
|
// Sets the BatteryDiffEntry to preference for launching detailed page.
|
||||||
pref.setBatteryDiffEntry(entry);
|
pref.setBatteryDiffEntry(entry);
|
||||||
pref.setSelectable(entry.validForRestriction());
|
pref.setSelectable(entry.validForRestriction());
|
||||||
|
setPreferencePercentage(pref, entry);
|
||||||
setPreferenceSummary(pref, entry);
|
setPreferenceSummary(pref, entry);
|
||||||
if (!isAdded) {
|
if (!isAdded) {
|
||||||
mAppListPreferenceGroup.addPreference(pref);
|
mAppListPreferenceGroup.addPreference(pref);
|
||||||
@@ -307,6 +313,17 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
|
|||||||
mAppListPreferenceGroup.removeAll();
|
mAppListPreferenceGroup.removeAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void setPreferencePercentage(
|
||||||
|
PowerGaugePreference preference, BatteryDiffEntry entry) {
|
||||||
|
preference.setPercentage(
|
||||||
|
entry.getPercentage() < BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD
|
||||||
|
? mPercentLessThanThresholdText
|
||||||
|
: Utils.formatPercentage(
|
||||||
|
entry.getPercentage() + entry.getAdjustPercentageOffset(),
|
||||||
|
/* round= */ true));
|
||||||
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void setPreferenceSummary(
|
void setPreferenceSummary(
|
||||||
PowerGaugePreference preference, BatteryDiffEntry entry) {
|
PowerGaugePreference preference, BatteryDiffEntry entry) {
|
||||||
|
@@ -38,7 +38,6 @@ import com.android.settingslib.widget.AppPreference;
|
|||||||
*/
|
*/
|
||||||
public class PowerGaugePreference extends AppPreference {
|
public class PowerGaugePreference extends AppPreference {
|
||||||
|
|
||||||
private static final double PERCENTAGE_TO_SHOW_THRESHOLD = 1f;
|
|
||||||
// Please see go/battery-usage-app-list-alpha
|
// Please see go/battery-usage-app-list-alpha
|
||||||
private static final float SELECTABLE_ALPHA = 1f;
|
private static final float SELECTABLE_ALPHA = 1f;
|
||||||
private static final float UNSELECTABLE_ALPHA_LIGHT_MODE = 0.65f;
|
private static final float UNSELECTABLE_ALPHA_LIGHT_MODE = 0.65f;
|
||||||
@@ -81,29 +80,17 @@ public class PowerGaugePreference extends AppPreference {
|
|||||||
notifyChanged();
|
notifyChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sets the percent of total. */
|
/** Sets the percentage to show. */
|
||||||
public void setPercent(double percentOfTotal) {
|
public void setPercentage(CharSequence percentage) {
|
||||||
mProgress = percentOfTotal < PERCENTAGE_TO_SHOW_THRESHOLD
|
mProgress = percentage;
|
||||||
? "-" : Utils.formatPercentage(percentOfTotal, true);
|
|
||||||
notifyChanged();
|
notifyChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Gets the percent of total. */
|
/** Gets the percentage to show. */
|
||||||
public String getPercent() {
|
public String getPercentage() {
|
||||||
return mProgress.toString();
|
return mProgress.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sets the subtitle. */
|
|
||||||
public void setSubtitle(CharSequence subtitle) {
|
|
||||||
mProgress = subtitle;
|
|
||||||
notifyChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Gets the subtitle. */
|
|
||||||
public CharSequence getSubtitle() {
|
|
||||||
return mProgress;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Sets whether to show anomaly icon */
|
/** Sets whether to show anomaly icon */
|
||||||
public void shouldShowAnomalyIcon(boolean showAnomalyIcon) {
|
public void shouldShowAnomalyIcon(boolean showAnomalyIcon) {
|
||||||
mShowAnomalyIcon = showAnomalyIcon;
|
mShowAnomalyIcon = showAnomalyIcon;
|
||||||
|
@@ -108,7 +108,7 @@ private class AppBatteryPresenter(private val context: Context, private val app:
|
|||||||
private fun BatteryDiffEntry?.getSummary(): String =
|
private fun BatteryDiffEntry?.getSummary(): String =
|
||||||
this?.takeIf { mConsumePower > 0 }?.let {
|
this?.takeIf { mConsumePower > 0 }?.let {
|
||||||
context.getString(
|
context.getString(
|
||||||
R.string.battery_summary, Utils.formatPercentage(percentOfTotal, true)
|
R.string.battery_summary, Utils.formatPercentage(percentage, true)
|
||||||
)
|
)
|
||||||
} ?: context.getString(R.string.no_battery_summary)
|
} ?: context.getString(R.string.no_battery_summary)
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ private class AppBatteryPresenter(private val context: Context, private val app:
|
|||||||
context,
|
context,
|
||||||
AppInfoSettingsProvider.METRICS_CATEGORY,
|
AppInfoSettingsProvider.METRICS_CATEGORY,
|
||||||
this,
|
this,
|
||||||
Utils.formatPercentage(percentOfTotal, true),
|
Utils.formatPercentage(percentage, true),
|
||||||
null,
|
null,
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
|
@@ -145,7 +145,7 @@ public class AppBatteryPreferenceControllerTest {
|
|||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
mBatteryDiffEntry.mConsumePower = 1;
|
mBatteryDiffEntry.mConsumePower = 1;
|
||||||
mController.mBatteryDiffEntry = mBatteryDiffEntry;
|
mController.mBatteryDiffEntry = mBatteryDiffEntry;
|
||||||
when(mBatteryDiffEntry.getPercentOfTotal()).thenReturn(60.0);
|
when(mBatteryDiffEntry.getPercentage()).thenReturn(60.0);
|
||||||
|
|
||||||
mController.updateBatteryWithDiffEntry();
|
mController.updateBatteryWithDiffEntry();
|
||||||
|
|
||||||
|
@@ -37,6 +37,7 @@ import org.mockito.MockitoAnnotations;
|
|||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -58,26 +59,10 @@ public class BatteryDiffDataTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void needsCombineInSystemApp_isHidden_returnTrue() {
|
public void needsCombineInSystemApp_isHidden_returnTrue() {
|
||||||
final int currentUserId = mContext.getUserId();
|
final BatteryDiffEntry hiddenDiffEntry =
|
||||||
final BatteryHistEntry hiddenHistEntry = createBatteryHistEntry(
|
createBatteryDiffEntry(mContext, /*consumePower=*/ 0, /*isHidden=*/ true);
|
||||||
ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 0,
|
|
||||||
/*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
|
|
||||||
/*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
|
|
||||||
/*uid=*/ 0L, currentUserId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
|
||||||
/*foregroundUsageTimeInMs=*/ 0L, /*backgroundUsageTimeInMs=*/ 0L, true);
|
|
||||||
final BatteryDiffEntry hiddenDiffEntry = new BatteryDiffEntry(
|
|
||||||
mContext,
|
|
||||||
/*foregroundUsageTimeInMs=*/ 0,
|
|
||||||
/*backgroundUsageTimeInMs=*/ 0,
|
|
||||||
/*screenOnTimeInMs=*/ 0,
|
|
||||||
/*consumePower=*/ 0,
|
|
||||||
/*foregroundUsageConsumePower=*/ 0,
|
|
||||||
/*foregroundServiceUsageConsumePower=*/ 0,
|
|
||||||
/*backgroundUsageConsumePower=*/ 0,
|
|
||||||
/*cachedUsageConsumePower=*/ 0,
|
|
||||||
hiddenHistEntry);
|
|
||||||
|
|
||||||
boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
final boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
||||||
hiddenDiffEntry, List.of(), Set.of());
|
hiddenDiffEntry, List.of(), Set.of());
|
||||||
|
|
||||||
assertThat(needsCombineInSystemApp).isTrue();
|
assertThat(needsCombineInSystemApp).isTrue();
|
||||||
@@ -85,29 +70,13 @@ public class BatteryDiffDataTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void needsCombineInSystemApp_isSystemApp_returnTrue() {
|
public void needsCombineInSystemApp_isSystemApp_returnTrue() {
|
||||||
final int currentUserId = mContext.getUserId();
|
final BatteryDiffEntry batteryDiffEntry =
|
||||||
final BatteryHistEntry batteryHistEntry = createBatteryHistEntry(
|
createBatteryDiffEntry(mContext, /*consumePower=*/ 0, /*isHidden=*/ false);
|
||||||
ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 0,
|
|
||||||
/*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
|
|
||||||
/*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
|
|
||||||
/*uid=*/ 0L, currentUserId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
|
||||||
/*foregroundUsageTimeInMs=*/ 0L, /*backgroundUsageTimeInMs=*/ 0L, false);
|
|
||||||
final BatteryDiffEntry batteryDiffEntry = new BatteryDiffEntry(
|
|
||||||
mContext,
|
|
||||||
/*foregroundUsageTimeInMs=*/ 0,
|
|
||||||
/*backgroundUsageTimeInMs=*/ 0,
|
|
||||||
/*screenOnTimeInMs=*/ 0,
|
|
||||||
/*consumePower=*/ 0,
|
|
||||||
/*foregroundUsageConsumePower=*/ 0,
|
|
||||||
/*foregroundServiceUsageConsumePower=*/ 0,
|
|
||||||
/*backgroundUsageConsumePower=*/ 0,
|
|
||||||
/*cachedUsageConsumePower=*/ 0,
|
|
||||||
batteryHistEntry);
|
|
||||||
doReturn(mAppEntry).when(mApplicationsState).getEntry(anyString(), anyInt());
|
doReturn(mAppEntry).when(mApplicationsState).getEntry(anyString(), anyInt());
|
||||||
mAppEntry.info = mApplicationInfo;
|
mAppEntry.info = mApplicationInfo;
|
||||||
mApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
|
mApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
|
||||||
|
|
||||||
boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
final boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
||||||
batteryDiffEntry, List.of(), Set.of(ConvertUtils.FAKE_PACKAGE_NAME));
|
batteryDiffEntry, List.of(), Set.of(ConvertUtils.FAKE_PACKAGE_NAME));
|
||||||
|
|
||||||
assertThat(needsCombineInSystemApp).isTrue();
|
assertThat(needsCombineInSystemApp).isTrue();
|
||||||
@@ -115,32 +84,78 @@ public class BatteryDiffDataTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void needsCombineInSystemApp_notSystemApp_returnFalse() {
|
public void needsCombineInSystemApp_notSystemApp_returnFalse() {
|
||||||
final int currentUserId = mContext.getUserId();
|
final BatteryDiffEntry batteryDiffEntry =
|
||||||
|
createBatteryDiffEntry(mContext, /*consumePower=*/ 0, /*isHidden=*/ false);
|
||||||
|
doReturn(mAppEntry).when(mApplicationsState).getEntry(anyString(), anyInt());
|
||||||
|
mAppEntry.info = mApplicationInfo;
|
||||||
|
mApplicationInfo.flags = 0;
|
||||||
|
|
||||||
|
final boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
||||||
|
batteryDiffEntry, List.of(), Set.of());
|
||||||
|
|
||||||
|
assertThat(needsCombineInSystemApp).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void processPercentsAndSort_sumLessThan100_adjustTo100() {
|
||||||
|
List<BatteryDiffEntry> batteryDiffEntries = new ArrayList<>();
|
||||||
|
batteryDiffEntries.add(
|
||||||
|
createBatteryDiffEntry(mContext, /*consumePower=*/ 33.33, /*isHidden=*/ false));
|
||||||
|
batteryDiffEntries.add(
|
||||||
|
createBatteryDiffEntry(mContext, /*consumePower=*/ 33.34, /*isHidden=*/ false));
|
||||||
|
batteryDiffEntries.add(
|
||||||
|
createBatteryDiffEntry(mContext, /*consumePower=*/ 33.33, /*isHidden=*/ false));
|
||||||
|
|
||||||
|
BatteryDiffData.processAndSortEntries(batteryDiffEntries);
|
||||||
|
|
||||||
|
assertThat(batteryDiffEntries.get(0).getPercentage()).isEqualTo(33.34);
|
||||||
|
assertThat(batteryDiffEntries.get(0).getAdjustPercentageOffset()).isEqualTo(1);
|
||||||
|
assertThat(batteryDiffEntries.get(1).getPercentage()).isEqualTo(33.33);
|
||||||
|
assertThat(batteryDiffEntries.get(1).getAdjustPercentageOffset()).isEqualTo(0);
|
||||||
|
assertThat(batteryDiffEntries.get(2).getPercentage()).isEqualTo(33.33);
|
||||||
|
assertThat(batteryDiffEntries.get(2).getAdjustPercentageOffset()).isEqualTo(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void processPercentsAndSort_sumGreaterThan100_adjustTo100() {
|
||||||
|
List<BatteryDiffEntry> batteryDiffEntries = new ArrayList<>();
|
||||||
|
batteryDiffEntries.add(
|
||||||
|
createBatteryDiffEntry(mContext, /*consumePower=*/ 48.5, /*isHidden=*/ false));
|
||||||
|
batteryDiffEntries.add(
|
||||||
|
createBatteryDiffEntry(mContext, /*consumePower=*/ 3, /*isHidden=*/ false));
|
||||||
|
batteryDiffEntries.add(
|
||||||
|
createBatteryDiffEntry(mContext, /*consumePower=*/ 48.5, /*isHidden=*/ false));
|
||||||
|
|
||||||
|
BatteryDiffData.processAndSortEntries(batteryDiffEntries);
|
||||||
|
|
||||||
|
assertThat(batteryDiffEntries.get(0).getPercentage()).isEqualTo(48.5);
|
||||||
|
assertThat(batteryDiffEntries.get(0).getAdjustPercentageOffset()).isEqualTo(0);
|
||||||
|
assertThat(batteryDiffEntries.get(1).getPercentage()).isEqualTo(48.5);
|
||||||
|
assertThat(batteryDiffEntries.get(1).getAdjustPercentageOffset()).isEqualTo(-1);
|
||||||
|
assertThat(batteryDiffEntries.get(2).getPercentage()).isEqualTo(3);
|
||||||
|
assertThat(batteryDiffEntries.get(2).getAdjustPercentageOffset()).isEqualTo(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static BatteryDiffEntry createBatteryDiffEntry(
|
||||||
|
Context context, double consumePower, boolean isHidden) {
|
||||||
|
final int currentUserId = context.getUserId();
|
||||||
final BatteryHistEntry batteryHistEntry = createBatteryHistEntry(
|
final BatteryHistEntry batteryHistEntry = createBatteryHistEntry(
|
||||||
ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", /*consumePower=*/ 0,
|
ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", consumePower,
|
||||||
/*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
|
/*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
|
||||||
/*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
|
/*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
|
||||||
/*uid=*/ 0L, currentUserId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
/*uid=*/ 0L, currentUserId, ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
|
||||||
/*foregroundUsageTimeInMs=*/ 0L, /*backgroundUsageTimeInMs=*/ 0L, false);
|
/*foregroundUsageTimeInMs=*/ 0L, /*backgroundUsageTimeInMs=*/ 0L, isHidden);
|
||||||
final BatteryDiffEntry batteryDiffEntry = new BatteryDiffEntry(
|
return new BatteryDiffEntry(
|
||||||
mContext,
|
context,
|
||||||
/*foregroundUsageTimeInMs=*/ 0,
|
/*foregroundUsageTimeInMs=*/ 0,
|
||||||
/*backgroundUsageTimeInMs=*/ 0,
|
/*backgroundUsageTimeInMs=*/ 0,
|
||||||
/*screenOnTimeInMs=*/ 0,
|
/*screenOnTimeInMs=*/ 0,
|
||||||
/*consumePower=*/ 0,
|
/*consumePower=*/ consumePower,
|
||||||
/*foregroundUsageConsumePower=*/ 0,
|
/*foregroundUsageConsumePower=*/ 0,
|
||||||
/*foregroundServiceUsageConsumePower=*/ 0,
|
/*foregroundServiceUsageConsumePower=*/ 0,
|
||||||
/*backgroundUsageConsumePower=*/ 0,
|
/*backgroundUsageConsumePower=*/ 0,
|
||||||
/*cachedUsageConsumePower=*/ 0,
|
/*cachedUsageConsumePower=*/ 0,
|
||||||
batteryHistEntry);
|
batteryHistEntry);
|
||||||
doReturn(mAppEntry).when(mApplicationsState).getEntry(anyString(), anyInt());
|
|
||||||
mAppEntry.info = mApplicationInfo;
|
|
||||||
mApplicationInfo.flags = 0;
|
|
||||||
|
|
||||||
boolean needsCombineInSystemApp = BatteryDiffData.needsCombineInSystemApp(
|
|
||||||
batteryDiffEntry, List.of(), Set.of());
|
|
||||||
|
|
||||||
assertThat(needsCombineInSystemApp).isFalse();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static BatteryHistEntry createBatteryHistEntry(
|
private static BatteryHistEntry createBatteryHistEntry(
|
||||||
|
@@ -106,7 +106,7 @@ public final class BatteryDiffEntryTest {
|
|||||||
/*batteryHistEntry=*/ null);
|
/*batteryHistEntry=*/ null);
|
||||||
entry.setTotalConsumePower(100.0);
|
entry.setTotalConsumePower(100.0);
|
||||||
|
|
||||||
assertThat(entry.getPercentOfTotal()).isEqualTo(22.0);
|
assertThat(entry.getPercentage()).isEqualTo(22.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -125,21 +125,28 @@ public final class BatteryDiffEntryTest {
|
|||||||
/*batteryHistEntry=*/ null);
|
/*batteryHistEntry=*/ null);
|
||||||
entry.setTotalConsumePower(0);
|
entry.setTotalConsumePower(0);
|
||||||
|
|
||||||
assertThat(entry.getPercentOfTotal()).isEqualTo(0);
|
assertThat(entry.getPercentage()).isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testComparator_sortCollectionsInDescOrder() {
|
public void testComparator_sortCollectionsInDescOrder() {
|
||||||
final List<BatteryDiffEntry> entryList = new ArrayList<>();
|
final List<BatteryDiffEntry> entryList = new ArrayList<>();
|
||||||
// Generates fake testing data.
|
// Generates fake testing data.
|
||||||
|
BatteryDiffEntry systemAppsBatteryDiffEntry =
|
||||||
|
new BatteryDiffEntry.SystemAppsBatteryDiffEntry(mContext);
|
||||||
|
systemAppsBatteryDiffEntry.mConsumePower = 16;
|
||||||
|
systemAppsBatteryDiffEntry.setTotalConsumePower(100);
|
||||||
|
entryList.add(systemAppsBatteryDiffEntry);
|
||||||
entryList.add(createBatteryDiffEntry(30, mBatteryHistEntry));
|
entryList.add(createBatteryDiffEntry(30, mBatteryHistEntry));
|
||||||
entryList.add(createBatteryDiffEntry(20, mBatteryHistEntry));
|
entryList.add(createBatteryDiffEntry(20, mBatteryHistEntry));
|
||||||
entryList.add(createBatteryDiffEntry(10, mBatteryHistEntry));
|
entryList.add(createBatteryDiffEntry(10, mBatteryHistEntry));
|
||||||
|
|
||||||
Collections.sort(entryList, BatteryDiffEntry.COMPARATOR);
|
Collections.sort(entryList, BatteryDiffEntry.COMPARATOR);
|
||||||
|
|
||||||
assertThat(entryList.get(0).getPercentOfTotal()).isEqualTo(30);
|
assertThat(entryList.get(0).getPercentage()).isEqualTo(30);
|
||||||
assertThat(entryList.get(1).getPercentOfTotal()).isEqualTo(20);
|
assertThat(entryList.get(1).getPercentage()).isEqualTo(20);
|
||||||
assertThat(entryList.get(2).getPercentOfTotal()).isEqualTo(10);
|
assertThat(entryList.get(2).getPercentage()).isEqualTo(10);
|
||||||
|
assertThat(entryList.get(3).getPercentage()).isEqualTo(16);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -234,6 +234,40 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
/* percentage of total */ 100);
|
/* percentage of total */ 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setPreferencePercent_lessThanThreshold_expectedFormat() {
|
||||||
|
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
||||||
|
final BatteryDiffEntry batteryDiffEntry = createBatteryDiffEntry(
|
||||||
|
/*isSystem=*/ true,
|
||||||
|
/*screenOnTimeInMs=*/ 0,
|
||||||
|
/*foregroundUsageTimeInMs=*/ 0,
|
||||||
|
/*backgroundUsageTimeInMs=*/ 0);
|
||||||
|
batteryDiffEntry.mConsumePower = 0.8;
|
||||||
|
batteryDiffEntry.setTotalConsumePower(100);
|
||||||
|
mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%";
|
||||||
|
|
||||||
|
mBatteryUsageBreakdownController.setPreferencePercentage(pref, batteryDiffEntry);
|
||||||
|
|
||||||
|
assertThat(pref.getPercentage()).isEqualTo("< 1%");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setPreferencePercent_greaterThanThreshold_expectedFormat() {
|
||||||
|
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
||||||
|
final BatteryDiffEntry batteryDiffEntry = createBatteryDiffEntry(
|
||||||
|
/*isSystem=*/ true,
|
||||||
|
/*screenOnTimeInMs=*/ 0,
|
||||||
|
/*foregroundUsageTimeInMs=*/ 0,
|
||||||
|
/*backgroundUsageTimeInMs=*/ 0);
|
||||||
|
batteryDiffEntry.mConsumePower = 16;
|
||||||
|
batteryDiffEntry.setTotalConsumePower(100);
|
||||||
|
mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%";
|
||||||
|
|
||||||
|
mBatteryUsageBreakdownController.setPreferencePercentage(pref, batteryDiffEntry);
|
||||||
|
|
||||||
|
assertThat(pref.getPercentage()).isEqualTo("16%");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setPreferenceSummary_systemEntryTotalUsageTimeIsZero_emptySummary() {
|
public void setPreferenceSummary_systemEntryTotalUsageTimeIsZero_emptySummary() {
|
||||||
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
|
||||||
|
@@ -1993,7 +1993,7 @@ public final class DataProcessorTest {
|
|||||||
assertThat(entry.mBatteryHistEntry.mUserId).isEqualTo(userId);
|
assertThat(entry.mBatteryHistEntry.mUserId).isEqualTo(userId);
|
||||||
assertThat(entry.mBatteryHistEntry.mUid).isEqualTo(uid);
|
assertThat(entry.mBatteryHistEntry.mUid).isEqualTo(uid);
|
||||||
assertThat(entry.mBatteryHistEntry.mConsumerType).isEqualTo(consumerType);
|
assertThat(entry.mBatteryHistEntry.mConsumerType).isEqualTo(consumerType);
|
||||||
assertThat(entry.getPercentOfTotal()).isEqualTo(consumePercentage);
|
assertThat(entry.getPercentage()).isEqualTo(consumePercentage);
|
||||||
assertThat(entry.mForegroundUsageConsumePower).isEqualTo(foregroundUsageConsumePower);
|
assertThat(entry.mForegroundUsageConsumePower).isEqualTo(foregroundUsageConsumePower);
|
||||||
assertThat(entry.mForegroundServiceUsageConsumePower)
|
assertThat(entry.mForegroundServiceUsageConsumePower)
|
||||||
.isEqualTo(foregroundServiceUsageConsumePower);
|
.isEqualTo(foregroundServiceUsageConsumePower);
|
||||||
|
@@ -65,15 +65,6 @@ public class PowerGaugePreferenceTest {
|
|||||||
assertThat(mPowerGaugePreference.getLayoutResource()).isEqualTo(R.layout.preference_app);
|
assertThat(mPowerGaugePreference.getLayoutResource()).isEqualTo(R.layout.preference_app);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testOnBindViewHolder_bindSubtitle() {
|
|
||||||
mPowerGaugePreference.setSubtitle(SUBTITLE);
|
|
||||||
mPowerGaugePreference.onBindViewHolder(mPreferenceViewHolder);
|
|
||||||
|
|
||||||
TextView widgetSummary = (TextView) mPreferenceViewHolder.findViewById(R.id.widget_summary);
|
|
||||||
assertThat(widgetSummary.getText()).isEqualTo(SUBTITLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnBindViewHolder_showAnomaly_bindAnomalyIcon() {
|
public void testOnBindViewHolder_showAnomaly_bindAnomalyIcon() {
|
||||||
mPowerGaugePreference.shouldShowAnomalyIcon(true);
|
mPowerGaugePreference.shouldShowAnomalyIcon(true);
|
||||||
@@ -104,18 +95,4 @@ public class PowerGaugePreferenceTest {
|
|||||||
assertThat(mPreferenceViewHolder.findViewById(android.R.id.title).getContentDescription())
|
assertThat(mPreferenceViewHolder.findViewById(android.R.id.title).getContentDescription())
|
||||||
.isEqualTo(CONTENT_DESCRIPTION);
|
.isEqualTo(CONTENT_DESCRIPTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void setPercent_greaterThanThreshold_showNumber() {
|
|
||||||
mPowerGaugePreference.setPercent(99.5);
|
|
||||||
|
|
||||||
assertThat(mPowerGaugePreference.getPercent()).isEqualTo("100%");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void setPercent_lessThanThreshold_showBar() {
|
|
||||||
mPowerGaugePreference.setPercent(0.95);
|
|
||||||
|
|
||||||
assertThat(mPowerGaugePreference.getPercent()).isEqualTo("-");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -37,8 +37,6 @@ import com.android.settings.fuelgauge.AdvancedPowerUsageDetail
|
|||||||
import com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceController
|
import com.android.settings.fuelgauge.batteryusage.BatteryChartPreferenceController
|
||||||
import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry
|
import com.android.settings.fuelgauge.batteryusage.BatteryDiffEntry
|
||||||
import com.android.settings.testutils.mockAsUser
|
import com.android.settings.testutils.mockAsUser
|
||||||
import com.android.settingslib.spaprivileged.framework.common.asUser
|
|
||||||
import com.android.settingslib.spaprivileged.model.app.userHandle
|
|
||||||
import com.android.settingslib.spaprivileged.model.app.userId
|
import com.android.settingslib.spaprivileged.model.app.userId
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@@ -142,7 +140,7 @@ class AppBatteryPreferenceTest {
|
|||||||
val batteryDiffEntry = mock(BatteryDiffEntry::class.java).apply {
|
val batteryDiffEntry = mock(BatteryDiffEntry::class.java).apply {
|
||||||
mConsumePower = 12.3
|
mConsumePower = 12.3
|
||||||
}
|
}
|
||||||
whenever(batteryDiffEntry.percentOfTotal).thenReturn(45.6)
|
whenever(batteryDiffEntry.percentage).thenReturn(45.6)
|
||||||
mockBatteryDiffEntry(batteryDiffEntry)
|
mockBatteryDiffEntry(batteryDiffEntry)
|
||||||
|
|
||||||
setContent()
|
setContent()
|
||||||
@@ -153,7 +151,7 @@ class AppBatteryPreferenceTest {
|
|||||||
@Test
|
@Test
|
||||||
fun whenClick_openDetailsPage() {
|
fun whenClick_openDetailsPage() {
|
||||||
val batteryDiffEntry = mock(BatteryDiffEntry::class.java)
|
val batteryDiffEntry = mock(BatteryDiffEntry::class.java)
|
||||||
whenever(batteryDiffEntry.percentOfTotal).thenReturn(10.0)
|
whenever(batteryDiffEntry.percentage).thenReturn(10.0)
|
||||||
mockBatteryDiffEntry(batteryDiffEntry)
|
mockBatteryDiffEntry(batteryDiffEntry)
|
||||||
|
|
||||||
setContent()
|
setContent()
|
||||||
|
Reference in New Issue
Block a user