Add is_runtime_permission field to AppOps atom to enable filtering.
Test: make statsd_testdrive && ./out/host/linux-x86/bin/statsd_testdrive 10060
Change-Id: Iab8e2671907953fd91bda5f8dd1a71997df08522
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 f2de200..df885ec 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
@@ -2177,6 +2177,20 @@
e.writeLong(op.getBackgroundRejectCount(OP_FLAGS_ALL_TRUSTED));
e.writeLong(op.getForegroundAccessDuration(OP_FLAGS_ALL_TRUSTED));
e.writeLong(op.getBackgroundAccessDuration(OP_FLAGS_ALL_TRUSTED));
+
+ String perm = AppOpsManager.opToPermission(op.getOpCode());
+ if (perm == null) {
+ e.writeBoolean(false);
+ } else {
+ PermissionInfo permInfo;
+ try {
+ permInfo = mContext.getPackageManager().getPermissionInfo(perm, 0);
+ e.writeBoolean(permInfo.getProtection() == PROTECTION_DANGEROUS);
+ } catch (PackageManager.NameNotFoundException exception) {
+ e.writeBoolean(false);
+ }
+ }
+
pulledData.add(e);
}
}
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 49cc3c4..f12ab94 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -6716,6 +6716,9 @@
// For long-running operations, total duration of the operation
// while the app was in the background (only for trusted requests)
optional int64 trusted_background_duration_millis = 9;
+
+ // Whether AppOps is guarded by Runtime permission
+ optional bool is_runtime_permission = 10;
}
/**