Make anomaly item refresh in battery

Bug: 63908155
Test: RunSettingsRoboTest
Change-Id: I3e220001ca989020447403641360fade4d09e969
This commit is contained in:
jackqdyulei
2017-07-20 18:00:20 -07:00
parent e4c9b7162d
commit 88b27fdeac
4 changed files with 14 additions and 10 deletions

View File

@@ -50,7 +50,7 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
updateBatteryStatus(intent); updateBatteryStatus(intent, false /* forceUpdate */);
} }
public void setBatteryChangedListener(OnBatteryChangedListener lsn) { public void setBatteryChangedListener(OnBatteryChangedListener lsn) {
@@ -60,20 +60,21 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver {
public void register() { public void register() {
final Intent intent = mContext.registerReceiver(this, final Intent intent = mContext.registerReceiver(this,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
updateBatteryStatus(intent); updateBatteryStatus(intent, true /* forceUpdate */);
} }
public void unRegister() { public void unRegister() {
mContext.unregisterReceiver(this); 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( if (intent != null && mBatteryListener != null && Intent.ACTION_BATTERY_CHANGED.equals(
intent.getAction())) { intent.getAction())) {
String batteryLevel = Utils.getBatteryPercentage(intent); String batteryLevel = Utils.getBatteryPercentage(intent);
String batteryStatus = Utils.getBatteryStatus( String batteryStatus = Utils.getBatteryStatus(
mContext.getResources(), intent); mContext.getResources(), intent);
if (!batteryLevel.equals(mBatteryLevel) || !batteryStatus.equals(mBatteryStatus)) { if (forceUpdate || !batteryLevel.equals(mBatteryLevel) || !batteryStatus.equals(
mBatteryStatus)) {
mBatteryLevel = batteryLevel; mBatteryLevel = batteryLevel;
mBatteryStatus = batteryStatus; mBatteryStatus = batteryStatus;
mBatteryListener.onBatteryChanged(); mBatteryListener.onBatteryChanged();

View File

@@ -522,7 +522,7 @@ public class PowerUsageSummary extends PowerUsageBase implements
return; return;
} }
initAnomalyDetectionIfPossible(); restartAnomalyDetectionIfPossible();
// reload BatteryInfo and updateUI // reload BatteryInfo and updateUI
restartBatteryInfoLoader(); restartBatteryInfoLoader();
@@ -647,9 +647,9 @@ public class PowerUsageSummary extends PowerUsageBase implements
} }
@VisibleForTesting @VisibleForTesting
void initAnomalyDetectionIfPossible() { void restartAnomalyDetectionIfPossible() {
if (getAnomalyDetectionPolicy().isAnomalyDetectionEnabled()) { if (getAnomalyDetectionPolicy().isAnomalyDetectionEnabled()) {
getLoaderManager().initLoader(ANOMALY_LOADER, Bundle.EMPTY, mAnomalyLoaderCallbacks); getLoaderManager().restartLoader(ANOMALY_LOADER, Bundle.EMPTY, mAnomalyLoaderCallbacks);
} }
} }

View File

@@ -37,6 +37,7 @@ import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@@ -100,13 +101,15 @@ public class BatteryBroadcastReceiverTest {
public void testRegister_updateBatteryStatus() { public void testRegister_updateBatteryStatus() {
doReturn(mChargingIntent).when(mContext).registerReceiver(any(), any()); doReturn(mChargingIntent).when(mContext).registerReceiver(any(), any());
mBatteryBroadcastReceiver.register();
mBatteryBroadcastReceiver.register(); mBatteryBroadcastReceiver.register();
assertThat(mBatteryBroadcastReceiver.mBatteryLevel).isEqualTo( assertThat(mBatteryBroadcastReceiver.mBatteryLevel).isEqualTo(
Utils.getBatteryPercentage(mChargingIntent)); Utils.getBatteryPercentage(mChargingIntent));
assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo( assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(
Utils.getBatteryStatus(mContext.getResources(), mChargingIntent)); Utils.getBatteryStatus(mContext.getResources(), mChargingIntent));
verify(mBatteryListener).onBatteryChanged(); // 2 times because register will force update the battery
verify(mBatteryListener, times(2)).onBatteryChanged();
} }
} }

View File

@@ -483,9 +483,9 @@ public class PowerUsageSummaryTest {
doReturn(mAnomalyDetectionPolicy).when(mFragment).getAnomalyDetectionPolicy(); doReturn(mAnomalyDetectionPolicy).when(mFragment).getAnomalyDetectionPolicy();
when(mAnomalyDetectionPolicy.isAnomalyDetectionEnabled()).thenReturn(true); 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()); any());
} }