diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/AppOpsManager.java | 10 | ||||
| -rw-r--r-- | core/java/android/permission/PermissionUsageHelper.java | 7 |
2 files changed, 15 insertions, 2 deletions
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 9bd6c750fb13..187b54a6c3fc 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -742,6 +742,13 @@ public class AppOpsManager { public static final int ATTRIBUTION_FLAG_RECEIVER = 0x4; /** + * Attribution chain flag: Specifies that all attribution sources in the chain were trusted. + * Must only be set by system server. + * @hide + */ + public static final int ATTRIBUTION_FLAG_TRUSTED = 0x8; + + /** * No attribution flags. * @hide */ @@ -760,7 +767,8 @@ public class AppOpsManager { @IntDef(flag = true, prefix = { "FLAG_" }, value = { ATTRIBUTION_FLAG_ACCESSOR, ATTRIBUTION_FLAG_INTERMEDIARY, - ATTRIBUTION_FLAG_RECEIVER + ATTRIBUTION_FLAG_RECEIVER, + ATTRIBUTION_FLAG_TRUSTED }) public @interface AttributionFlags {} diff --git a/core/java/android/permission/PermissionUsageHelper.java b/core/java/android/permission/PermissionUsageHelper.java index 791764b4342f..03f94c549512 100644 --- a/core/java/android/permission/PermissionUsageHelper.java +++ b/core/java/android/permission/PermissionUsageHelper.java @@ -19,9 +19,11 @@ package android.permission; import static android.Manifest.permission_group.CAMERA; import static android.Manifest.permission_group.LOCATION; import static android.Manifest.permission_group.MICROPHONE; +import static android.app.AppOpsManager.ATTRIBUTION_CHAIN_ID_NONE; import static android.app.AppOpsManager.ATTRIBUTION_FLAGS_NONE; import static android.app.AppOpsManager.ATTRIBUTION_FLAG_ACCESSOR; import static android.app.AppOpsManager.ATTRIBUTION_FLAG_RECEIVER; +import static android.app.AppOpsManager.ATTRIBUTION_FLAG_TRUSTED; import static android.app.AppOpsManager.AttributionFlags; import static android.app.AppOpsManager.OPSTR_CAMERA; import static android.app.AppOpsManager.OPSTR_COARSE_LOCATION; @@ -180,7 +182,10 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis public void onOpActiveChanged(@NonNull String op, int uid, @NonNull String packageName, @Nullable String attributionTag, boolean active, @AttributionFlags int attributionFlags, int attributionChainId) { - if ((attributionFlags & ATTRIBUTION_FLAGS_NONE) != 0) { + if (attributionChainId == ATTRIBUTION_CHAIN_ID_NONE + || attributionFlags == ATTRIBUTION_FLAGS_NONE + || (attributionFlags & ATTRIBUTION_FLAG_TRUSTED) == 0) { + // If this is not a chain, or it is untrusted, return return; } |
