Fix null pointer from PowerUsageFeatureProvider

Some locations did not check if the returned value was null before
doing operations on them and could crash. This CL changes those
spots to take that into account.

Test: b/72463854 will add in follow up to unblock dogfood
Bug: 72350595
Change-Id: I0ace5c0ab4a8aa9fd5b09d41d6f986143246f059
(cherry picked from commit 250a79830c)
This commit is contained in:
Salvador Martinez
2018-01-24 10:24:04 -08:00
committed by android-build-team Robot
parent a6aceb717b
commit f98425c874
2 changed files with 16 additions and 11 deletions

View File

@@ -171,18 +171,20 @@ public class BatteryInfo {
if (discharging && provider != null
&& provider.isEnhancedBatteryPredictionEnabled(context)) {
Estimate estimate = provider.getEnhancedBatteryPrediction(context);
BatteryUtils.logRuntime(LOG_TAG, "time for enhanced BatteryInfo", startTime);
return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
elapsedRealtimeUs, shortString,
BatteryUtils.convertMsToUs(estimate.estimateMillis),
estimate.isBasedOnUsage);
} else {
long prediction = discharging
? stats.computeBatteryTimeRemaining(elapsedRealtimeUs) : 0;
BatteryUtils.logRuntime(LOG_TAG, "time for regular BatteryInfo", startTime);
return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
elapsedRealtimeUs, shortString, prediction, false);
if(estimate != null) {
BatteryUtils
.logRuntime(LOG_TAG, "time for enhanced BatteryInfo", startTime);
return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
elapsedRealtimeUs, shortString,
BatteryUtils.convertMsToUs(estimate.estimateMillis),
estimate.isBasedOnUsage);
}
}
long prediction = discharging
? stats.computeBatteryTimeRemaining(elapsedRealtimeUs) : 0;
BatteryUtils.logRuntime(LOG_TAG, "time for regular BatteryInfo", startTime);
return BatteryInfo.getBatteryInfo(context, batteryBroadcast, stats,
elapsedRealtimeUs, shortString, prediction, false);
}
@Override

View File

@@ -55,6 +55,9 @@ public class DebugEstimatesLoader extends AsyncLoader<List<BatteryInfo>> {
stats, elapsedRealtimeUs, false);
Estimate estimate = powerUsageFeatureProvider.getEnhancedBatteryPrediction(context);
if (estimate == null) {
estimate = new Estimate(0, false);
}
BatteryInfo newInfo = BatteryInfo.getBatteryInfo(getContext(), batteryBroadcast, stats,
elapsedRealtimeUs, false,
BatteryUtils.convertMsToUs(estimate.estimateMillis),