Loading services/core/java/com/android/server/pm/UserManagerService.java +47 −26 Original line number Diff line number Diff line Loading @@ -4466,17 +4466,19 @@ public class UserManagerService extends IUserManager.Stub { boolean preCreate, @Nullable String[] disallowedPackages, @Nullable Object token) throws UserManager.CheckedUserOperationException { final int nextProbableUserId = getNextAvailableId(); final int noneUserId = -1; final TimingsTraceAndSlog t = new TimingsTraceAndSlog(); t.traceBegin("createUser-" + flags); final long sessionId = logUserCreateJourneyBegin(nextProbableUserId, userType, flags); final long sessionId = logUserCreateJourneyBegin(noneUserId); UserInfo newUser = null; try { newUser = createUserInternalUncheckedNoTracing(name, userType, flags, parentId, preCreate, disallowedPackages, t, token); return newUser; } finally { logUserCreateJourneyFinish(sessionId, nextProbableUserId, newUser != null); logUserCreateJourneyFinish(sessionId, newUser != null ? newUser.id : noneUserId, userType, flags, newUser != null); t.traceEnd(); } } Loading Loading @@ -4969,42 +4971,60 @@ public class UserManagerService extends IUserManager.Stub { && !userTypeDetails.getName().equals(UserManager.USER_TYPE_FULL_RESTRICTED); } private long logUserCreateJourneyBegin(@UserIdInt int userId, String userType, @UserInfoFlag int flags) { private long logUserCreateJourneyBegin(@UserIdInt int userId) { return logUserJourneyBegin( FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_CREATE, userId, userType, flags); userId); } private void logUserCreateJourneyFinish(long sessionId, @UserIdInt int userId, boolean finish) { FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED, sessionId, userId, FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__CREATE_USER, finish ? FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__FINISH : FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__NONE); private void logUserCreateJourneyFinish(long sessionId, @UserIdInt int userId, String userType, @UserInfoFlag int flags, boolean finish) { logUserJourneyFinish(sessionId, FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_CREATE, userId, userType, flags, finish); } private long logUserRemoveJourneyBegin(@UserIdInt int userId, String userType, @UserInfoFlag int flags) { private long logUserRemoveJourneyBegin(@UserIdInt int userId) { return logUserJourneyBegin( FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_REMOVE, userId, userType, flags); userId); } private void logUserRemoveJourneyFinish(long sessionId, @UserIdInt int userId, boolean finish) { FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED, sessionId, userId, FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__REMOVE_USER, finish ? FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__FINISH : FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__NONE); private void logUserRemoveJourneyFinish(long sessionId, @UserIdInt int userId, String userType, @UserInfoFlag int flags, boolean finish) { logUserJourneyFinish(sessionId, FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_REMOVE, userId, userType, flags, finish); } private long logUserJourneyBegin(int journey, @UserIdInt int userId, String userType, @UserInfoFlag int flags) { final long sessionId = ThreadLocalRandom.current().nextLong(1, Long.MAX_VALUE); private void logUserJourneyFinish(long sessionId, int journey, @UserIdInt int userId, String userType, @UserInfoFlag int flags, boolean finish) { // log the journey atom with the user metadata FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED, sessionId, journey, /* origin_user= */ -1, userId, UserManager.getUserTypeForStatsd(userType), flags); int event; switch (journey) { case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_CREATE: event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__CREATE_USER; break; case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_REMOVE: event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__REMOVE_USER; break; default: throw new IllegalArgumentException("Journey " + journey + " not expected."); } FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED, sessionId, userId, event, finish ? FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__FINISH : FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__NONE); } private long logUserJourneyBegin(int journey, @UserIdInt int userId) { final long sessionId = ThreadLocalRandom.current().nextLong(1, Long.MAX_VALUE); // log the event atom to indicate the event start int event; switch (journey) { Loading Loading @@ -5322,8 +5342,7 @@ public class UserManagerService extends IUserManager.Stub { writeUserLP(userData); } final long sessionId = logUserRemoveJourneyBegin( userId, userData.info.userType, userData.info.flags); final long sessionId = logUserRemoveJourneyBegin(userId); try { mAppOpsService.removeUser(userId); Loading @@ -5344,11 +5363,13 @@ public class UserManagerService extends IUserManager.Stub { @Override public void userStopped(int userIdParam) { finishRemoveUser(userIdParam); logUserRemoveJourneyFinish(sessionId, userIdParam, true); logUserRemoveJourneyFinish(sessionId, userIdParam, userData.info.userType, userData.info.flags, true); } @Override public void userStopAborted(int userIdParam) { logUserRemoveJourneyFinish(sessionId, userIdParam, false); logUserRemoveJourneyFinish(sessionId, userIdParam, userData.info.userType, userData.info.flags, false); } }); } catch (RemoteException e) { Loading Loading
services/core/java/com/android/server/pm/UserManagerService.java +47 −26 Original line number Diff line number Diff line Loading @@ -4466,17 +4466,19 @@ public class UserManagerService extends IUserManager.Stub { boolean preCreate, @Nullable String[] disallowedPackages, @Nullable Object token) throws UserManager.CheckedUserOperationException { final int nextProbableUserId = getNextAvailableId(); final int noneUserId = -1; final TimingsTraceAndSlog t = new TimingsTraceAndSlog(); t.traceBegin("createUser-" + flags); final long sessionId = logUserCreateJourneyBegin(nextProbableUserId, userType, flags); final long sessionId = logUserCreateJourneyBegin(noneUserId); UserInfo newUser = null; try { newUser = createUserInternalUncheckedNoTracing(name, userType, flags, parentId, preCreate, disallowedPackages, t, token); return newUser; } finally { logUserCreateJourneyFinish(sessionId, nextProbableUserId, newUser != null); logUserCreateJourneyFinish(sessionId, newUser != null ? newUser.id : noneUserId, userType, flags, newUser != null); t.traceEnd(); } } Loading Loading @@ -4969,42 +4971,60 @@ public class UserManagerService extends IUserManager.Stub { && !userTypeDetails.getName().equals(UserManager.USER_TYPE_FULL_RESTRICTED); } private long logUserCreateJourneyBegin(@UserIdInt int userId, String userType, @UserInfoFlag int flags) { private long logUserCreateJourneyBegin(@UserIdInt int userId) { return logUserJourneyBegin( FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_CREATE, userId, userType, flags); userId); } private void logUserCreateJourneyFinish(long sessionId, @UserIdInt int userId, boolean finish) { FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED, sessionId, userId, FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__CREATE_USER, finish ? FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__FINISH : FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__NONE); private void logUserCreateJourneyFinish(long sessionId, @UserIdInt int userId, String userType, @UserInfoFlag int flags, boolean finish) { logUserJourneyFinish(sessionId, FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_CREATE, userId, userType, flags, finish); } private long logUserRemoveJourneyBegin(@UserIdInt int userId, String userType, @UserInfoFlag int flags) { private long logUserRemoveJourneyBegin(@UserIdInt int userId) { return logUserJourneyBegin( FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_REMOVE, userId, userType, flags); userId); } private void logUserRemoveJourneyFinish(long sessionId, @UserIdInt int userId, boolean finish) { FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED, sessionId, userId, FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__REMOVE_USER, finish ? FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__FINISH : FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__NONE); private void logUserRemoveJourneyFinish(long sessionId, @UserIdInt int userId, String userType, @UserInfoFlag int flags, boolean finish) { logUserJourneyFinish(sessionId, FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_REMOVE, userId, userType, flags, finish); } private long logUserJourneyBegin(int journey, @UserIdInt int userId, String userType, @UserInfoFlag int flags) { final long sessionId = ThreadLocalRandom.current().nextLong(1, Long.MAX_VALUE); private void logUserJourneyFinish(long sessionId, int journey, @UserIdInt int userId, String userType, @UserInfoFlag int flags, boolean finish) { // log the journey atom with the user metadata FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED, sessionId, journey, /* origin_user= */ -1, userId, UserManager.getUserTypeForStatsd(userType), flags); int event; switch (journey) { case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_CREATE: event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__CREATE_USER; break; case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_REMOVE: event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__REMOVE_USER; break; default: throw new IllegalArgumentException("Journey " + journey + " not expected."); } FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED, sessionId, userId, event, finish ? FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__FINISH : FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__NONE); } private long logUserJourneyBegin(int journey, @UserIdInt int userId) { final long sessionId = ThreadLocalRandom.current().nextLong(1, Long.MAX_VALUE); // log the event atom to indicate the event start int event; switch (journey) { Loading Loading @@ -5322,8 +5342,7 @@ public class UserManagerService extends IUserManager.Stub { writeUserLP(userData); } final long sessionId = logUserRemoveJourneyBegin( userId, userData.info.userType, userData.info.flags); final long sessionId = logUserRemoveJourneyBegin(userId); try { mAppOpsService.removeUser(userId); Loading @@ -5344,11 +5363,13 @@ public class UserManagerService extends IUserManager.Stub { @Override public void userStopped(int userIdParam) { finishRemoveUser(userIdParam); logUserRemoveJourneyFinish(sessionId, userIdParam, true); logUserRemoveJourneyFinish(sessionId, userIdParam, userData.info.userType, userData.info.flags, true); } @Override public void userStopAborted(int userIdParam) { logUserRemoveJourneyFinish(sessionId, userIdParam, false); logUserRemoveJourneyFinish(sessionId, userIdParam, userData.info.userType, userData.info.flags, false); } }); } catch (RemoteException e) { Loading