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:
Stanislav Zholnin
2019-11-21 17:37:23 +00:00
parent 4132a00ab2
commit dbe17def48

View File

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