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

Commit 6f61ae0a authored by Lei Yu's avatar Lei Yu Committed by Android (Google) Code Review
Browse files

Merge "In High usage, hide apps without screen time." into pi-dev

parents a112226d 7b9682ce
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.fuelgauge.batterytip.detectors;
import android.content.Context;
import android.os.BatteryStats;
import android.support.annotation.VisibleForTesting;
import android.text.format.DateUtils;

import com.android.internal.os.BatterySipper;
import com.android.internal.os.BatteryStatsHelper;
@@ -72,6 +73,7 @@ public class HighUsageDetector implements BatteryTipDetector {
                        final long foregroundTimeMs = mBatteryUtils.getProcessTimeMs(
                                BatteryUtils.StatusType.FOREGROUND, batterySipper.uidObj,
                                BatteryStats.STATS_SINCE_CHARGED);
                        if (foregroundTimeMs >= DateUtils.MINUTE_IN_MILLIS) {
                            mHighUsageAppList.add(new AppInfo.Builder()
                                    .setUid(batterySipper.getUid())
                                    .setPackageName(
@@ -80,10 +82,11 @@ public class HighUsageDetector implements BatteryTipDetector {
                                    .build());
                        }
                    }
                }

                Collections.sort(mHighUsageAppList, Collections.reverseOrder());
                mHighUsageAppList = mHighUsageAppList.subList(0,
                        Math.min(mPolicy.highUsageAppCount, mHighUsageAppList.size()));
                Collections.sort(mHighUsageAppList, Collections.reverseOrder());
            }
        }

+31 −9
Original line number Diff line number Diff line
@@ -17,8 +17,10 @@
package com.android.settings.fuelgauge.batterytip.detectors;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

@@ -48,7 +50,8 @@ import java.util.List;

@RunWith(SettingsRobolectricTestRunner.class)
public class HighUsageDetectorTest {
    private static final int UID = 123;
    private static final int UID_HIGH = 123;
    private static final int UID_ZERO = 345;
    private static final long SCREEN_ON_TIME_MS = DateUtils.HOUR_IN_MILLIS;
    private Context mContext;
    @Mock
@@ -56,7 +59,9 @@ public class HighUsageDetectorTest {
    @Mock
    private BatteryUtils mBatteryUtils;
    @Mock
    private BatterySipper mBatterySipper;
    private BatterySipper mHighBatterySipper;
    @Mock
    private BatterySipper mZeroBatterySipper;
    @Mock
    private HighUsageDataParser mDataParser;

@@ -75,14 +80,25 @@ public class HighUsageDetectorTest {
        mHighUsageDetector.mBatteryUtils = mBatteryUtils;
        mHighUsageDetector.mDataParser = mDataParser;
        doNothing().when(mHighUsageDetector).parseBatteryData();
        doReturn(UID).when(mBatterySipper).getUid();
        doReturn(UID_HIGH).when(mHighBatterySipper).getUid();
        mHighBatterySipper.uidObj = mock(BatteryStats.Uid.class);
        mZeroBatterySipper.uidObj = mock(BatteryStats.Uid.class);
        doReturn(UID_ZERO).when(mZeroBatterySipper).getUid();
        mAppInfo = new AppInfo.Builder()
                .setUid(UID)
                .setUid(UID_HIGH)
                .setScreenOnTimeMs(SCREEN_ON_TIME_MS)
                .build();

        doReturn(SCREEN_ON_TIME_MS).when(mBatteryUtils).getProcessTimeMs(
                BatteryUtils.StatusType.FOREGROUND, mHighBatterySipper.uidObj,
                BatteryStats.STATS_SINCE_CHARGED);
        doReturn(0L).when(mBatteryUtils).getProcessTimeMs(
                BatteryUtils.StatusType.FOREGROUND, mZeroBatterySipper.uidObj,
                BatteryStats.STATS_SINCE_CHARGED);

        mUsageList = new ArrayList<>();
        mUsageList.add(mBatterySipper);
        mUsageList.add(mHighBatterySipper);
        when(mBatteryStatsHelper.getUsageList()).thenReturn(mUsageList);
    }

    @Test
@@ -95,10 +111,16 @@ public class HighUsageDetectorTest {
    @Test
    public void testDetect_containsHighUsageApp_tipVisible() {
        doReturn(true).when(mDataParser).isDeviceHeavilyUsed();
        when(mBatteryStatsHelper.getUsageList()).thenReturn(mUsageList);
        doReturn(SCREEN_ON_TIME_MS).when(mBatteryUtils).getProcessTimeMs(
                BatteryUtils.StatusType.FOREGROUND, mBatterySipper.uidObj,
                BatteryStats.STATS_SINCE_CHARGED);

        final HighUsageTip highUsageTip = (HighUsageTip) mHighUsageDetector.detect();
        assertThat(highUsageTip.isVisible()).isTrue();
        assertThat(highUsageTip.getHighUsageAppList()).containsExactly(mAppInfo);
    }

    @Test
    public void testDetect_containsHighUsageApp_removeZeroOne() {
        doReturn(true).when(mDataParser).isDeviceHeavilyUsed();
        mUsageList.add(mZeroBatterySipper);

        final HighUsageTip highUsageTip = (HighUsageTip) mHighUsageDetector.detect();
        assertThat(highUsageTip.isVisible()).isTrue();