Use taskRootPackageName instead of packageName to load uid when usage
resource is USAGE_SOURCE_TASK_ROOT_ACTIVITY and taskRootPackageName is not empty. This logic is consistent with digital wellbeing: assign the screen-on time onto task root activity when usage resource is USAGE_SOURCE_TASK_ROOT_ACTIVITY. Bug: 260964679 Test: make RunSettingsRoboTests + manual Change-Id: I4c7ed342d8c00951879f5826bf79575f330ce86e
This commit is contained in:
@@ -15,6 +15,9 @@
|
||||
*/
|
||||
package com.android.settings.fuelgauge.batteryusage;
|
||||
|
||||
import static android.app.usage.UsageStatsManager.USAGE_SOURCE_CURRENT_ACTIVITY;
|
||||
import static android.app.usage.UsageStatsManager.USAGE_SOURCE_TASK_ROOT_ACTIVITY;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
@@ -22,6 +25,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.usage.IUsageStatsManager;
|
||||
import android.app.usage.UsageEvents;
|
||||
import android.app.usage.UsageEvents.Event;
|
||||
import android.content.ContentValues;
|
||||
@@ -31,6 +35,7 @@ import android.database.MatrixCursor;
|
||||
import android.os.BatteryManager;
|
||||
import android.os.BatteryUsageStats;
|
||||
import android.os.LocaleList;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
|
||||
import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventEntity;
|
||||
@@ -56,6 +61,8 @@ public final class ConvertUtilsTest {
|
||||
@Mock
|
||||
private BatteryUsageStats mBatteryUsageStats;
|
||||
@Mock
|
||||
private IUsageStatsManager mUsageStatsManager;
|
||||
@Mock
|
||||
private BatteryEntry mMockBatteryEntry;
|
||||
|
||||
@Before
|
||||
@@ -278,7 +285,7 @@ public final class ConvertUtilsTest {
|
||||
|
||||
final long userId = 2;
|
||||
final AppUsageEvent appUsageEvent = ConvertUtils.convertToAppUsageEvent(
|
||||
mContext, event, userId);
|
||||
mContext, mUsageStatsManager, event, userId);
|
||||
assertThat(appUsageEvent.getTimestamp()).isEqualTo(101L);
|
||||
assertThat(appUsageEvent.getType()).isEqualTo(AppUsageEventType.ACTIVITY_RESUMED);
|
||||
assertThat(appUsageEvent.getPackageName()).isEqualTo("com.android.settings1");
|
||||
@@ -299,7 +306,7 @@ public final class ConvertUtilsTest {
|
||||
|
||||
final long userId = 1;
|
||||
final AppUsageEvent appUsageEvent = ConvertUtils.convertToAppUsageEvent(
|
||||
mContext, event, userId);
|
||||
mContext, mUsageStatsManager, event, userId);
|
||||
assertThat(appUsageEvent.getTimestamp()).isEqualTo(101L);
|
||||
assertThat(appUsageEvent.getType()).isEqualTo(AppUsageEventType.DEVICE_SHUTDOWN);
|
||||
assertThat(appUsageEvent.getPackageName()).isEqualTo("com.android.settings1");
|
||||
@@ -315,7 +322,7 @@ public final class ConvertUtilsTest {
|
||||
event.mPackage = null;
|
||||
|
||||
final AppUsageEvent appUsageEvent = ConvertUtils.convertToAppUsageEvent(
|
||||
mContext, event, /*userId=*/ 0);
|
||||
mContext, mUsageStatsManager, event, /*userId=*/ 0);
|
||||
|
||||
assertThat(appUsageEvent).isNull();
|
||||
}
|
||||
@@ -331,7 +338,7 @@ public final class ConvertUtilsTest {
|
||||
|
||||
final long userId = 1;
|
||||
final AppUsageEvent appUsageEvent = ConvertUtils.convertToAppUsageEvent(
|
||||
mContext, event, userId);
|
||||
mContext, mUsageStatsManager, event, userId);
|
||||
|
||||
assertThat(appUsageEvent).isNull();
|
||||
}
|
||||
@@ -415,4 +422,53 @@ public final class ConvertUtilsTest {
|
||||
mContext.getResources().getConfiguration().setLocales(new LocaleList());
|
||||
assertThat(ConvertUtils.getLocale(mContext)).isEqualTo(Locale.getDefault());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEffectivePackageName_currentActivity_returnPackageName() throws RemoteException {
|
||||
when(mUsageStatsManager.getUsageSource()).thenReturn(USAGE_SOURCE_CURRENT_ACTIVITY);
|
||||
final String packageName = "com.android.settings1";
|
||||
final String taskRootPackageName = "com.android.settings2";
|
||||
|
||||
assertThat(ConvertUtils.getEffectivePackageName(
|
||||
mUsageStatsManager, packageName, taskRootPackageName))
|
||||
.isEqualTo(packageName);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEffectivePackageName_usageSourceThrowException_returnPackageName()
|
||||
throws RemoteException {
|
||||
when(mUsageStatsManager.getUsageSource()).thenThrow(new RemoteException());
|
||||
final String packageName = "com.android.settings1";
|
||||
final String taskRootPackageName = "com.android.settings2";
|
||||
|
||||
assertThat(ConvertUtils.getEffectivePackageName(
|
||||
mUsageStatsManager, packageName, taskRootPackageName))
|
||||
.isEqualTo(packageName);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEffectivePackageName_rootActivity_returnTaskRootPackageName()
|
||||
throws RemoteException {
|
||||
when(mUsageStatsManager.getUsageSource()).thenReturn(USAGE_SOURCE_TASK_ROOT_ACTIVITY);
|
||||
final String packageName = "com.android.settings1";
|
||||
final String taskRootPackageName = "com.android.settings2";
|
||||
|
||||
assertThat(ConvertUtils.getEffectivePackageName(
|
||||
mUsageStatsManager, packageName, taskRootPackageName))
|
||||
.isEqualTo(taskRootPackageName);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEffectivePackageName_nullOrEmptyTaskRoot_returnPackageName()
|
||||
throws RemoteException {
|
||||
when(mUsageStatsManager.getUsageSource()).thenReturn(USAGE_SOURCE_TASK_ROOT_ACTIVITY);
|
||||
final String packageName = "com.android.settings1";
|
||||
|
||||
assertThat(ConvertUtils.getEffectivePackageName(
|
||||
mUsageStatsManager, packageName, /*taskRootPackageName=*/ null))
|
||||
.isEqualTo(packageName);
|
||||
assertThat(ConvertUtils.getEffectivePackageName(
|
||||
mUsageStatsManager, packageName, /*taskRootPackageName=*/ ""))
|
||||
.isEqualTo(packageName);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user