Hide app if it shares uid with whitelisted app

Statsd blame app based on uid, which may mapping to multiple packages.
If there is one app in whitelist, then we shouldn't blame other apps
in anomaly detection.

Change-Id: Ib546e207eb113cef9ef5fecb1138e61558e9cf55
Fixes: 77560853
Test: RunSettingsRoboTests
This commit is contained in:
Lei Yu
2018-04-05 13:38:58 -07:00
parent cf60ff7e08
commit f82d22afbb
2 changed files with 7 additions and 5 deletions

View File

@@ -30,6 +30,7 @@ import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Process;
import android.os.StatsDimensionsValue;
@@ -131,6 +132,7 @@ public class AnomalyDetectionJobService extends JobService {
StatsManager.EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES);
final AnomalyInfo anomalyInfo = new AnomalyInfo(
!ArrayUtils.isEmpty(cookies) ? cookies.get(0) : "");
final PackageManager packageManager = context.getPackageManager();
Log.i(TAG, "Extra stats value: " + intentDimsValue.toString());
try {
@@ -141,8 +143,8 @@ public class AnomalyDetectionJobService extends JobService {
: Settings.Global.getInt(contentResolver,
Settings.Global.APP_AUTO_RESTRICTION_ENABLED, ON) == ON;
final String packageName = batteryUtils.getPackageName(uid);
if (!powerWhitelistBackend.isSysWhitelistedExceptIdle(packageName)
&& !isSystemUid(uid)) {
if (!isSystemUid(uid) && !powerWhitelistBackend.isSysWhitelistedExceptIdle(
packageManager.getPackagesForUid(uid))) {
boolean anomalyDetected = true;
if (anomalyInfo.anomalyType == StatsManagerConfig.AnomalyType.EXCESSIVE_BG) {
if (!batteryUtils.isPreOApp(packageName)

View File

@@ -64,7 +64,7 @@ import java.util.concurrent.TimeUnit;
@RunWith(SettingsRobolectricTestRunner.class)
public class AnomalyDetectionJobServiceTest {
private static final int UID = 123;
private static final int UID = 12345;
private static final String SYSTEM_PACKAGE = "com.android.system";
private static final String SUBSCRIBER_COOKIES_AUTO_RESTRICTION =
"anomaly_type=6,auto_restriction=true";
@@ -120,8 +120,8 @@ public class AnomalyDetectionJobServiceTest {
@Test
public void testSaveAnomalyToDatabase_systemWhitelisted_doNotSave() {
doReturn(SYSTEM_PACKAGE).when(mBatteryUtils).getPackageName(anyInt());
doReturn(true).when(mPowerWhitelistBackend).isSysWhitelisted(SYSTEM_PACKAGE);
doReturn(UID).when(mAnomalyDetectionJobService).extractUidFromStatsDimensionsValue(any());
doReturn(true).when(mPowerWhitelistBackend).isSysWhitelistedExceptIdle(any(String[].class));
mAnomalyDetectionJobService.saveAnomalyToDatabase(mContext, mBatteryStatsHelper,
mUserManager, mBatteryDatabaseManager, mBatteryUtils, mPolicy,