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

Commit c6882cf4 authored by Lei Yu's avatar Lei Yu Committed by android-build-merger
Browse files

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

am: 6f61ae0a

Change-Id: Id6f1b5c59da148b5b78a277af4eed88e5e8de74a
parents 6f42f7be 6f61ae0a
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();