Merge "Fix wrong userId being reported to CUJ metrics"
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
@@ -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);
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user