Loading services/core/java/com/android/server/pm/UserManagerService.java +118 −85 Original line number Diff line number Diff line Loading @@ -5152,8 +5152,14 @@ public class UserManagerService extends IUserManager.Stub { protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpPermission(mContext, LOG_TAG, pw)) return; long now = System.currentTimeMillis(); final long now = System.currentTimeMillis(); final long nowRealtime = SystemClock.elapsedRealtime(); final StringBuilder sb = new StringBuilder(); if (args != null && args.length > 0 && args[0].equals("--user")) { dumpUser(pw, UserHandle.parseUserArg(args[1]), sb, now, nowRealtime); return; } final ActivityManagerInternal amInternal = LocalServices .getService(ActivityManagerInternal.class); Loading @@ -5165,7 +5171,6 @@ public class UserManagerService extends IUserManager.Stub { } pw.println(); StringBuilder sb = new StringBuilder(); synchronized (mPackagesLock) { synchronized (mUsersLock) { pw.println("Users:"); Loading @@ -5174,89 +5179,7 @@ public class UserManagerService extends IUserManager.Stub { if (userData == null) { continue; } UserInfo userInfo = userData.info; final int userId = userInfo.id; pw.print(" "); pw.print(userInfo); pw.print(" serialNo="); pw.print(userInfo.serialNumber); pw.print(" isPrimary="); pw.print(userInfo.isPrimary()); if (userInfo.profileGroupId != userInfo.id && userInfo.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID) { pw.print(" parentId="); pw.print(userInfo.profileGroupId); } if (mRemovingUserIds.get(userId)) { pw.print(" <removing> "); } if (userInfo.partial) { pw.print(" <partial>"); } if (userInfo.preCreated) { pw.print(" <pre-created>"); } if (userInfo.convertedFromPreCreated) { pw.print(" <converted>"); } pw.println(); pw.print(" Type: "); pw.println(userInfo.userType); pw.print(" Flags: "); pw.print(userInfo.flags); pw.print(" ("); pw.print(UserInfo.flagsToString(userInfo.flags)); pw.println(")"); pw.print(" State: "); final int state; synchronized (mUserStates) { state = mUserStates.get(userId, -1); } pw.println(UserState.stateToString(state)); pw.print(" Created: "); dumpTimeAgo(pw, sb, now, userInfo.creationTime); pw.print(" Last logged in: "); dumpTimeAgo(pw, sb, now, userInfo.lastLoggedInTime); pw.print(" Last logged in fingerprint: "); pw.println(userInfo.lastLoggedInFingerprint); pw.print(" Start time: "); dumpTimeAgo(pw, sb, nowRealtime, userData.startRealtime); pw.print(" Unlock time: "); dumpTimeAgo(pw, sb, nowRealtime, userData.unlockRealtime); pw.print(" Has profile owner: "); pw.println(mIsUserManaged.get(userId)); pw.println(" Restrictions:"); synchronized (mRestrictionsLock) { UserRestrictionsUtils.dumpRestrictions( pw, " ", mBaseUserRestrictions.getRestrictions(userInfo.id)); pw.println(" Device policy global restrictions:"); UserRestrictionsUtils.dumpRestrictions( pw, " ", mDevicePolicyGlobalUserRestrictions.getRestrictions(userInfo.id)); pw.println(" Device policy local restrictions:"); getDevicePolicyLocalRestrictionsForTargetUserLR( userInfo.id).dumpRestrictions(pw, " "); pw.println(" Effective restrictions:"); UserRestrictionsUtils.dumpRestrictions( pw, " ", mCachedEffectiveUserRestrictions.getRestrictions(userInfo.id)); } if (userData.account != null) { pw.print(" Account name: " + userData.account); pw.println(); } if (userData.seedAccountName != null) { pw.print(" Seed account name: " + userData.seedAccountName); pw.println(); if (userData.seedAccountType != null) { pw.print(" account type: " + userData.seedAccountType); pw.println(); } if (userData.seedAccountOptions != null) { pw.print(" account options exist"); pw.println(); } } dumpUserLocked(pw, userData, sb, now, nowRealtime); } } Loading Loading @@ -5345,6 +5268,116 @@ public class UserManagerService extends IUserManager.Stub { } } private void dumpUser(PrintWriter pw, @UserIdInt int userId, StringBuilder sb, long now, long nowRealtime) { if (userId == UserHandle.USER_CURRENT) { final ActivityManagerInternal amInternal = LocalServices .getService(ActivityManagerInternal.class); if (amInternal == null) { pw.println("Cannot determine current user"); return; } userId = amInternal.getCurrentUserId(); } synchronized (mUsersLock) { final UserData userData = mUsers.get(userId); if (userData == null) { pw.println("User " + userId + " not found"); return; } dumpUserLocked(pw, userData, sb, now, nowRealtime); } } @GuardedBy("mUsersLock") private void dumpUserLocked(PrintWriter pw, UserData userData, StringBuilder tempStringBuilder, long now, long nowRealtime) { final UserInfo userInfo = userData.info; final int userId = userInfo.id; pw.print(" "); pw.print(userInfo); pw.print(" serialNo="); pw.print(userInfo.serialNumber); pw.print(" isPrimary="); pw.print(userInfo.isPrimary()); if (userInfo.profileGroupId != userInfo.id && userInfo.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID) { pw.print(" parentId="); pw.print(userInfo.profileGroupId); } if (mRemovingUserIds.get(userId)) { pw.print(" <removing> "); } if (userInfo.partial) { pw.print(" <partial>"); } if (userInfo.preCreated) { pw.print(" <pre-created>"); } if (userInfo.convertedFromPreCreated) { pw.print(" <converted>"); } pw.println(); pw.print(" Type: "); pw.println(userInfo.userType); pw.print(" Flags: "); pw.print(userInfo.flags); pw.print(" ("); pw.print(UserInfo.flagsToString(userInfo.flags)); pw.println(")"); pw.print(" State: "); final int state; synchronized (mUserStates) { state = mUserStates.get(userId, -1); } pw.println(UserState.stateToString(state)); pw.print(" Created: "); dumpTimeAgo(pw, tempStringBuilder, now, userInfo.creationTime); pw.print(" Last logged in: "); dumpTimeAgo(pw, tempStringBuilder, now, userInfo.lastLoggedInTime); pw.print(" Last logged in fingerprint: "); pw.println(userInfo.lastLoggedInFingerprint); pw.print(" Start time: "); dumpTimeAgo(pw, tempStringBuilder, nowRealtime, userData.startRealtime); pw.print(" Unlock time: "); dumpTimeAgo(pw, tempStringBuilder, nowRealtime, userData.unlockRealtime); pw.print(" Has profile owner: "); pw.println(mIsUserManaged.get(userId)); pw.println(" Restrictions:"); synchronized (mRestrictionsLock) { UserRestrictionsUtils.dumpRestrictions( pw, " ", mBaseUserRestrictions.getRestrictions(userInfo.id)); pw.println(" Device policy global restrictions:"); UserRestrictionsUtils.dumpRestrictions( pw, " ", mDevicePolicyGlobalUserRestrictions.getRestrictions(userInfo.id)); pw.println(" Device policy local restrictions:"); getDevicePolicyLocalRestrictionsForTargetUserLR( userInfo.id).dumpRestrictions(pw, " "); pw.println(" Effective restrictions:"); UserRestrictionsUtils.dumpRestrictions( pw, " ", mCachedEffectiveUserRestrictions.getRestrictions(userInfo.id)); } if (userData.account != null) { pw.print(" Account name: " + userData.account); pw.println(); } if (userData.seedAccountName != null) { pw.print(" Seed account name: " + userData.seedAccountName); pw.println(); if (userData.seedAccountType != null) { pw.print(" account type: " + userData.seedAccountType); pw.println(); } if (userData.seedAccountOptions != null) { pw.print(" account options exist"); pw.println(); } } } private static void dumpTimeAgo(PrintWriter pw, StringBuilder sb, long nowTime, long time) { if (time == 0) { pw.println("<unknown>"); Loading Loading
services/core/java/com/android/server/pm/UserManagerService.java +118 −85 Original line number Diff line number Diff line Loading @@ -5152,8 +5152,14 @@ public class UserManagerService extends IUserManager.Stub { protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpPermission(mContext, LOG_TAG, pw)) return; long now = System.currentTimeMillis(); final long now = System.currentTimeMillis(); final long nowRealtime = SystemClock.elapsedRealtime(); final StringBuilder sb = new StringBuilder(); if (args != null && args.length > 0 && args[0].equals("--user")) { dumpUser(pw, UserHandle.parseUserArg(args[1]), sb, now, nowRealtime); return; } final ActivityManagerInternal amInternal = LocalServices .getService(ActivityManagerInternal.class); Loading @@ -5165,7 +5171,6 @@ public class UserManagerService extends IUserManager.Stub { } pw.println(); StringBuilder sb = new StringBuilder(); synchronized (mPackagesLock) { synchronized (mUsersLock) { pw.println("Users:"); Loading @@ -5174,89 +5179,7 @@ public class UserManagerService extends IUserManager.Stub { if (userData == null) { continue; } UserInfo userInfo = userData.info; final int userId = userInfo.id; pw.print(" "); pw.print(userInfo); pw.print(" serialNo="); pw.print(userInfo.serialNumber); pw.print(" isPrimary="); pw.print(userInfo.isPrimary()); if (userInfo.profileGroupId != userInfo.id && userInfo.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID) { pw.print(" parentId="); pw.print(userInfo.profileGroupId); } if (mRemovingUserIds.get(userId)) { pw.print(" <removing> "); } if (userInfo.partial) { pw.print(" <partial>"); } if (userInfo.preCreated) { pw.print(" <pre-created>"); } if (userInfo.convertedFromPreCreated) { pw.print(" <converted>"); } pw.println(); pw.print(" Type: "); pw.println(userInfo.userType); pw.print(" Flags: "); pw.print(userInfo.flags); pw.print(" ("); pw.print(UserInfo.flagsToString(userInfo.flags)); pw.println(")"); pw.print(" State: "); final int state; synchronized (mUserStates) { state = mUserStates.get(userId, -1); } pw.println(UserState.stateToString(state)); pw.print(" Created: "); dumpTimeAgo(pw, sb, now, userInfo.creationTime); pw.print(" Last logged in: "); dumpTimeAgo(pw, sb, now, userInfo.lastLoggedInTime); pw.print(" Last logged in fingerprint: "); pw.println(userInfo.lastLoggedInFingerprint); pw.print(" Start time: "); dumpTimeAgo(pw, sb, nowRealtime, userData.startRealtime); pw.print(" Unlock time: "); dumpTimeAgo(pw, sb, nowRealtime, userData.unlockRealtime); pw.print(" Has profile owner: "); pw.println(mIsUserManaged.get(userId)); pw.println(" Restrictions:"); synchronized (mRestrictionsLock) { UserRestrictionsUtils.dumpRestrictions( pw, " ", mBaseUserRestrictions.getRestrictions(userInfo.id)); pw.println(" Device policy global restrictions:"); UserRestrictionsUtils.dumpRestrictions( pw, " ", mDevicePolicyGlobalUserRestrictions.getRestrictions(userInfo.id)); pw.println(" Device policy local restrictions:"); getDevicePolicyLocalRestrictionsForTargetUserLR( userInfo.id).dumpRestrictions(pw, " "); pw.println(" Effective restrictions:"); UserRestrictionsUtils.dumpRestrictions( pw, " ", mCachedEffectiveUserRestrictions.getRestrictions(userInfo.id)); } if (userData.account != null) { pw.print(" Account name: " + userData.account); pw.println(); } if (userData.seedAccountName != null) { pw.print(" Seed account name: " + userData.seedAccountName); pw.println(); if (userData.seedAccountType != null) { pw.print(" account type: " + userData.seedAccountType); pw.println(); } if (userData.seedAccountOptions != null) { pw.print(" account options exist"); pw.println(); } } dumpUserLocked(pw, userData, sb, now, nowRealtime); } } Loading Loading @@ -5345,6 +5268,116 @@ public class UserManagerService extends IUserManager.Stub { } } private void dumpUser(PrintWriter pw, @UserIdInt int userId, StringBuilder sb, long now, long nowRealtime) { if (userId == UserHandle.USER_CURRENT) { final ActivityManagerInternal amInternal = LocalServices .getService(ActivityManagerInternal.class); if (amInternal == null) { pw.println("Cannot determine current user"); return; } userId = amInternal.getCurrentUserId(); } synchronized (mUsersLock) { final UserData userData = mUsers.get(userId); if (userData == null) { pw.println("User " + userId + " not found"); return; } dumpUserLocked(pw, userData, sb, now, nowRealtime); } } @GuardedBy("mUsersLock") private void dumpUserLocked(PrintWriter pw, UserData userData, StringBuilder tempStringBuilder, long now, long nowRealtime) { final UserInfo userInfo = userData.info; final int userId = userInfo.id; pw.print(" "); pw.print(userInfo); pw.print(" serialNo="); pw.print(userInfo.serialNumber); pw.print(" isPrimary="); pw.print(userInfo.isPrimary()); if (userInfo.profileGroupId != userInfo.id && userInfo.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID) { pw.print(" parentId="); pw.print(userInfo.profileGroupId); } if (mRemovingUserIds.get(userId)) { pw.print(" <removing> "); } if (userInfo.partial) { pw.print(" <partial>"); } if (userInfo.preCreated) { pw.print(" <pre-created>"); } if (userInfo.convertedFromPreCreated) { pw.print(" <converted>"); } pw.println(); pw.print(" Type: "); pw.println(userInfo.userType); pw.print(" Flags: "); pw.print(userInfo.flags); pw.print(" ("); pw.print(UserInfo.flagsToString(userInfo.flags)); pw.println(")"); pw.print(" State: "); final int state; synchronized (mUserStates) { state = mUserStates.get(userId, -1); } pw.println(UserState.stateToString(state)); pw.print(" Created: "); dumpTimeAgo(pw, tempStringBuilder, now, userInfo.creationTime); pw.print(" Last logged in: "); dumpTimeAgo(pw, tempStringBuilder, now, userInfo.lastLoggedInTime); pw.print(" Last logged in fingerprint: "); pw.println(userInfo.lastLoggedInFingerprint); pw.print(" Start time: "); dumpTimeAgo(pw, tempStringBuilder, nowRealtime, userData.startRealtime); pw.print(" Unlock time: "); dumpTimeAgo(pw, tempStringBuilder, nowRealtime, userData.unlockRealtime); pw.print(" Has profile owner: "); pw.println(mIsUserManaged.get(userId)); pw.println(" Restrictions:"); synchronized (mRestrictionsLock) { UserRestrictionsUtils.dumpRestrictions( pw, " ", mBaseUserRestrictions.getRestrictions(userInfo.id)); pw.println(" Device policy global restrictions:"); UserRestrictionsUtils.dumpRestrictions( pw, " ", mDevicePolicyGlobalUserRestrictions.getRestrictions(userInfo.id)); pw.println(" Device policy local restrictions:"); getDevicePolicyLocalRestrictionsForTargetUserLR( userInfo.id).dumpRestrictions(pw, " "); pw.println(" Effective restrictions:"); UserRestrictionsUtils.dumpRestrictions( pw, " ", mCachedEffectiveUserRestrictions.getRestrictions(userInfo.id)); } if (userData.account != null) { pw.print(" Account name: " + userData.account); pw.println(); } if (userData.seedAccountName != null) { pw.print(" Seed account name: " + userData.seedAccountName); pw.println(); if (userData.seedAccountType != null) { pw.print(" account type: " + userData.seedAccountType); pw.println(); } if (userData.seedAccountOptions != null) { pw.print(" account options exist"); pw.println(); } } } private static void dumpTimeAgo(PrintWriter pw, StringBuilder sb, long nowTime, long time) { if (time == 0) { pw.println("<unknown>"); Loading