From 42d710ef7301c11c39086e37ecaf479e7bc923e7 Mon Sep 17 00:00:00 2001 From: Stanislav Zholnin Date: Thu, 28 Nov 2019 13:11:54 +0000 Subject: [PATCH] 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 --- .../server/stats/StatsCompanionService.java | 14 ++++++++++++++ cmds/statsd/src/atoms.proto | 3 +++ 2 files changed, 17 insertions(+) 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 f2de2001bcbec..df885ec76e512 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 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { 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 49cc3c4c059e6..f12ab94d7fd99 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -6716,6 +6716,9 @@ message AppOps { // 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; } /**