Loading src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java +10 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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( Loading @@ -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()); } } Loading tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java +31 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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; Loading @@ -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 Loading @@ -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(); Loading Loading
src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetector.java +10 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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( Loading @@ -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()); } } Loading
tests/robotests/src/com/android/settings/fuelgauge/batterytip/detectors/HighUsageDetectorTest.java +31 −9 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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; Loading @@ -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 Loading @@ -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(); Loading