Optimize reporting for DangerousPermissionState atom
Remove package name from DangrousPermissionState puller. Ensure that every uid is reported only once, as permission state depends on uid only and not package name. Test: make statsd_testdrive && ./out/host/linux-x86/bin/statsd_testdrive 10050 Change-Id: I3338cc4a3b63173761fbeb67db00458ed4f0e77a
This commit is contained in:
@@ -2076,6 +2076,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
|
||||
private void pullDangerousPermissionState(long elapsedNanos, final long wallClockNanos,
|
||||
List<StatsLogEventWrapper> pulledData) {
|
||||
long token = Binder.clearCallingIdentity();
|
||||
Set<Integer> reportedUids = new HashSet<>();
|
||||
try {
|
||||
PackageManager pm = mContext.getPackageManager();
|
||||
|
||||
@@ -2096,6 +2097,12 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (reportedUids.contains(pkg.applicationInfo.uid)) {
|
||||
// do not report same uid twice
|
||||
continue;
|
||||
}
|
||||
reportedUids.add(pkg.applicationInfo.uid);
|
||||
|
||||
int numPerms = pkg.requestedPermissions.length;
|
||||
for (int permNum = 0; permNum < numPerms; permNum++) {
|
||||
String permName = pkg.requestedPermissions[permNum];
|
||||
@@ -2120,7 +2127,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
|
||||
|
||||
e.writeString(permName);
|
||||
e.writeInt(pkg.applicationInfo.uid);
|
||||
e.writeString(pkg.packageName);
|
||||
e.writeString(null);
|
||||
e.writeBoolean((pkg.requestedPermissionsFlags[permNum]
|
||||
& REQUESTED_PERMISSION_GRANTED) != 0);
|
||||
e.writeInt(permissionFlags);
|
||||
|
||||
Reference in New Issue
Block a user