Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 757491fd authored by Felipe Leme's avatar Felipe Leme
Browse files

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
parent 786d279f
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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.
+34 −1
Original line number Diff line number Diff line
@@ -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(" (");
+7 −2
Original line number Diff line number Diff line
@@ -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