Added profile-owner and device-owner on cmd user and dump user.
Examples:
$ adb shell cmd user list --all -v
3 users:
0: id=0, name=Driver, flags=ADMIN|INITIALIZED|PRIMARY|SYSTEM (running) (device-owner)
1: id=10, name=Driver, flags=ADMIN|FULL|INITIALIZED
2: id=11, name=HomerSimpson, flags=FULL|INITIALIZED (running) (converted) (profile-owner) (current)
$ adb shell dumpsys user | grep '\-owner'
UserInfo{0:null:813} serialNo=0 isPrimary=true <device-owner>
UserInfo{11:HomerSimpson:410} serialNo=15 isPrimary=false <converted> <profile-owner>
Test: see above
Bug: 156263735
Change-Id: Ia98d3586fcaa852943e3a900ba13add5439eaf13
This commit is contained in:
@@ -231,7 +231,13 @@ public abstract class DevicePolicyManagerInternal {
|
||||
* Returns the profile owner component for the given user, or {@code null} if there is not one.
|
||||
*/
|
||||
@Nullable
|
||||
public abstract ComponentName getProfileOwnerAsUser(int userHandle);
|
||||
public abstract ComponentName getProfileOwnerAsUser(@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Returns the user id of the device owner, or {@link UserHandle#USER_NULL} if there is not one.
|
||||
*/
|
||||
@UserIdInt
|
||||
public abstract int getDeviceOwnerUserId();
|
||||
|
||||
/**
|
||||
* Returns whether the given package is a device owner or a profile owner in the calling user.
|
||||
|
||||
@@ -4760,13 +4760,31 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
final boolean hasParent = user.profileGroupId != user.id
|
||||
&& user.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID;
|
||||
if (verbose) {
|
||||
pw.printf("%d: id=%d, name=%s, flags=%s%s%s%s%s%s%s\n", i, user.id, user.name,
|
||||
final DevicePolicyManagerInternal dpm = getDevicePolicyManagerInternal();
|
||||
String deviceOwner = "";
|
||||
String profileOwner = "";
|
||||
if (dpm != null) {
|
||||
final long ident = Binder.clearCallingIdentity();
|
||||
try {
|
||||
if (dpm.getDeviceOwnerUserId() == user.id) {
|
||||
deviceOwner = " (device-owner)";
|
||||
}
|
||||
if (dpm.getProfileOwnerAsUser(user.id) != null) {
|
||||
profileOwner = " (profile-owner)";
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(ident);
|
||||
}
|
||||
}
|
||||
pw.printf("%d: id=%d, name=%s, flags=%s%s%s%s%s%s%s%s%s\n", i, user.id,
|
||||
user.name,
|
||||
UserInfo.flagsToString(user.flags),
|
||||
hasParent ? " (parentId=" + user.profileGroupId + ")" : "",
|
||||
running ? " (running)" : "",
|
||||
user.partial ? " (partial)" : "",
|
||||
user.preCreated ? " (pre-created)" : "",
|
||||
user.convertedFromPreCreated ? " (converted)" : "",
|
||||
deviceOwner, profileOwner,
|
||||
current ? " (current)" : "");
|
||||
} else {
|
||||
// NOTE: the standard "list users" command is used by integration tests and
|
||||
@@ -4860,6 +4878,21 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
if (userInfo.convertedFromPreCreated) {
|
||||
pw.print(" <converted>");
|
||||
}
|
||||
final DevicePolicyManagerInternal dpm = getDevicePolicyManagerInternal();
|
||||
if (dpm != null) {
|
||||
final long ident = Binder.clearCallingIdentity();
|
||||
try {
|
||||
if (dpm.getDeviceOwnerUserId() == userId) {
|
||||
pw.print(" <device-owner>");
|
||||
}
|
||||
if (dpm.getProfileOwnerAsUser(userId) != null) {
|
||||
pw.print(" <profile-owner>");
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(ident);
|
||||
}
|
||||
}
|
||||
|
||||
pw.println();
|
||||
pw.print(" Type: "); pw.println(userInfo.userType);
|
||||
pw.print(" Flags: "); pw.print(userInfo.flags); pw.print(" (");
|
||||
|
||||
@@ -11780,8 +11780,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ComponentName getProfileOwnerAsUser(int userHandle) {
|
||||
return DevicePolicyManagerService.this.getProfileOwnerAsUser(userHandle);
|
||||
public ComponentName getProfileOwnerAsUser(@UserIdInt int userId) {
|
||||
return DevicePolicyManagerService.this.getProfileOwnerAsUser(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceOwnerUserId() {
|
||||
return DevicePolicyManagerService.this.getDeviceOwnerUserId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user