Loading apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java +20 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading Loading @@ -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]; Loading @@ -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); Loading Loading @@ -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: { Loading cmds/statsd/src/atoms.proto +23 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading Loading @@ -6490,6 +6491,7 @@ message MediametricsDrmManagerReported { /** * State of a dangerous permission requested by a package * Pulled from: StatsCompanionService */ message DangerousPermissionState { // Name of the permission Loading Loading @@ -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; } cmds/statsd/src/external/StatsPullerManager.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading
apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java +20 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading Loading @@ -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]; Loading @@ -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); Loading Loading @@ -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: { Loading
cmds/statsd/src/atoms.proto +23 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading Loading @@ -6490,6 +6491,7 @@ message MediametricsDrmManagerReported { /** * State of a dangerous permission requested by a package * Pulled from: StatsCompanionService */ message DangerousPermissionState { // Name of the permission Loading Loading @@ -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; }
cmds/statsd/src/external/StatsPullerManager.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading