Merge "Extend permission pregrant tracing utility" into sc-dev

This commit is contained in:
Eugene Susla
2021-03-24 20:58:07 +00:00
committed by Android (Google) Code Review
3 changed files with 19 additions and 3 deletions

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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());