Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dbe17def authored by Stanislav Zholnin's avatar Stanislav Zholnin
Browse files

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
parent 4132a00a
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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);