Support Private Space in battery usage.
- Use database cache for single-user single-profile - Reload battery usage info in other cases Bug: 299032923 Test: manual Change-Id: I5e524a094422639eedbf6e07eda498f3f72fccae
This commit is contained in:
@@ -52,6 +52,7 @@ import java.util.List;
|
||||
public final class BatteryUsageDataLoaderTest {
|
||||
|
||||
private Context mContext;
|
||||
@Mock private UserIdsSeries mUserIdsSeries;
|
||||
@Mock private ContentResolver mMockContentResolver;
|
||||
@Mock private BatteryStatsManager mBatteryStatsManager;
|
||||
@Mock private PackageManager mPackageManager;
|
||||
@@ -120,7 +121,7 @@ public final class BatteryUsageDataLoaderTest {
|
||||
BatteryUsageDataLoader.sFakeAppUsageEventsSupplier = () -> new HashMap<>();
|
||||
BatteryUsageDataLoader.sFakeUsageEventsListSupplier = () -> AppUsageEventList;
|
||||
|
||||
BatteryUsageDataLoader.loadAppUsageData(mContext);
|
||||
BatteryUsageDataLoader.loadAppUsageData(mContext, mUserIdsSeries);
|
||||
|
||||
verify(mMockContentResolver).bulkInsert(any(), any());
|
||||
verify(mMockContentResolver).notifyChange(any(), any());
|
||||
@@ -130,7 +131,7 @@ public final class BatteryUsageDataLoaderTest {
|
||||
public void loadAppUsageData_nullAppUsageEvents_notInsertDataIntoProvider() {
|
||||
BatteryUsageDataLoader.sFakeAppUsageEventsSupplier = () -> null;
|
||||
|
||||
BatteryUsageDataLoader.loadAppUsageData(mContext);
|
||||
BatteryUsageDataLoader.loadAppUsageData(mContext, mUserIdsSeries);
|
||||
|
||||
verifyNoMoreInteractions(mMockContentResolver);
|
||||
}
|
||||
@@ -140,7 +141,7 @@ public final class BatteryUsageDataLoaderTest {
|
||||
BatteryUsageDataLoader.sFakeAppUsageEventsSupplier = () -> new HashMap<>();
|
||||
BatteryUsageDataLoader.sFakeUsageEventsListSupplier = () -> null;
|
||||
|
||||
BatteryUsageDataLoader.loadAppUsageData(mContext);
|
||||
BatteryUsageDataLoader.loadAppUsageData(mContext, mUserIdsSeries);
|
||||
|
||||
verifyNoMoreInteractions(mMockContentResolver);
|
||||
}
|
||||
@@ -150,7 +151,7 @@ public final class BatteryUsageDataLoaderTest {
|
||||
BatteryUsageDataLoader.sFakeAppUsageEventsSupplier = () -> new HashMap<>();
|
||||
BatteryUsageDataLoader.sFakeUsageEventsListSupplier = () -> new ArrayList<>();
|
||||
|
||||
BatteryUsageDataLoader.loadAppUsageData(mContext);
|
||||
BatteryUsageDataLoader.loadAppUsageData(mContext, mUserIdsSeries);
|
||||
|
||||
verifyNoMoreInteractions(mMockContentResolver);
|
||||
}
|
||||
|
@@ -70,6 +70,7 @@ public final class DataProcessManagerTest {
|
||||
private Context mContext;
|
||||
private DataProcessManager mDataProcessManager;
|
||||
|
||||
@Mock private UserIdsSeries mUserIdsSeries;
|
||||
@Mock private IUsageStatsManager mUsageStatsManager;
|
||||
@Mock private UserManager mUserManager;
|
||||
@Mock private BatteryStatsManager mBatteryStatsManager;
|
||||
@@ -95,11 +96,13 @@ public final class DataProcessManagerTest {
|
||||
doReturn(mIntent).when(mContext).registerReceiver(any(), any());
|
||||
doReturn(100).when(mIntent).getIntExtra(eq(BatteryManager.EXTRA_SCALE), anyInt());
|
||||
doReturn(66).when(mIntent).getIntExtra(eq(BatteryManager.EXTRA_LEVEL), anyInt());
|
||||
doReturn(true).when(mUserIdsSeries).isMainUserProfileOnly();
|
||||
|
||||
mDataProcessManager =
|
||||
new DataProcessManager(
|
||||
mContext,
|
||||
/* handler= */ null,
|
||||
mUserIdsSeries,
|
||||
/* rawStartTimestamp= */ 0L,
|
||||
/* lastFullChargeTimestamp= */ 0L,
|
||||
/* callbackFunction= */ null,
|
||||
@@ -117,7 +120,11 @@ public final class DataProcessManagerTest {
|
||||
@LooperMode(LooperMode.Mode.LEGACY)
|
||||
public void constructor_noLevelData() {
|
||||
final DataProcessManager dataProcessManager =
|
||||
new DataProcessManager(mContext, /* handler= */ null, /* callbackFunction= */ null);
|
||||
new DataProcessManager(
|
||||
mContext,
|
||||
/* handler= */ null,
|
||||
mUserIdsSeries,
|
||||
/* callbackFunction= */ null);
|
||||
assertThat(dataProcessManager.getShowScreenOnTime()).isFalse();
|
||||
}
|
||||
|
||||
@@ -180,6 +187,7 @@ public final class DataProcessManagerTest {
|
||||
doReturn(1).when(mContext).getUserId();
|
||||
// No work profile.
|
||||
doReturn(new ArrayList<>()).when(mUserManager).getUserProfiles();
|
||||
doReturn(new ArrayList<>(List.of(1))).when(mUserIdsSeries).getVisibleUserIds();
|
||||
|
||||
// Fake database usage data.
|
||||
final MatrixCursor cursor =
|
||||
@@ -239,6 +247,7 @@ public final class DataProcessManagerTest {
|
||||
new DataProcessManager(
|
||||
mContext,
|
||||
/* handler= */ null,
|
||||
mUserIdsSeries,
|
||||
/* rawStartTimestamp= */ 2L,
|
||||
/* lastFullChargeTimestamp= */ 1L,
|
||||
/* callbackFunction= */ null,
|
||||
@@ -301,7 +310,7 @@ public final class DataProcessManagerTest {
|
||||
doReturn(getUsageEvents(events))
|
||||
.when(mUsageStatsManager)
|
||||
.queryEventsForUser(anyLong(), anyLong(), anyInt(), any());
|
||||
doReturn(false).when(mUserManager).isUserUnlocked(anyInt());
|
||||
doReturn(true).when(mUserIdsSeries).isCurrentUserLocked();
|
||||
final MatrixCursor cursor =
|
||||
new MatrixCursor(
|
||||
new String[] {
|
||||
@@ -327,6 +336,7 @@ public final class DataProcessManagerTest {
|
||||
DataProcessManager.getBatteryLevelData(
|
||||
mContext,
|
||||
/* handler= */ null,
|
||||
mUserIdsSeries,
|
||||
/* isFromPeriodJob= */ false,
|
||||
/* asyncResponseDelegate= */ null))
|
||||
.isNull();
|
||||
@@ -334,6 +344,7 @@ public final class DataProcessManagerTest {
|
||||
DataProcessManager.getBatteryLevelData(
|
||||
mContext,
|
||||
/* handler= */ null,
|
||||
mUserIdsSeries,
|
||||
/* isFromPeriodJob= */ true,
|
||||
/* asyncResponseDelegate= */ null))
|
||||
.isNull();
|
||||
@@ -355,6 +366,7 @@ public final class DataProcessManagerTest {
|
||||
DataProcessManager.getBatteryLevelData(
|
||||
mContext,
|
||||
/* handler= */ null,
|
||||
mUserIdsSeries,
|
||||
/* isFromPeriodJob= */ false,
|
||||
/* asyncResponseDelegate= */ null);
|
||||
|
||||
@@ -383,6 +395,7 @@ public final class DataProcessManagerTest {
|
||||
DataProcessManager.getBatteryLevelData(
|
||||
mContext,
|
||||
/* handler= */ null,
|
||||
mUserIdsSeries,
|
||||
/* isFromPeriodJob= */ false,
|
||||
/* asyncResponseDelegate= */ null);
|
||||
|
||||
|
@@ -80,6 +80,7 @@ public final class DataProcessorTest {
|
||||
@Mock private Intent mIntent;
|
||||
@Mock private BatteryUsageStats mBatteryUsageStats;
|
||||
@Mock private UserManager mUserManager;
|
||||
@Mock private UserIdsSeries mUserIdsSeries;
|
||||
@Mock private IUsageStatsManager mUsageStatsManager;
|
||||
@Mock private BatteryEntry mMockBatteryEntry1;
|
||||
@Mock private BatteryEntry mMockBatteryEntry2;
|
||||
@@ -95,6 +96,7 @@ public final class DataProcessorTest {
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||
mPowerUsageFeatureProvider = mFeatureFactory.powerUsageFeatureProvider;
|
||||
doReturn(true).when(mUserIdsSeries).isMainUserProfileOnly();
|
||||
|
||||
DataProcessor.sTestSystemAppsPackageNames = Set.of();
|
||||
DataProcessor.sUsageStatsManager = mUsageStatsManager;
|
||||
@@ -118,8 +120,10 @@ public final class DataProcessorTest {
|
||||
doReturn(mUsageEvents1)
|
||||
.when(mUsageStatsManager)
|
||||
.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString());
|
||||
doReturn(new ArrayList<>(List.of(0))).when(mUserIdsSeries).getVisibleUserIds();
|
||||
|
||||
final Map<Long, UsageEvents> resultMap = DataProcessor.getAppUsageEvents(mContext);
|
||||
final Map<Long, UsageEvents> resultMap =
|
||||
DataProcessor.getAppUsageEvents(mContext, mUserIdsSeries);
|
||||
|
||||
assertThat(resultMap).hasSize(1);
|
||||
assertThat(resultMap.get(Long.valueOf(userInfo.id))).isEqualTo(mUsageEvents1);
|
||||
@@ -134,7 +138,8 @@ public final class DataProcessorTest {
|
||||
// Test locked user.
|
||||
doReturn(false).when(mUserManager).isUserUnlocked(userInfo.id);
|
||||
|
||||
final Map<Long, UsageEvents> resultMap = DataProcessor.getAppUsageEvents(mContext);
|
||||
final Map<Long, UsageEvents> resultMap =
|
||||
DataProcessor.getAppUsageEvents(mContext, mUserIdsSeries);
|
||||
|
||||
assertThat(resultMap).isNull();
|
||||
}
|
||||
@@ -150,7 +155,8 @@ public final class DataProcessorTest {
|
||||
.when(mUsageStatsManager)
|
||||
.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString());
|
||||
|
||||
final Map<Long, UsageEvents> resultMap = DataProcessor.getAppUsageEvents(mContext);
|
||||
final Map<Long, UsageEvents> resultMap =
|
||||
DataProcessor.getAppUsageEvents(mContext, mUserIdsSeries);
|
||||
|
||||
assertThat(resultMap).isNull();
|
||||
}
|
||||
@@ -163,7 +169,8 @@ public final class DataProcessorTest {
|
||||
.when(mUsageStatsManager)
|
||||
.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString());
|
||||
|
||||
assertThat(DataProcessor.getAppUsageEventsForUser(mContext, userId, 0))
|
||||
assertThat(DataProcessor.getCurrentAppUsageEventsForUser(
|
||||
mContext, mUserIdsSeries, userId, 0))
|
||||
.isEqualTo(mUsageEvents1);
|
||||
}
|
||||
|
||||
@@ -173,7 +180,9 @@ public final class DataProcessorTest {
|
||||
// Test locked user.
|
||||
doReturn(false).when(mUserManager).isUserUnlocked(userId);
|
||||
|
||||
assertThat(DataProcessor.getAppUsageEventsForUser(mContext, userId, 0)).isNull();
|
||||
assertThat(DataProcessor.getCurrentAppUsageEventsForUser(
|
||||
mContext, mUserIdsSeries, userId, 0))
|
||||
.isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -184,7 +193,9 @@ public final class DataProcessorTest {
|
||||
.when(mUsageStatsManager)
|
||||
.queryEventsForUser(anyLong(), anyLong(), anyInt(), anyString());
|
||||
|
||||
assertThat(DataProcessor.getAppUsageEventsForUser(mContext, userId, 0)).isNull();
|
||||
assertThat(DataProcessor.getCurrentAppUsageEventsForUser(
|
||||
mContext, mUserIdsSeries, userId, 0))
|
||||
.isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -852,6 +863,7 @@ public final class DataProcessorTest {
|
||||
assertThat(
|
||||
DataProcessor.getBatteryDiffDataMap(
|
||||
mContext,
|
||||
mUserIdsSeries,
|
||||
hourlyBatteryLevelsPerDay,
|
||||
new HashMap<>(),
|
||||
/* appUsagePeriodMap= */ null,
|
||||
@@ -938,6 +950,7 @@ public final class DataProcessorTest {
|
||||
Map<Long, BatteryDiffData> batteryDiffDataMap =
|
||||
DataProcessor.getBatteryDiffDataMap(
|
||||
mContext,
|
||||
mUserIdsSeries,
|
||||
batteryLevelData.getHourlyBatteryLevelsPerDay(),
|
||||
batteryHistoryMap,
|
||||
appUsagePeriodMap,
|
||||
@@ -1154,6 +1167,7 @@ public final class DataProcessorTest {
|
||||
mContext,
|
||||
DataProcessor.getBatteryDiffDataMap(
|
||||
mContext,
|
||||
mUserIdsSeries,
|
||||
batteryLevelData.getHourlyBatteryLevelsPerDay(),
|
||||
batteryHistoryMap,
|
||||
appUsagePeriodMap,
|
||||
@@ -1271,6 +1285,10 @@ public final class DataProcessorTest {
|
||||
};
|
||||
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = new HashMap<>();
|
||||
final int currentUserId = mContext.getUserId();
|
||||
doReturn(false).when(mUserIdsSeries).isFromOtherUsers(currentUserId);
|
||||
doReturn(true).when(mUserIdsSeries).isFromOtherUsers(currentUserId + 1);
|
||||
doReturn(true).when(mUserIdsSeries).isFromOtherUsers(currentUserId + 2);
|
||||
|
||||
// Adds the index = 0 data.
|
||||
Map<String, BatteryHistEntry> entryMap = new HashMap<>();
|
||||
BatteryHistEntry entry =
|
||||
@@ -1431,6 +1449,7 @@ public final class DataProcessorTest {
|
||||
mContext,
|
||||
DataProcessor.getBatteryDiffDataMap(
|
||||
mContext,
|
||||
mUserIdsSeries,
|
||||
batteryLevelData.getHourlyBatteryLevelsPerDay(),
|
||||
batteryHistoryMap,
|
||||
/* appUsagePeriodMap= */ null,
|
||||
@@ -1546,6 +1565,7 @@ public final class DataProcessorTest {
|
||||
mContext,
|
||||
DataProcessor.getBatteryDiffDataMap(
|
||||
mContext,
|
||||
mUserIdsSeries,
|
||||
batteryLevelData.getHourlyBatteryLevelsPerDay(),
|
||||
batteryHistoryMap,
|
||||
appUsagePeriodMap,
|
||||
@@ -1701,6 +1721,7 @@ public final class DataProcessorTest {
|
||||
mContext,
|
||||
DataProcessor.getBatteryDiffDataMap(
|
||||
mContext,
|
||||
mUserIdsSeries,
|
||||
batteryLevelData.getHourlyBatteryLevelsPerDay(),
|
||||
batteryHistoryMap,
|
||||
/* appUsagePeriodMap= */ null,
|
||||
@@ -1851,6 +1872,7 @@ public final class DataProcessorTest {
|
||||
mContext,
|
||||
DataProcessor.getBatteryDiffDataMap(
|
||||
mContext,
|
||||
mUserIdsSeries,
|
||||
batteryLevelData.getHourlyBatteryLevelsPerDay(),
|
||||
batteryHistoryMap,
|
||||
/* appUsagePeriodMap= */ null,
|
||||
@@ -1873,6 +1895,7 @@ public final class DataProcessorTest {
|
||||
final BatteryDiffData batteryDiffData =
|
||||
DataProcessor.generateBatteryDiffData(
|
||||
mContext,
|
||||
mUserIdsSeries,
|
||||
System.currentTimeMillis(),
|
||||
DataProcessor.convertToBatteryHistEntry(null, mBatteryUsageStats),
|
||||
/* systemAppsPackageNames= */ Set.of(),
|
||||
@@ -1933,6 +1956,7 @@ public final class DataProcessorTest {
|
||||
final BatteryDiffData batteryDiffData =
|
||||
DataProcessor.generateBatteryDiffData(
|
||||
mContext,
|
||||
mUserIdsSeries,
|
||||
System.currentTimeMillis(),
|
||||
DataProcessor.convertToBatteryHistEntry(
|
||||
batteryEntryList, mBatteryUsageStats),
|
||||
|
Reference in New Issue
Block a user