diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java index 7669586cfc1fd..baa25f07f514d 100644 --- a/core/java/android/permission/PermissionManager.java +++ b/core/java/android/permission/PermissionManager.java @@ -79,6 +79,9 @@ import java.util.Set; public final class PermissionManager { private static final String LOG_TAG = PermissionManager.class.getName(); + /** @hide */ + public static final String LOG_TAG_TRACE_GRANTS = "PermissionGrantTrace"; + /** @hide */ public static final String KILL_APP_REASON_PERMISSIONS_REVOKED = "permissions revoked"; @@ -103,6 +106,8 @@ public final class PermissionManager { * Note: Changing this won't do anything on its own - you should also change the filtering in * {@link #shouldTraceGrant}. * + * See log output for tag {@link #LOG_TAG_TRACE_GRANTS} + * * @hide */ public static final boolean DEBUG_TRACE_GRANTS = false; @@ -319,8 +324,10 @@ public final class PermissionManager { } /** @hide */ - public static boolean shouldTraceGrant(String packageName, String permissionName, int userId) { + public static boolean shouldTraceGrant( + @NonNull String packageName, @NonNull String permissionName, int userId) { // To be modified when debugging + // template: if ("".equals(packageName) && "".equals(permissionName)) return true; return false; } @@ -348,7 +355,8 @@ public final class PermissionManager { @NonNull String permissionName, @NonNull UserHandle user) { if (DEBUG_TRACE_GRANTS && shouldTraceGrant(packageName, permissionName, user.getIdentifier())) { - Log.i(LOG_TAG, "App " + mContext.getPackageName() + " is granting " + packageName + " " + Log.i(LOG_TAG_TRACE_GRANTS, "App " + mContext.getPackageName() + " is granting " + + packageName + " " + permissionName + " for user " + user.getIdentifier(), new RuntimeException()); } try { diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index f0d54b4c06174..e16c67f070208 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -1729,6 +1729,14 @@ final class DefaultPermissionGrantPolicy { @Override public void grantPermission(@NonNull String permission, @NonNull PackageInfo pkg, @NonNull UserHandle user) { + if (PermissionManager.DEBUG_TRACE_GRANTS + && PermissionManager.shouldTraceGrant( + pkg.packageName, permission, user.getIdentifier())) { + Log.i(PermissionManager.LOG_TAG_TRACE_GRANTS, + "PregrantPolicy is granting " + pkg.packageName + " " + + permission + " for user " + user.getIdentifier(), + new RuntimeException()); + } PermissionState state = getPermissionState(permission, pkg, user); state.initGranted(); state.newGranted = true; diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 3244c44004349..e63426f8a4db1 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -1338,7 +1338,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { boolean overridePolicy, int callingUid, final int userId, PermissionCallback callback) { if (PermissionManager.DEBUG_TRACE_GRANTS && PermissionManager.shouldTraceGrant(packageName, permName, userId)) { - Log.i(TAG, "System is granting " + packageName + " " + Log.i(PermissionManager.LOG_TAG_TRACE_GRANTS, "System is granting " + packageName + " " + permName + " for user " + userId + " on behalf of uid " + callingUid + " " + mPackageManagerInt.getNameForUid(callingUid), new RuntimeException());