From dbe17def48220cd360643c86d0f2b4a300c38b83 Mon Sep 17 00:00:00 2001 From: Stanislav Zholnin Date: Thu, 21 Nov 2019 17:37:23 +0000 Subject: [PATCH] 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 --- .../com/android/server/stats/StatsCompanionService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java index 8a00c8318d588..a6cc06fad7eb8 100644 --- a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java +++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java @@ -2076,6 +2076,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { private void pullDangerousPermissionState(long elapsedNanos, final long wallClockNanos, List pulledData) { long token = Binder.clearCallingIdentity(); + Set 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);