Merge "Support Private Space in battery usage." into main

This commit is contained in:
Treehugger Robot
2024-03-15 09:46:38 +00:00
committed by Android (Google) Code Review
9 changed files with 227 additions and 121 deletions

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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),