Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 296dce40 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Remove references to BatteryStatsHelper from AppBatteryPreferenceController

Bug: 173745486
Bug: 180630447
Test: make RunSettingsRoboTests
Test: male RunSettingsGoogleRoboTests
Change-Id: Ic836d9f5e791d1e3ddc2237ff108190e53dcac19
parent a565961b
Loading
Loading
Loading
Loading
+2 −53
Original line number Diff line number Diff line
@@ -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;
@@ -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
@@ -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);
@@ -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) {
@@ -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
@@ -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
+14 −33
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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
@@ -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 */));
@@ -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
@@ -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();
@@ -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;

@@ -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;

@@ -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
@@ -209,6 +190,6 @@ public class AppBatteryPreferenceControllerTest {

        mController.onPause();

        verify(mLoaderManager).destroyLoader(AppInfoDashboardFragment.LOADER_BATTERY);
        verify(mLoaderManager).destroyLoader(AppInfoDashboardFragment.LOADER_BATTERY_USAGE_STATS);
    }
}