Loading src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java +2 −53 Original line number Diff line number Diff line Loading @@ -30,14 +30,11 @@ import androidx.loader.content.Loader; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.AdvancedPowerUsageDetail; import com.android.settings.fuelgauge.BatteryEntry; import com.android.settings.fuelgauge.BatteryStatsHelperLoader; import com.android.settings.fuelgauge.BatteryUsageStatsLoader; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settingslib.core.lifecycle.Lifecycle; Loading @@ -52,22 +49,11 @@ public class AppBatteryPreferenceController extends BasePreferenceController private static final String KEY_BATTERY = "battery"; // TODO(b/180630447): switch to BatteryUsageStatsLoader and remove all references to // BatteryStatsHelper and BatterySipper @VisibleForTesting final BatteryStatsHelperLoaderCallbacks mBatteryStatsHelperLoaderCallbacks = new BatteryStatsHelperLoaderCallbacks(); @VisibleForTesting final BatteryUsageStatsLoaderCallbacks mBatteryUsageStatsLoaderCallbacks = new BatteryUsageStatsLoaderCallbacks(); @VisibleForTesting BatterySipper mSipper; @VisibleForTesting BatteryStatsHelper mBatteryHelper; @VisibleForTesting BatteryUtils mBatteryUtils; @VisibleForTesting BatteryUsageStats mBatteryUsageStats; @VisibleForTesting Loading Loading @@ -124,9 +110,6 @@ public class AppBatteryPreferenceController extends BasePreferenceController @Override public void onResume() { mParent.getLoaderManager().restartLoader( AppInfoDashboardFragment.LOADER_BATTERY, Bundle.EMPTY, mBatteryStatsHelperLoaderCallbacks); mParent.getLoaderManager().restartLoader( AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS, Bundle.EMPTY, mBatteryUsageStatsLoaderCallbacks); Loading @@ -134,20 +117,17 @@ public class AppBatteryPreferenceController extends BasePreferenceController @Override public void onPause() { mParent.getLoaderManager().destroyLoader(AppInfoDashboardFragment.LOADER_BATTERY); mParent.getLoaderManager().destroyLoader( AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS); } private void onLoadFinished() { // Wait for both loaders to finish before proceeding. if (mBatteryHelper == null || mBatteryUsageStats == null) { if (mBatteryUsageStats == null) { return; } final PackageInfo packageInfo = mParent.getPackageInfo(); if (packageInfo != null) { mSipper = findTargetSipper(mBatteryHelper, packageInfo.applicationInfo.uid); mUidBatteryConsumer = findTargetUidBatteryConsumer(mBatteryUsageStats, packageInfo.applicationInfo.uid); if (mParent.getActivity() != null) { Loading @@ -172,19 +152,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController @VisibleForTesting boolean isBatteryStatsAvailable() { return mBatteryHelper != null && mSipper != null && mUidBatteryConsumer != null; } @VisibleForTesting BatterySipper findTargetSipper(BatteryStatsHelper batteryHelper, int uid) { final List<BatterySipper> usageList = batteryHelper.getUsageList(); for (int i = 0, size = usageList.size(); i < size; i++) { final BatterySipper sipper = usageList.get(i); if (sipper.getUid() == uid) { return sipper; } } return null; return mUidBatteryConsumer != null; } @VisibleForTesting Loading @@ -199,25 +167,6 @@ public class AppBatteryPreferenceController extends BasePreferenceController return null; } private class BatteryStatsHelperLoaderCallbacks implements LoaderManager.LoaderCallbacks<BatteryStatsHelper> { @Override public Loader<BatteryStatsHelper> onCreateLoader(int id, Bundle args) { return new BatteryStatsHelperLoader(mContext); } @Override public void onLoadFinished(Loader<BatteryStatsHelper> loader, BatteryStatsHelper batteryHelper) { mBatteryHelper = batteryHelper; AppBatteryPreferenceController.this.onLoadFinished(); } @Override public void onLoaderReset(Loader<BatteryStatsHelper> loader) { } } private class BatteryUsageStatsLoaderCallbacks implements LoaderManager.LoaderCallbacks<BatteryUsageStats> { @Override Loading tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java +14 −33 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.app.AppOpsManager; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.os.BatteryStats; import android.os.BatteryUsageStats; import android.os.Bundle; import android.os.UidBatteryConsumer; Loading @@ -39,15 +38,12 @@ import androidx.loader.app.LoaderManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; import com.android.settings.SettingsActivity; import com.android.settings.fuelgauge.BatteryUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; Loading @@ -73,13 +69,7 @@ public class AppBatteryPreferenceControllerTest { @Mock private UidBatteryConsumer mUidBatteryConsumer; @Mock private BatterySipper mBatterySipper; @Mock private BatterySipper mOtherBatterySipper; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private BatteryStatsHelper mBatteryStatsHelper; @Mock private BatteryStats.Uid mUid; private UidBatteryConsumer mOtherUidBatteryConsumer; @Mock private PreferenceScreen mScreen; @Mock Loading @@ -102,10 +92,8 @@ public class AppBatteryPreferenceControllerTest { mBatteryPreference = spy(new Preference(RuntimeEnvironment.application)); mBatterySipper.drainType = BatterySipper.DrainType.IDLE; mBatterySipper.uidObj = mUid; doReturn(TARGET_UID).when(mBatterySipper).getUid(); doReturn(OTHER_UID).when(mOtherBatterySipper).getUid(); when(mUidBatteryConsumer.getUid()).thenReturn(TARGET_UID); when(mOtherUidBatteryConsumer.getUid()).thenReturn(OTHER_UID); mController = spy(new AppBatteryPreferenceController( RuntimeEnvironment.application, mFragment, "package1", null /* lifecycle */)); Loading @@ -125,14 +113,14 @@ public class AppBatteryPreferenceControllerTest { } @Test public void findTargetSipper_findCorrectSipper() { final List<BatterySipper> usageList = new ArrayList<>(); usageList.add(mBatterySipper); usageList.add(mOtherBatterySipper); when(mBatteryStatsHelper.getUsageList()).thenReturn(usageList); assertThat(mController.findTargetSipper(mBatteryStatsHelper, TARGET_UID)) .isEqualTo(mBatterySipper); public void findTargetBatteryConsumer_findCorrectBatteryConsumer() { final List<UidBatteryConsumer> uidBatteryConsumers = new ArrayList<>(); uidBatteryConsumers.add(mUidBatteryConsumer); uidBatteryConsumers.add(mOtherUidBatteryConsumer); when(mBatteryUsageStats.getUidBatteryConsumers()).thenReturn(uidBatteryConsumers); assertThat(mController.findTargetUidBatteryConsumer(mBatteryUsageStats, TARGET_UID)) .isEqualTo(mUidBatteryConsumer); } @Test Loading @@ -147,13 +135,10 @@ public class AppBatteryPreferenceControllerTest { @Test public void updateBattery_hasBatteryStats_summaryPercent() { mController.mBatteryHelper = mBatteryStatsHelper; mController.mSipper = mBatterySipper; mController.mBatteryUsageStats = mBatteryUsageStats; mController.mUidBatteryConsumer = mUidBatteryConsumer; doReturn(BATTERY_LEVEL).when(mBatteryUtils).calculateBatteryPercent(anyDouble(), anyDouble(), anyInt()); doReturn(new ArrayList<>()).when(mBatteryStatsHelper).getUsageList(); mController.displayPreference(mScreen); mController.updateBattery(); Loading @@ -163,8 +148,6 @@ public class AppBatteryPreferenceControllerTest { @Test public void isBatteryStatsAvailable_hasBatteryStatsHelperAndSipper_returnTrue() { mController.mBatteryHelper = mBatteryStatsHelper; mController.mSipper = mBatterySipper; mController.mBatteryUsageStats = mBatteryUsageStats; mController.mUidBatteryConsumer = mUidBatteryConsumer; Loading @@ -183,8 +166,6 @@ public class AppBatteryPreferenceControllerTest { when(mFragment.getActivity()).thenReturn(mActivity); final String key = mController.getPreferenceKey(); when(mBatteryPreference.getKey()).thenReturn(key); mController.mSipper = mBatterySipper; mController.mBatteryHelper = mBatteryStatsHelper; mController.mBatteryUsageStats = mBatteryUsageStats; mController.mUidBatteryConsumer = mUidBatteryConsumer; Loading @@ -199,8 +180,8 @@ public class AppBatteryPreferenceControllerTest { mController.onResume(); verify(mLoaderManager) .restartLoader(AppInfoDashboardFragment.LOADER_BATTERY, Bundle.EMPTY, mController.mBatteryStatsHelperLoaderCallbacks); .restartLoader(AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS, Bundle.EMPTY, mController.mBatteryUsageStatsLoaderCallbacks); } @Test Loading @@ -209,6 +190,6 @@ public class AppBatteryPreferenceControllerTest { mController.onPause(); verify(mLoaderManager).destroyLoader(AppInfoDashboardFragment.LOADER_BATTERY); verify(mLoaderManager).destroyLoader(AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS); } } Loading
src/com/android/settings/applications/appinfo/AppBatteryPreferenceController.java +2 −53 Original line number Diff line number Diff line Loading @@ -30,14 +30,11 @@ import androidx.loader.content.Loader; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.fuelgauge.AdvancedPowerUsageDetail; import com.android.settings.fuelgauge.BatteryEntry; import com.android.settings.fuelgauge.BatteryStatsHelperLoader; import com.android.settings.fuelgauge.BatteryUsageStatsLoader; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settingslib.core.lifecycle.Lifecycle; Loading @@ -52,22 +49,11 @@ public class AppBatteryPreferenceController extends BasePreferenceController private static final String KEY_BATTERY = "battery"; // TODO(b/180630447): switch to BatteryUsageStatsLoader and remove all references to // BatteryStatsHelper and BatterySipper @VisibleForTesting final BatteryStatsHelperLoaderCallbacks mBatteryStatsHelperLoaderCallbacks = new BatteryStatsHelperLoaderCallbacks(); @VisibleForTesting final BatteryUsageStatsLoaderCallbacks mBatteryUsageStatsLoaderCallbacks = new BatteryUsageStatsLoaderCallbacks(); @VisibleForTesting BatterySipper mSipper; @VisibleForTesting BatteryStatsHelper mBatteryHelper; @VisibleForTesting BatteryUtils mBatteryUtils; @VisibleForTesting BatteryUsageStats mBatteryUsageStats; @VisibleForTesting Loading Loading @@ -124,9 +110,6 @@ public class AppBatteryPreferenceController extends BasePreferenceController @Override public void onResume() { mParent.getLoaderManager().restartLoader( AppInfoDashboardFragment.LOADER_BATTERY, Bundle.EMPTY, mBatteryStatsHelperLoaderCallbacks); mParent.getLoaderManager().restartLoader( AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS, Bundle.EMPTY, mBatteryUsageStatsLoaderCallbacks); Loading @@ -134,20 +117,17 @@ public class AppBatteryPreferenceController extends BasePreferenceController @Override public void onPause() { mParent.getLoaderManager().destroyLoader(AppInfoDashboardFragment.LOADER_BATTERY); mParent.getLoaderManager().destroyLoader( AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS); } private void onLoadFinished() { // Wait for both loaders to finish before proceeding. if (mBatteryHelper == null || mBatteryUsageStats == null) { if (mBatteryUsageStats == null) { return; } final PackageInfo packageInfo = mParent.getPackageInfo(); if (packageInfo != null) { mSipper = findTargetSipper(mBatteryHelper, packageInfo.applicationInfo.uid); mUidBatteryConsumer = findTargetUidBatteryConsumer(mBatteryUsageStats, packageInfo.applicationInfo.uid); if (mParent.getActivity() != null) { Loading @@ -172,19 +152,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController @VisibleForTesting boolean isBatteryStatsAvailable() { return mBatteryHelper != null && mSipper != null && mUidBatteryConsumer != null; } @VisibleForTesting BatterySipper findTargetSipper(BatteryStatsHelper batteryHelper, int uid) { final List<BatterySipper> usageList = batteryHelper.getUsageList(); for (int i = 0, size = usageList.size(); i < size; i++) { final BatterySipper sipper = usageList.get(i); if (sipper.getUid() == uid) { return sipper; } } return null; return mUidBatteryConsumer != null; } @VisibleForTesting Loading @@ -199,25 +167,6 @@ public class AppBatteryPreferenceController extends BasePreferenceController return null; } private class BatteryStatsHelperLoaderCallbacks implements LoaderManager.LoaderCallbacks<BatteryStatsHelper> { @Override public Loader<BatteryStatsHelper> onCreateLoader(int id, Bundle args) { return new BatteryStatsHelperLoader(mContext); } @Override public void onLoadFinished(Loader<BatteryStatsHelper> loader, BatteryStatsHelper batteryHelper) { mBatteryHelper = batteryHelper; AppBatteryPreferenceController.this.onLoadFinished(); } @Override public void onLoaderReset(Loader<BatteryStatsHelper> loader) { } } private class BatteryUsageStatsLoaderCallbacks implements LoaderManager.LoaderCallbacks<BatteryUsageStats> { @Override Loading
tests/robotests/src/com/android/settings/applications/appinfo/AppBatteryPreferenceControllerTest.java +14 −33 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.app.AppOpsManager; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.os.BatteryStats; import android.os.BatteryUsageStats; import android.os.Bundle; import android.os.UidBatteryConsumer; Loading @@ -39,15 +38,12 @@ import androidx.loader.app.LoaderManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; import com.android.settings.SettingsActivity; import com.android.settings.fuelgauge.BatteryUtils; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; Loading @@ -73,13 +69,7 @@ public class AppBatteryPreferenceControllerTest { @Mock private UidBatteryConsumer mUidBatteryConsumer; @Mock private BatterySipper mBatterySipper; @Mock private BatterySipper mOtherBatterySipper; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private BatteryStatsHelper mBatteryStatsHelper; @Mock private BatteryStats.Uid mUid; private UidBatteryConsumer mOtherUidBatteryConsumer; @Mock private PreferenceScreen mScreen; @Mock Loading @@ -102,10 +92,8 @@ public class AppBatteryPreferenceControllerTest { mBatteryPreference = spy(new Preference(RuntimeEnvironment.application)); mBatterySipper.drainType = BatterySipper.DrainType.IDLE; mBatterySipper.uidObj = mUid; doReturn(TARGET_UID).when(mBatterySipper).getUid(); doReturn(OTHER_UID).when(mOtherBatterySipper).getUid(); when(mUidBatteryConsumer.getUid()).thenReturn(TARGET_UID); when(mOtherUidBatteryConsumer.getUid()).thenReturn(OTHER_UID); mController = spy(new AppBatteryPreferenceController( RuntimeEnvironment.application, mFragment, "package1", null /* lifecycle */)); Loading @@ -125,14 +113,14 @@ public class AppBatteryPreferenceControllerTest { } @Test public void findTargetSipper_findCorrectSipper() { final List<BatterySipper> usageList = new ArrayList<>(); usageList.add(mBatterySipper); usageList.add(mOtherBatterySipper); when(mBatteryStatsHelper.getUsageList()).thenReturn(usageList); assertThat(mController.findTargetSipper(mBatteryStatsHelper, TARGET_UID)) .isEqualTo(mBatterySipper); public void findTargetBatteryConsumer_findCorrectBatteryConsumer() { final List<UidBatteryConsumer> uidBatteryConsumers = new ArrayList<>(); uidBatteryConsumers.add(mUidBatteryConsumer); uidBatteryConsumers.add(mOtherUidBatteryConsumer); when(mBatteryUsageStats.getUidBatteryConsumers()).thenReturn(uidBatteryConsumers); assertThat(mController.findTargetUidBatteryConsumer(mBatteryUsageStats, TARGET_UID)) .isEqualTo(mUidBatteryConsumer); } @Test Loading @@ -147,13 +135,10 @@ public class AppBatteryPreferenceControllerTest { @Test public void updateBattery_hasBatteryStats_summaryPercent() { mController.mBatteryHelper = mBatteryStatsHelper; mController.mSipper = mBatterySipper; mController.mBatteryUsageStats = mBatteryUsageStats; mController.mUidBatteryConsumer = mUidBatteryConsumer; doReturn(BATTERY_LEVEL).when(mBatteryUtils).calculateBatteryPercent(anyDouble(), anyDouble(), anyInt()); doReturn(new ArrayList<>()).when(mBatteryStatsHelper).getUsageList(); mController.displayPreference(mScreen); mController.updateBattery(); Loading @@ -163,8 +148,6 @@ public class AppBatteryPreferenceControllerTest { @Test public void isBatteryStatsAvailable_hasBatteryStatsHelperAndSipper_returnTrue() { mController.mBatteryHelper = mBatteryStatsHelper; mController.mSipper = mBatterySipper; mController.mBatteryUsageStats = mBatteryUsageStats; mController.mUidBatteryConsumer = mUidBatteryConsumer; Loading @@ -183,8 +166,6 @@ public class AppBatteryPreferenceControllerTest { when(mFragment.getActivity()).thenReturn(mActivity); final String key = mController.getPreferenceKey(); when(mBatteryPreference.getKey()).thenReturn(key); mController.mSipper = mBatterySipper; mController.mBatteryHelper = mBatteryStatsHelper; mController.mBatteryUsageStats = mBatteryUsageStats; mController.mUidBatteryConsumer = mUidBatteryConsumer; Loading @@ -199,8 +180,8 @@ public class AppBatteryPreferenceControllerTest { mController.onResume(); verify(mLoaderManager) .restartLoader(AppInfoDashboardFragment.LOADER_BATTERY, Bundle.EMPTY, mController.mBatteryStatsHelperLoaderCallbacks); .restartLoader(AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS, Bundle.EMPTY, mController.mBatteryUsageStatsLoaderCallbacks); } @Test Loading @@ -209,6 +190,6 @@ public class AppBatteryPreferenceControllerTest { mController.onPause(); verify(mLoaderManager).destroyLoader(AppInfoDashboardFragment.LOADER_BATTERY); verify(mLoaderManager).destroyLoader(AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS); } }