Loading src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java +27 −7 Original line number Diff line number Diff line Loading @@ -21,9 +21,14 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.PowerManager; import android.support.annotation.IntDef; import android.support.annotation.VisibleForTesting; import com.android.settings.Utils; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * Use this broadcastReceiver to listen to the battery change, and it will invoke Loading @@ -43,7 +48,19 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver { * Battery saver(e.g. off->on) */ public interface OnBatteryChangedListener { void onBatteryChanged(); void onBatteryChanged(@BatteryUpdateType int type); } @Retention(RetentionPolicy.SOURCE) @IntDef({BatteryUpdateType.MANUAL, BatteryUpdateType.BATTERY_LEVEL, BatteryUpdateType.BATTERY_SAVER, BatteryUpdateType.BATTERY_STATUS}) public @interface BatteryUpdateType { int MANUAL = 0; int BATTERY_LEVEL = 1; int BATTERY_SAVER = 2; int BATTERY_STATUS = 3; } @VisibleForTesting Loading Loading @@ -85,14 +102,17 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver { final String batteryLevel = Utils.getBatteryPercentage(intent); final String batteryStatus = Utils.getBatteryStatus( mContext.getResources(), intent); if (forceUpdate || !batteryLevel.equals(mBatteryLevel) || !batteryStatus.equals( mBatteryStatus)) { if (forceUpdate) { mBatteryListener.onBatteryChanged(BatteryUpdateType.MANUAL); } else if(!batteryLevel.equals(mBatteryLevel)) { mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL); } else if (!batteryStatus.equals(mBatteryStatus)) { mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_STATUS); } mBatteryLevel = batteryLevel; mBatteryStatus = batteryStatus; mBatteryListener.onBatteryChanged(); } } else if (PowerManager.ACTION_POWER_SAVE_MODE_CHANGED.equals(intent.getAction())) { mBatteryListener.onBatteryChanged(); mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_SAVER); } } } Loading src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +4 −3 Original line number Diff line number Diff line Loading @@ -13,6 +13,8 @@ */ package com.android.settings.fuelgauge; import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; Loading @@ -30,7 +32,6 @@ import com.android.settings.SettingsActivity; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.utils.StringUtil; import java.util.ArrayList; import java.util.Arrays; Loading Loading @@ -106,7 +107,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { mMetricsFeatureProvider.action(getContext(), MetricsProto.MetricsEvent.ACTION_SETTINGS_MENU_BATTERY_APPS_TOGGLE, mShowAllApps); restartBatteryStatsLoader(); restartBatteryStatsLoader(BatteryUpdateType.MANUAL); return true; default: return super.onOptionsItemSelected(item); Loading Loading @@ -138,7 +139,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { } @Override protected void refreshUi() { protected void refreshUi(@BatteryUpdateType int refreshType) { final Context context = getContext(); if (context == null) { return; Loading src/com/android/settings/fuelgauge/PowerUsageBase.java +37 −24 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.settings.fuelgauge; import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.*; import android.app.Activity; import android.app.LoaderManager; import android.content.Context; Loading @@ -26,18 +28,17 @@ import android.view.Menu; import com.android.internal.os.BatteryStatsHelper; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.utils.AsyncLoader; /** * Common base class for things that need to show the battery usage graph. */ public abstract class PowerUsageBase extends DashboardFragment implements LoaderManager.LoaderCallbacks<BatteryStatsHelper> { public abstract class PowerUsageBase extends DashboardFragment { // +1 to allow ordering for PowerUsageSummary. @VisibleForTesting static final int MENU_STATS_REFRESH = Menu.FIRST + 1; private static final String TAG = "PowerUsageBase"; private static final String KEY_REFRESH_TYPE = "refresh_type"; protected BatteryStatsHelper mStatsHelper; protected UserManager mUm; Loading @@ -57,8 +58,8 @@ public abstract class PowerUsageBase extends DashboardFragment setHasOptionsMenu(true); mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(getContext()); mBatteryBroadcastReceiver.setBatteryChangedListener(() -> { restartBatteryStatsLoader(); mBatteryBroadcastReceiver.setBatteryChangedListener(type -> { restartBatteryStatsLoader(type); }); } Loading @@ -81,11 +82,14 @@ public abstract class PowerUsageBase extends DashboardFragment mBatteryBroadcastReceiver.unRegister(); } protected void restartBatteryStatsLoader() { getLoaderManager().restartLoader(0, Bundle.EMPTY, this); protected void restartBatteryStatsLoader(int refreshType) { final Bundle bundle = new Bundle(); bundle.putInt(KEY_REFRESH_TYPE, refreshType); getLoaderManager().restartLoader(0, bundle, new PowerLoaderCallback()); } protected abstract void refreshUi(); protected abstract void refreshUi(@BatteryUpdateType int refreshType); protected void updatePreference(BatteryHistoryPreference historyPref) { final long startTime = System.currentTimeMillis(); Loading @@ -93,9 +97,17 @@ public abstract class PowerUsageBase extends DashboardFragment BatteryUtils.logRuntime(TAG, "updatePreference", startTime); } /** * {@link android.app.LoaderManager.LoaderCallbacks} for {@link PowerUsageBase} to load * the {@link BatteryStatsHelper} */ public class PowerLoaderCallback implements LoaderManager.LoaderCallbacks<BatteryStatsHelper> { private int mRefreshType; @Override public Loader<BatteryStatsHelper> onCreateLoader(int id, Bundle args) { mRefreshType = args.getInt(KEY_REFRESH_TYPE); return new BatteryStatsHelperLoader(getContext()); } Loading @@ -103,7 +115,7 @@ public abstract class PowerUsageBase extends DashboardFragment public void onLoadFinished(Loader<BatteryStatsHelper> loader, BatteryStatsHelper statsHelper) { mStatsHelper = statsHelper; refreshUi(); refreshUi(mRefreshType); } @Override Loading @@ -111,3 +123,4 @@ public abstract class PowerUsageBase extends DashboardFragment } } } src/com/android/settings/fuelgauge/PowerUsageSummary.java +11 −14 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings.fuelgauge; import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType; import android.app.Activity; import android.app.LoaderManager; import android.app.LoaderManager.LoaderCallbacks; Loading Loading @@ -277,7 +279,7 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList } else { mStatsType = BatteryStats.STATS_SINCE_CHARGED; } refreshUi(); refreshUi(BatteryUpdateType.MANUAL); return true; case MENU_ADVANCED_BATTERY: new SubSettingLauncher(getContext()) Loading @@ -291,14 +293,15 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList } } protected void refreshUi() { protected void refreshUi(@BatteryUpdateType int refreshType) { final Context context = getContext(); if (context == null) { return; } // Only skip BatteryTipLoader for the first time when device is rotated if (mNeedUpdateBatteryTip) { // Skip BatteryTipLoader if device is rotated or only battery level change if (mNeedUpdateBatteryTip && refreshType != BatteryUpdateType.BATTERY_LEVEL) { restartBatteryTipLoader(); } else { mNeedUpdateBatteryTip = true; Loading Loading @@ -397,8 +400,9 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList } @Override protected void restartBatteryStatsLoader() { restartBatteryStatsLoader(true /* clearHeader */); protected void restartBatteryStatsLoader(@BatteryUpdateType int refreshType) { super.restartBatteryStatsLoader(refreshType); mBatteryHeaderPreferenceController.quickUpdateHeaderPreference(); } @Override Loading @@ -407,13 +411,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList mBatteryTipPreferenceController.saveInstanceState(outState); } void restartBatteryStatsLoader(boolean clearHeader) { super.restartBatteryStatsLoader(); if (clearHeader) { mBatteryHeaderPreferenceController.quickUpdateHeaderPreference(); } } @Override public void onBatteryTipHandled(BatteryTip batteryTip) { restartBatteryTipLoader(); Loading @@ -428,7 +425,7 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList mContext = context; mLoader = loader; mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext); mBatteryBroadcastReceiver.setBatteryChangedListener(() -> { mBatteryBroadcastReceiver.setBatteryChangedListener(type -> { BatteryInfo.getBatteryInfo(mContext, new BatteryInfo.Callback() { @Override public void onBatteryInfoLoaded(BatteryInfo info) { Loading tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java +8 −5 Original line number Diff line number Diff line Loading @@ -15,8 +15,11 @@ */ package com.android.settings.fuelgauge; import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; Loading Loading @@ -70,14 +73,14 @@ public class BatteryBroadcastReceiverTest { } @Test public void testOnReceive_batteryDataChanged_dataUpdated() { public void testOnReceive_batteryLevelChanged_dataUpdated() { mBatteryBroadcastReceiver.onReceive(mContext, mChargingIntent); assertThat(mBatteryBroadcastReceiver.mBatteryLevel) .isEqualTo(Utils.getBatteryPercentage(mChargingIntent)); assertThat(mBatteryBroadcastReceiver.mBatteryStatus) .isEqualTo(Utils.getBatteryStatus(mContext.getResources(), mChargingIntent)); verify(mBatteryListener).onBatteryChanged(); verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL); } @Test Loading @@ -85,7 +88,7 @@ public class BatteryBroadcastReceiverTest { mBatteryBroadcastReceiver.onReceive(mContext, new Intent(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED)); verify(mBatteryListener).onBatteryChanged(); verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_SAVER); } @Test Loading @@ -100,7 +103,7 @@ public class BatteryBroadcastReceiverTest { assertThat(mBatteryBroadcastReceiver.mBatteryLevel).isEqualTo(batteryLevel); assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(batteryStatus); verify(mBatteryListener, never()).onBatteryChanged(); verify(mBatteryListener, never()).onBatteryChanged(anyInt()); } @Test Loading @@ -115,6 +118,6 @@ public class BatteryBroadcastReceiverTest { assertThat(mBatteryBroadcastReceiver.mBatteryStatus) .isEqualTo(Utils.getBatteryStatus(mContext.getResources(), mChargingIntent)); // 2 times because register will force update the battery verify(mBatteryListener, times(2)).onBatteryChanged(); verify(mBatteryListener, times(2)).onBatteryChanged(BatteryUpdateType.MANUAL); } } Loading
src/com/android/settings/fuelgauge/BatteryBroadcastReceiver.java +27 −7 Original line number Diff line number Diff line Loading @@ -21,9 +21,14 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.PowerManager; import android.support.annotation.IntDef; import android.support.annotation.VisibleForTesting; import com.android.settings.Utils; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * Use this broadcastReceiver to listen to the battery change, and it will invoke Loading @@ -43,7 +48,19 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver { * Battery saver(e.g. off->on) */ public interface OnBatteryChangedListener { void onBatteryChanged(); void onBatteryChanged(@BatteryUpdateType int type); } @Retention(RetentionPolicy.SOURCE) @IntDef({BatteryUpdateType.MANUAL, BatteryUpdateType.BATTERY_LEVEL, BatteryUpdateType.BATTERY_SAVER, BatteryUpdateType.BATTERY_STATUS}) public @interface BatteryUpdateType { int MANUAL = 0; int BATTERY_LEVEL = 1; int BATTERY_SAVER = 2; int BATTERY_STATUS = 3; } @VisibleForTesting Loading Loading @@ -85,14 +102,17 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver { final String batteryLevel = Utils.getBatteryPercentage(intent); final String batteryStatus = Utils.getBatteryStatus( mContext.getResources(), intent); if (forceUpdate || !batteryLevel.equals(mBatteryLevel) || !batteryStatus.equals( mBatteryStatus)) { if (forceUpdate) { mBatteryListener.onBatteryChanged(BatteryUpdateType.MANUAL); } else if(!batteryLevel.equals(mBatteryLevel)) { mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL); } else if (!batteryStatus.equals(mBatteryStatus)) { mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_STATUS); } mBatteryLevel = batteryLevel; mBatteryStatus = batteryStatus; mBatteryListener.onBatteryChanged(); } } else if (PowerManager.ACTION_POWER_SAVE_MODE_CHANGED.equals(intent.getAction())) { mBatteryListener.onBatteryChanged(); mBatteryListener.onBatteryChanged(BatteryUpdateType.BATTERY_SAVER); } } } Loading
src/com/android/settings/fuelgauge/PowerUsageAdvanced.java +4 −3 Original line number Diff line number Diff line Loading @@ -13,6 +13,8 @@ */ package com.android.settings.fuelgauge; import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; Loading @@ -30,7 +32,6 @@ import com.android.settings.SettingsActivity; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.utils.StringUtil; import java.util.ArrayList; import java.util.Arrays; Loading Loading @@ -106,7 +107,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { mMetricsFeatureProvider.action(getContext(), MetricsProto.MetricsEvent.ACTION_SETTINGS_MENU_BATTERY_APPS_TOGGLE, mShowAllApps); restartBatteryStatsLoader(); restartBatteryStatsLoader(BatteryUpdateType.MANUAL); return true; default: return super.onOptionsItemSelected(item); Loading Loading @@ -138,7 +139,7 @@ public class PowerUsageAdvanced extends PowerUsageBase { } @Override protected void refreshUi() { protected void refreshUi(@BatteryUpdateType int refreshType) { final Context context = getContext(); if (context == null) { return; Loading
src/com/android/settings/fuelgauge/PowerUsageBase.java +37 −24 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.settings.fuelgauge; import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.*; import android.app.Activity; import android.app.LoaderManager; import android.content.Context; Loading @@ -26,18 +28,17 @@ import android.view.Menu; import com.android.internal.os.BatteryStatsHelper; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.utils.AsyncLoader; /** * Common base class for things that need to show the battery usage graph. */ public abstract class PowerUsageBase extends DashboardFragment implements LoaderManager.LoaderCallbacks<BatteryStatsHelper> { public abstract class PowerUsageBase extends DashboardFragment { // +1 to allow ordering for PowerUsageSummary. @VisibleForTesting static final int MENU_STATS_REFRESH = Menu.FIRST + 1; private static final String TAG = "PowerUsageBase"; private static final String KEY_REFRESH_TYPE = "refresh_type"; protected BatteryStatsHelper mStatsHelper; protected UserManager mUm; Loading @@ -57,8 +58,8 @@ public abstract class PowerUsageBase extends DashboardFragment setHasOptionsMenu(true); mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(getContext()); mBatteryBroadcastReceiver.setBatteryChangedListener(() -> { restartBatteryStatsLoader(); mBatteryBroadcastReceiver.setBatteryChangedListener(type -> { restartBatteryStatsLoader(type); }); } Loading @@ -81,11 +82,14 @@ public abstract class PowerUsageBase extends DashboardFragment mBatteryBroadcastReceiver.unRegister(); } protected void restartBatteryStatsLoader() { getLoaderManager().restartLoader(0, Bundle.EMPTY, this); protected void restartBatteryStatsLoader(int refreshType) { final Bundle bundle = new Bundle(); bundle.putInt(KEY_REFRESH_TYPE, refreshType); getLoaderManager().restartLoader(0, bundle, new PowerLoaderCallback()); } protected abstract void refreshUi(); protected abstract void refreshUi(@BatteryUpdateType int refreshType); protected void updatePreference(BatteryHistoryPreference historyPref) { final long startTime = System.currentTimeMillis(); Loading @@ -93,9 +97,17 @@ public abstract class PowerUsageBase extends DashboardFragment BatteryUtils.logRuntime(TAG, "updatePreference", startTime); } /** * {@link android.app.LoaderManager.LoaderCallbacks} for {@link PowerUsageBase} to load * the {@link BatteryStatsHelper} */ public class PowerLoaderCallback implements LoaderManager.LoaderCallbacks<BatteryStatsHelper> { private int mRefreshType; @Override public Loader<BatteryStatsHelper> onCreateLoader(int id, Bundle args) { mRefreshType = args.getInt(KEY_REFRESH_TYPE); return new BatteryStatsHelperLoader(getContext()); } Loading @@ -103,7 +115,7 @@ public abstract class PowerUsageBase extends DashboardFragment public void onLoadFinished(Loader<BatteryStatsHelper> loader, BatteryStatsHelper statsHelper) { mStatsHelper = statsHelper; refreshUi(); refreshUi(mRefreshType); } @Override Loading @@ -111,3 +123,4 @@ public abstract class PowerUsageBase extends DashboardFragment } } }
src/com/android/settings/fuelgauge/PowerUsageSummary.java +11 −14 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings.fuelgauge; import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType; import android.app.Activity; import android.app.LoaderManager; import android.app.LoaderManager.LoaderCallbacks; Loading Loading @@ -277,7 +279,7 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList } else { mStatsType = BatteryStats.STATS_SINCE_CHARGED; } refreshUi(); refreshUi(BatteryUpdateType.MANUAL); return true; case MENU_ADVANCED_BATTERY: new SubSettingLauncher(getContext()) Loading @@ -291,14 +293,15 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList } } protected void refreshUi() { protected void refreshUi(@BatteryUpdateType int refreshType) { final Context context = getContext(); if (context == null) { return; } // Only skip BatteryTipLoader for the first time when device is rotated if (mNeedUpdateBatteryTip) { // Skip BatteryTipLoader if device is rotated or only battery level change if (mNeedUpdateBatteryTip && refreshType != BatteryUpdateType.BATTERY_LEVEL) { restartBatteryTipLoader(); } else { mNeedUpdateBatteryTip = true; Loading Loading @@ -397,8 +400,9 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList } @Override protected void restartBatteryStatsLoader() { restartBatteryStatsLoader(true /* clearHeader */); protected void restartBatteryStatsLoader(@BatteryUpdateType int refreshType) { super.restartBatteryStatsLoader(refreshType); mBatteryHeaderPreferenceController.quickUpdateHeaderPreference(); } @Override Loading @@ -407,13 +411,6 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList mBatteryTipPreferenceController.saveInstanceState(outState); } void restartBatteryStatsLoader(boolean clearHeader) { super.restartBatteryStatsLoader(); if (clearHeader) { mBatteryHeaderPreferenceController.quickUpdateHeaderPreference(); } } @Override public void onBatteryTipHandled(BatteryTip batteryTip) { restartBatteryTipLoader(); Loading @@ -428,7 +425,7 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList mContext = context; mLoader = loader; mBatteryBroadcastReceiver = new BatteryBroadcastReceiver(mContext); mBatteryBroadcastReceiver.setBatteryChangedListener(() -> { mBatteryBroadcastReceiver.setBatteryChangedListener(type -> { BatteryInfo.getBatteryInfo(mContext, new BatteryInfo.Callback() { @Override public void onBatteryInfoLoaded(BatteryInfo info) { Loading
tests/robotests/src/com/android/settings/fuelgauge/BatteryBroadcastReceiverTest.java +8 −5 Original line number Diff line number Diff line Loading @@ -15,8 +15,11 @@ */ package com.android.settings.fuelgauge; import static com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; Loading Loading @@ -70,14 +73,14 @@ public class BatteryBroadcastReceiverTest { } @Test public void testOnReceive_batteryDataChanged_dataUpdated() { public void testOnReceive_batteryLevelChanged_dataUpdated() { mBatteryBroadcastReceiver.onReceive(mContext, mChargingIntent); assertThat(mBatteryBroadcastReceiver.mBatteryLevel) .isEqualTo(Utils.getBatteryPercentage(mChargingIntent)); assertThat(mBatteryBroadcastReceiver.mBatteryStatus) .isEqualTo(Utils.getBatteryStatus(mContext.getResources(), mChargingIntent)); verify(mBatteryListener).onBatteryChanged(); verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL); } @Test Loading @@ -85,7 +88,7 @@ public class BatteryBroadcastReceiverTest { mBatteryBroadcastReceiver.onReceive(mContext, new Intent(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED)); verify(mBatteryListener).onBatteryChanged(); verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_SAVER); } @Test Loading @@ -100,7 +103,7 @@ public class BatteryBroadcastReceiverTest { assertThat(mBatteryBroadcastReceiver.mBatteryLevel).isEqualTo(batteryLevel); assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(batteryStatus); verify(mBatteryListener, never()).onBatteryChanged(); verify(mBatteryListener, never()).onBatteryChanged(anyInt()); } @Test Loading @@ -115,6 +118,6 @@ public class BatteryBroadcastReceiverTest { assertThat(mBatteryBroadcastReceiver.mBatteryStatus) .isEqualTo(Utils.getBatteryStatus(mContext.getResources(), mChargingIntent)); // 2 times because register will force update the battery verify(mBatteryListener, times(2)).onBatteryChanged(); verify(mBatteryListener, times(2)).onBatteryChanged(BatteryUpdateType.MANUAL); } }