Make "Battery usage" accessible at any time

Before this cl, user could go to "Battery usage" page only if
related app has battery usage. This cl breaks this rule so we
could open "Battery usage" without battery data.

Bug: 38497822
Test: RunSettingsRoboTests
Change-Id: Ic53c33b7dcbac82de58f31cf96e0bd8fa54e53ea
This commit is contained in:
jackqdyulei
2017-05-22 15:40:19 -07:00
parent 4d815d93ad
commit 2a95a63466
4 changed files with 104 additions and 13 deletions

View File

@@ -192,6 +192,8 @@ public class InstalledAppDetails extends AppInfoBase
BatterySipper mSipper;
@VisibleForTesting
BatteryStatsHelper mBatteryHelper;
@VisibleForTesting
BatteryUtils mBatteryUtils;
protected ProcStatsData mStatsManager;
protected ProcStatsPackageEntry mStats;
@@ -200,7 +202,6 @@ public class InstalledAppDetails extends AppInfoBase
private AppStorageStats mLastResult;
private String mBatteryPercent;
private BatteryUtils mBatteryUtils;
private final LoaderCallbacks<BatteryStatsHelper> mBatteryCallbacks =
new LoaderCallbacks<BatteryStatsHelper>() {
@@ -722,8 +723,6 @@ public class InstalledAppDetails extends AppInfoBase
mDataPreference.setSummary(getDataSummary());
}
updateBattery();
if (!mInitialized) {
// First time init: are we displaying an uninstalled app?
mInitialized = true;
@@ -750,9 +749,10 @@ public class InstalledAppDetails extends AppInfoBase
return true;
}
private void updateBattery() {
if (mSipper != null && mBatteryHelper != null) {
mBatteryPreference.setEnabled(true);
@VisibleForTesting
void updateBattery() {
mBatteryPreference.setEnabled(true);
if (isBatteryStatsAvailable()) {
final int dischargeAmount = mBatteryHelper.getStats().getDischargeAmount(
BatteryStats.STATS_SINCE_CHARGED);
@@ -764,7 +764,6 @@ public class InstalledAppDetails extends AppInfoBase
mBatteryPercent = Utils.formatPercentage(percentOfMax);
mBatteryPreference.setSummary(getString(R.string.battery_summary, mBatteryPercent));
} else {
mBatteryPreference.setEnabled(false);
mBatteryPreference.setSummary(getString(R.string.no_battery_summary));
}
}
@@ -798,6 +797,11 @@ public class InstalledAppDetails extends AppInfoBase
}
}
@VisibleForTesting
boolean isBatteryStatsAvailable() {
return mBatteryHelper != null && mSipper != null;
}
private static CharSequence getSize(Context context, AppStorageStats stats) {
return Formatter.formatFileSize(context, stats.getTotalBytes());
}
@@ -1036,9 +1040,15 @@ public class InstalledAppDetails extends AppInfoBase
} else if (preference == mDataPreference) {
startAppInfoFragment(AppDataUsage.class, getString(R.string.app_data_usage));
} else if (preference == mBatteryPreference) {
BatteryEntry entry = new BatteryEntry(getContext(), null, mUserManager, mSipper);
AdvancedPowerUsageDetail.startBatteryDetailPage((SettingsActivity) getActivity(), this,
mBatteryHelper, BatteryStats.STATS_SINCE_CHARGED, entry, mBatteryPercent);
if (isBatteryStatsAvailable()) {
BatteryEntry entry = new BatteryEntry(getContext(), null, mUserManager, mSipper);
AdvancedPowerUsageDetail.startBatteryDetailPage((SettingsActivity) getActivity(),
this, mBatteryHelper, BatteryStats.STATS_SINCE_CHARGED, entry,
mBatteryPercent);
} else {
AdvancedPowerUsageDetail.startBatteryDetailPage((SettingsActivity) getActivity(),
this, mPackageName);
}
} else {
return false;
}