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

Commit be4d1f47 authored by Stanislav Zholnin's avatar Stanislav Zholnin Committed by Android (Google) Code Review
Browse files

Merge "Add DangerousPermissionStateSampled atom and puller."

parents 7603db47 ccb82e44
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -172,6 +172,7 @@ import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

@@ -2136,8 +2137,8 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
        pulledData.add(e);
    }

    private void pullDangerousPermissionState(long elapsedNanos, final long wallClockNanos,
            List<StatsLogEventWrapper> pulledData) {
    private void pullDangerousPermissionState(int atomId, long elapsedNanos,
            final long wallClockNanos, List<StatsLogEventWrapper> pulledData) {
        long token = Binder.clearCallingIdentity();
        Set<Integer> reportedUids = new HashSet<>();
        try {
@@ -2166,6 +2167,11 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
                    }
                    reportedUids.add(pkg.applicationInfo.uid);

                    if (atomId == StatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED
                            && ThreadLocalRandom.current().nextFloat() > 0.2f) {
                        continue;
                    }

                    int numPerms = pkg.requestedPermissions.length;
                    for (int permNum  = 0; permNum < numPerms; permNum++) {
                        String permName = pkg.requestedPermissions[permNum];
@@ -2186,11 +2192,13 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
                        }

                        StatsLogEventWrapper e = new StatsLogEventWrapper(
                                StatsLog.DANGEROUS_PERMISSION_STATE, elapsedNanos, wallClockNanos);
                                atomId, elapsedNanos, wallClockNanos);

                        e.writeString(permName);
                        e.writeInt(pkg.applicationInfo.uid);
                        if (atomId == StatsLog.DANGEROUS_PERMISSION_STATE) {
                            e.writeString(null);
                        }
                        e.writeBoolean((pkg.requestedPermissionsFlags[permNum]
                                & REQUESTED_PERMISSION_GRANTED) != 0);
                        e.writeInt(permissionFlags);
@@ -2640,7 +2648,13 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
                break;
            }
            case StatsLog.DANGEROUS_PERMISSION_STATE: {
                pullDangerousPermissionState(elapsedNanos, wallClockNanos, ret);
                pullDangerousPermissionState(StatsLog.DANGEROUS_PERMISSION_STATE, elapsedNanos,
                        wallClockNanos, ret);
                break;
            }
            case StatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED: {
                pullDangerousPermissionState(StatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED,
                        elapsedNanos, wallClockNanos, ret);
                break;
            }
            case StatsLog.TIME_ZONE_DATA_INFO: {
+23 −2
Original line number Diff line number Diff line
@@ -356,7 +356,7 @@ message Atom {
    }

    // Pulled events will start at field 10000.
    // Next: 10067
    // Next: 10068
    oneof pulled {
        WifiBytesTransfer wifi_bytes_transfer = 10000;
        WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001;
@@ -424,6 +424,7 @@ message Atom {
        ProcessMemorySnapshot process_memory_snapshot = 10064;
        VmsClientStats vms_client_stats = 10065;
        NotificationRemoteViews notification_remote_views = 10066;
        DangerousPermissionStateSampled dangerous_permission_state_sampled = 10067;
    }

    // DO NOT USE field numbers above 100,000 in AOSP.
@@ -6490,6 +6491,7 @@ message MediametricsDrmManagerReported {

/**
 * State of a dangerous permission requested by a package
 * Pulled from: StatsCompanionService
*/
message DangerousPermissionState {
    // Name of the permission
@@ -7541,3 +7543,22 @@ message VmsClientStats {
    optional int64 dropped_bytes = 9;
    optional int64 dropped_packets = 10;
}

/**
 * State of a dangerous permission requested by a package - sampled
 * Pulled from: StatsCompanionService.java with data obtained from PackageManager API
*/
message DangerousPermissionStateSampled {
    // Name of the permission
    optional string permission_name = 1;

    // Uid of the package
    optional int32 uid = 2 [(is_uid) = true];

    // If the permission is granted to the uid
    optional bool is_granted = 3;

    // Permission flags as per android.content.pm.PermissionFlags
    optional int32 permission_flags = 4;
}
+4 −0
Original line number Diff line number Diff line
@@ -284,6 +284,10 @@ std::map<PullerKey, PullAtomInfo> StatsPullerManager::kAllPullAtomInfo = {
        // NotiifcationRemoteViews.
        {{.atomTag = android::util::NOTIFICATION_REMOTE_VIEWS},
         {.puller = new StatsCompanionServicePuller(android::util::NOTIFICATION_REMOTE_VIEWS)}},
        // PermissionStateSampled.
        {{.atomTag = android::util::DANGEROUS_PERMISSION_STATE_SAMPLED},
         {.puller =
               new StatsCompanionServicePuller(android::util::DANGEROUS_PERMISSION_STATE_SAMPLED)}},
};

StatsPullerManager::StatsPullerManager() : mNextPullTimeNs(NO_ALARM_UPDATE) {