diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index 849144a7993..3888ece953e 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -217,7 +217,7 @@ public class BatteryUtils { return timeUs / 1000; } - private long convertMsToUs(long timeMs) { + public long convertMsToUs(long timeMs) { return timeMs * 1000; } diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 0df23ddec6c..63d703b9cbd 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -187,12 +187,11 @@ public class PowerUsageSummary extends PowerUsageBase implements mEnhancedEstimate = mPowerFeatureProvider.getTimeRemainingEstimate(cursor); } - final long elapsedRealtimeUs = SystemClock.elapsedRealtime() * 1000; + final long elapsedRealtimeUs = + mBatteryUtils.convertMsToUs(SystemClock.elapsedRealtime()); Intent batteryBroadcast = getContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - BatteryInfo batteryInfo = BatteryInfo.getBatteryInfo(getContext(), - batteryBroadcast, mStatsHelper.getStats(), elapsedRealtimeUs, false); - useEnhancedEstimateIfAvailable(getContext(), batteryInfo); + BatteryInfo batteryInfo = getBatteryInfo(elapsedRealtimeUs, batteryBroadcast); updateHeaderPreference(batteryInfo); } @@ -494,12 +493,10 @@ public class PowerUsageSummary extends PowerUsageBase implements initAnomalyDetectionIfPossible(); - final long elapsedRealtimeUs = SystemClock.elapsedRealtime() * 1000; + final long elapsedRealtimeUs = mBatteryUtils.convertMsToUs(SystemClock.elapsedRealtime()); Intent batteryBroadcast = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - BatteryInfo batteryInfo = BatteryInfo.getBatteryInfo(context, batteryBroadcast, - mStatsHelper.getStats(), elapsedRealtimeUs, false); - useEnhancedEstimateIfAvailable(context, batteryInfo); + BatteryInfo batteryInfo = getBatteryInfo(elapsedRealtimeUs, batteryBroadcast); updateHeaderPreference(batteryInfo); final long runningTime = calculateRunningTimeBasedOnStatsType(); @@ -660,7 +657,7 @@ public class PowerUsageSummary extends PowerUsageBase implements @VisibleForTesting long calculateRunningTimeBasedOnStatsType() { - final long elapsedRealtimeUs = SystemClock.elapsedRealtime() * 1000; + final long elapsedRealtimeUs = mBatteryUtils.convertMsToUs(SystemClock.elapsedRealtime()); // Return the battery time (millisecond) on status mStatsType return mStatsHelper.getStats().computeBatteryRealtime(elapsedRealtimeUs, mStatsType /* STATS_SINCE_CHARGED */) / 1000; @@ -743,17 +740,20 @@ public class PowerUsageSummary extends PowerUsageBase implements } } - @VisibleForTesting - void useEnhancedEstimateIfAvailable(Context context, BatteryInfo batteryInfo) { - if (mEnhancedEstimate > 0 - && mPowerFeatureProvider.isEnhancedBatteryPredictionEnabled(context)) { - final Resources resources = context.getResources(); - batteryInfo.remainingTimeUs = mEnhancedEstimate; - String timeString = Formatter.formatShortElapsedTime(context, mEnhancedEstimate); - batteryInfo.remainingLabel = resources.getString( - com.android.settingslib.R.string.power_remaining_duration_only, - timeString); + private BatteryInfo getBatteryInfo(long elapsedRealtimeUs, Intent batteryBroadcast) { + BatteryInfo batteryInfo; + if (mEnhancedEstimate > 0 && + mPowerFeatureProvider.isEnhancedBatteryPredictionEnabled( + getContext())) { + // Drain time is in micro-seconds so we have to multiply by 1000 + batteryInfo = BatteryInfo.getBatteryInfo(getContext(), batteryBroadcast, + mStatsHelper.getStats(), elapsedRealtimeUs, false, + mBatteryUtils.convertMsToUs(mEnhancedEstimate), true); + } else { + batteryInfo = BatteryInfo.getBatteryInfo(getContext(), batteryBroadcast, + mStatsHelper.getStats(), elapsedRealtimeUs, false); } + return batteryInfo; } @VisibleForTesting diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java index 2701abe8625..685e9212f77 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java @@ -491,41 +491,6 @@ public class PowerUsageSummaryTest { assertThat(mFragment.mAnomalySparseArray.get(UID_2)).containsExactly(anomaly3); } - @Test - public void testUseEnhancedEstimateIfAvailable() { - // mock out the provider - final long time = 60 * 1000 * 1000; - PowerUsageFeatureProvider provider = mFeatureFactory.getPowerUsageFeatureProvider(mContext); - when(provider.isEnhancedBatteryPredictionEnabled(any())).thenReturn(true); - mFragment.mPowerFeatureProvider = provider; - mFragment.mEnhancedEstimate = time; - - mFragment.useEnhancedEstimateIfAvailable(mRealContext, mBatteryInfo); - - // The string that gets returned always has weird whitespacing to make it fit - // so we're just going to check that it contains the correct value we care about. - assertThat(mBatteryInfo.remainingTimeUs).isEqualTo(time); - assertThat(mBatteryInfo.remainingLabel).contains("About 17 hrs"); - } - - @Test - public void testUseEnhancedEstimateIfAvailable_noOpsOnDisabled() { - // mock out the provider - final long time = 60 * 1000 * 1000; - PowerUsageFeatureProvider provider = mFeatureFactory.getPowerUsageFeatureProvider(mContext); - when(provider.isEnhancedBatteryPredictionEnabled(any())).thenReturn(false); - mFragment.mPowerFeatureProvider = provider; - mFragment.mEnhancedEstimate = time; - mBatteryInfo.remainingTimeUs = TIME_SINCE_LAST_FULL_CHARGE_US; - mBatteryInfo.remainingLabel = TIME_LEFT; - - mFragment.useEnhancedEstimateIfAvailable(mRealContext, mBatteryInfo); - - // check to make sure the values did not change - assertThat(mBatteryInfo.remainingTimeUs).isEqualTo(TIME_SINCE_LAST_FULL_CHARGE_US); - assertThat(mBatteryInfo.remainingLabel).contains(TIME_LEFT); - } - @Test public void testBatteryPredictionLoaderCallbacks_DoesNotCrashOnNull() { // Sanity test to check for crash