Merge "Dump install permission states for non-system users." into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
12442e7ab9
@@ -4881,7 +4881,7 @@ public final class Settings implements Watchable, Snappable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ps.sharedUser == null || permissionNames != null || dumpAll) {
|
if (ps.sharedUser == null || permissionNames != null || dumpAll) {
|
||||||
dumpInstallPermissionsLPr(pw, prefix + " ", permissionNames, permissionsState);
|
dumpInstallPermissionsLPr(pw, prefix + " ", permissionNames, permissionsState, users);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dumpAllComponents) {
|
if (dumpAllComponents) {
|
||||||
@@ -5131,9 +5131,12 @@ public final class Settings implements Watchable, Snappable {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
dumpInstallPermissionsLPr(pw, prefix, permissionNames, permissionsState);
|
List<UserInfo> users = getAllUsers(UserManagerService.getInstance());
|
||||||
|
|
||||||
for (int userId : UserManagerService.getInstance().getUserIds()) {
|
dumpInstallPermissionsLPr(pw, prefix, permissionNames, permissionsState, users);
|
||||||
|
|
||||||
|
for (UserInfo user : users) {
|
||||||
|
final int userId = user.id;
|
||||||
final int[] gids = mPermissionDataProvider.getGidsForUid(UserHandle.getUid(
|
final int[] gids = mPermissionDataProvider.getGidsForUid(UserHandle.getUid(
|
||||||
userId, su.userId));
|
userId, su.userId));
|
||||||
final Collection<PermissionState> permissions =
|
final Collection<PermissionState> permissions =
|
||||||
@@ -5247,31 +5250,55 @@ public final class Settings implements Watchable, Snappable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dumpInstallPermissionsLPr(PrintWriter pw, String prefix, ArraySet<String> permissionNames,
|
void dumpInstallPermissionsLPr(PrintWriter pw, String prefix,
|
||||||
LegacyPermissionState permissionsState) {
|
ArraySet<String> filterPermissionNames, LegacyPermissionState permissionsState,
|
||||||
Collection<PermissionState> permissionStates = permissionsState.getPermissionStates(
|
List<UserInfo> users) {
|
||||||
UserHandle.USER_SYSTEM);
|
ArraySet<String> dumpPermissionNames = new ArraySet<>();
|
||||||
boolean hasInstallPermissions = false;
|
for (UserInfo user : users) {
|
||||||
for (PermissionState permissionState : permissionStates) {
|
int userId = user.id;
|
||||||
if (!permissionState.isRuntime()) {
|
Collection<PermissionState> permissionStates = permissionsState.getPermissionStates(
|
||||||
hasInstallPermissions = true;
|
userId);
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (hasInstallPermissions) {
|
|
||||||
pw.print(prefix); pw.println("install permissions:");
|
|
||||||
for (PermissionState permissionState : permissionStates) {
|
for (PermissionState permissionState : permissionStates) {
|
||||||
if (permissionState.isRuntime()) {
|
if (permissionState.isRuntime()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (permissionNames != null
|
String permissionName = permissionState.getName();
|
||||||
&& !permissionNames.contains(permissionState.getName())) {
|
if (filterPermissionNames != null
|
||||||
|
&& !filterPermissionNames.contains(permissionName)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
pw.print(prefix); pw.print(" "); pw.print(permissionState.getName());
|
dumpPermissionNames.add(permissionName);
|
||||||
pw.print(": granted="); pw.print(permissionState.isGranted());
|
}
|
||||||
pw.println(permissionFlagsToString(", flags=",
|
}
|
||||||
permissionState.getFlags()));
|
boolean printedSomething = false;
|
||||||
|
for (String permissionName : dumpPermissionNames) {
|
||||||
|
PermissionState systemPermissionState = permissionsState.getPermissionState(
|
||||||
|
permissionName, UserHandle.USER_SYSTEM);
|
||||||
|
for (UserInfo user : users) {
|
||||||
|
int userId = user.id;
|
||||||
|
PermissionState permissionState;
|
||||||
|
if (userId == UserHandle.USER_SYSTEM) {
|
||||||
|
permissionState = systemPermissionState;
|
||||||
|
} else {
|
||||||
|
permissionState = permissionsState.getPermissionState(permissionName, userId);
|
||||||
|
if (Objects.equals(permissionState, systemPermissionState)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!printedSomething) {
|
||||||
|
pw.print(prefix); pw.println("install permissions:");
|
||||||
|
printedSomething = true;
|
||||||
|
}
|
||||||
|
pw.print(prefix); pw.print(" "); pw.print(permissionName);
|
||||||
|
pw.print(": granted="); pw.print(
|
||||||
|
permissionState != null && permissionState.isGranted());
|
||||||
|
pw.print(permissionFlagsToString(", flags=",
|
||||||
|
permissionState != null ? permissionState.getFlags() : 0));
|
||||||
|
if (userId == UserHandle.USER_SYSTEM) {
|
||||||
|
pw.println();
|
||||||
|
} else {
|
||||||
|
pw.print(", userId="); pw.println(userId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,6 +103,26 @@ public final class LegacyPermissionState {
|
|||||||
return Objects.equals(mMissing, other.mMissing);
|
return Objects.equals(mMissing, other.mMissing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the permission state for a permission and a user.
|
||||||
|
*
|
||||||
|
* @param permissionName the permission name
|
||||||
|
* @param userId the user ID
|
||||||
|
* @return the permission state
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public PermissionState getPermissionState(@NonNull String permissionName,
|
||||||
|
@UserIdInt int userId) {
|
||||||
|
checkUserId(userId);
|
||||||
|
UserState userState = mUserStates.get(userId);
|
||||||
|
if (userState == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return userState.getPermissionState(permissionName);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Put a permission state for a user.
|
* Put a permission state for a user.
|
||||||
*
|
*
|
||||||
@@ -142,10 +162,10 @@ public final class LegacyPermissionState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all the runtime permission states for a user.
|
* Get all the permission states for a user.
|
||||||
*
|
*
|
||||||
* @param userId the user ID
|
* @param userId the user ID
|
||||||
* @return the runtime permission states
|
* @return the permission states
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public Collection<PermissionState> getPermissionStates(@UserIdInt int userId) {
|
public Collection<PermissionState> getPermissionStates(@UserIdInt int userId) {
|
||||||
@@ -301,5 +321,25 @@ public final class LegacyPermissionState {
|
|||||||
public int getFlags() {
|
public int getFlags() {
|
||||||
return mFlags;
|
return mFlags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(@Nullable Object object) {
|
||||||
|
if (this == object) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (object == null || getClass() != object.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
PermissionState that = (PermissionState) object;
|
||||||
|
return mRuntime == that.mRuntime
|
||||||
|
&& mGranted == that.mGranted
|
||||||
|
&& mFlags == that.mFlags
|
||||||
|
&& Objects.equals(mName, that.mName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(mName, mRuntime, mGranted, mFlags);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user