From 88b27fdeac1215b26eb84c4a1bc9c2b3a0d25522 Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Thu, 20 Jul 2017 18:00:20 -0700 Subject: [PATCH] Make anomaly item refresh in battery Bug: 63908155 Test: RunSettingsRoboTest Change-Id: I3e220001ca989020447403641360fade4d09e969 --- .../settings/fuelgauge/BatteryBroadcastReceiver.java | 9 +++++---- .../android/settings/fuelgauge/PowerUsageSummary.java | 6 +++--- .../settings/fuelgauge/BatteryBroadcastReceiverTest.java | 5 ++++- .../settings/fuelgauge/PowerUsageSummaryTest.java | 4 ++-- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java b/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java index e57ed0170f9..f7a2b9a58a6 100644 --- a/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java +++ b/src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java @@ -50,7 +50,7 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - updateBatteryStatus(intent); + updateBatteryStatus(intent, false /* forceUpdate */); } public void setBatteryChangedListener(OnBatteryChangedListener lsn) { @@ -60,20 +60,21 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver { public void register() { final Intent intent = mContext.registerReceiver(this, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - updateBatteryStatus(intent); + updateBatteryStatus(intent, true /* forceUpdate */); } public void unRegister() { mContext.unregisterReceiver(this); } - private void updateBatteryStatus(Intent intent) { + private void updateBatteryStatus(Intent intent, boolean forceUpdate) { if (intent != null && mBatteryListener != null && Intent.ACTION_BATTERY_CHANGED.equals( intent.getAction())) { String batteryLevel = Utils.getBatteryPercentage(intent); String batteryStatus = Utils.getBatteryStatus( mContext.getResources(), intent); - if (!batteryLevel.equals(mBatteryLevel) || !batteryStatus.equals(mBatteryStatus)) { + if (forceUpdate || !batteryLevel.equals(mBatteryLevel) || !batteryStatus.equals( + mBatteryStatus)) { mBatteryLevel = batteryLevel; mBatteryStatus = batteryStatus; mBatteryListener.onBatteryChanged(); diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 7ea0bbd11ff..b10a1dfce66 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -522,7 +522,7 @@ public class PowerUsageSummary extends PowerUsageBase implements return; } - initAnomalyDetectionIfPossible(); + restartAnomalyDetectionIfPossible(); // reload BatteryInfo and updateUI restartBatteryInfoLoader(); @@ -647,9 +647,9 @@ public class PowerUsageSummary extends PowerUsageBase implements } @VisibleForTesting - void initAnomalyDetectionIfPossible() { + void restartAnomalyDetectionIfPossible() { if (getAnomalyDetectionPolicy().isAnomalyDetectionEnabled()) { - getLoaderManager().initLoader(ANOMALY_LOADER, Bundle.EMPTY, mAnomalyLoaderCallbacks); + getLoaderManager().restartLoader(ANOMALY_LOADER, Bundle.EMPTY, mAnomalyLoaderCallbacks); } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java index 60d7de3e435..a163a43989b 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java @@ -37,6 +37,7 @@ import static org.mockito.Matchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @RunWith(SettingsRobolectricTestRunner.class) @@ -100,13 +101,15 @@ public class BatteryBroadcastReceiverTest { public void testRegister_updateBatteryStatus() { doReturn(mChargingIntent).when(mContext).registerReceiver(any(), any()); + mBatteryBroadcastReceiver.register(); mBatteryBroadcastReceiver.register(); assertThat(mBatteryBroadcastReceiver.mBatteryLevel).isEqualTo( Utils.getBatteryPercentage(mChargingIntent)); assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo( Utils.getBatteryStatus(mContext.getResources(), mChargingIntent)); - verify(mBatteryListener).onBatteryChanged(); + // 2 times because register will force update the battery + verify(mBatteryListener, times(2)).onBatteryChanged(); } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java index 92430401dc2..99b9ba9d59b 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java @@ -483,9 +483,9 @@ public class PowerUsageSummaryTest { doReturn(mAnomalyDetectionPolicy).when(mFragment).getAnomalyDetectionPolicy(); when(mAnomalyDetectionPolicy.isAnomalyDetectionEnabled()).thenReturn(true); - mFragment.initAnomalyDetectionIfPossible(); + mFragment.restartAnomalyDetectionIfPossible(); - verify(mLoaderManager).initLoader(eq(PowerUsageSummary.ANOMALY_LOADER), eq(Bundle.EMPTY), + verify(mLoaderManager).restartLoader(eq(PowerUsageSummary.ANOMALY_LOADER), eq(Bundle.EMPTY), any()); }