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

Commit b72d0ee6 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Android (Google) Code Review
Browse files

Merge "Remove references to BatteryStatsHelper from AppBatteryPreferenceController" into sc-dev

parents 735281a7 296dce40
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);
    }
}