Merge "Add event logging for admin status granting and revocation"
This commit is contained in:
committed by
Android (Google) Code Review
commit
c10b8f540b
@@ -1481,36 +1481,45 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
@Override
|
||||
public void setUserAdmin(@UserIdInt int userId) {
|
||||
checkManageUserAndAcrossUsersFullPermission("set user admin");
|
||||
|
||||
final long sessionId = logGrantAdminJourneyBegin(userId);
|
||||
UserInfo info;
|
||||
synchronized (mPackagesLock) {
|
||||
UserInfo info;
|
||||
synchronized (mUsersLock) {
|
||||
info = getUserInfoLU(userId);
|
||||
}
|
||||
if (info == null || info.isAdmin()) {
|
||||
// Exit if no user found with that id, or the user is already an Admin.
|
||||
logUserJourneyError(sessionId,
|
||||
FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__GRANT_ADMIN,
|
||||
userId);
|
||||
return;
|
||||
}
|
||||
|
||||
info.flags ^= UserInfo.FLAG_ADMIN;
|
||||
writeUserLP(getUserDataLU(info.id));
|
||||
}
|
||||
logGrantAdminJourneyFinish(sessionId, userId, info.userType, info.flags);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void revokeUserAdmin(@UserIdInt int userId) {
|
||||
checkManageUserAndAcrossUsersFullPermission("revoke admin privileges");
|
||||
final long sessionId = logRevokeAdminJourneyBegin(userId);
|
||||
UserData user;
|
||||
synchronized (mPackagesLock) {
|
||||
synchronized (mUsersLock) {
|
||||
UserData user = getUserDataLU(userId);
|
||||
user = getUserDataLU(userId);
|
||||
if (user == null || !user.info.isAdmin()) {
|
||||
// Exit if no user found with that id, or the user is not an Admin.
|
||||
logUserJourneyError(sessionId, FrameworkStatsLog
|
||||
.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__REVOKE_ADMIN,
|
||||
userId);
|
||||
return;
|
||||
}
|
||||
user.info.flags ^= UserInfo.FLAG_ADMIN;
|
||||
writeUserLP(user);
|
||||
}
|
||||
}
|
||||
logRevokeAdminJourneyFinish(sessionId, userId, user.info.userType, user.info.flags);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -5147,12 +5156,38 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
userId, userType, flags, finish);
|
||||
}
|
||||
|
||||
private long logGrantAdminJourneyBegin(@UserIdInt int userId) {
|
||||
return logUserJourneyBegin(
|
||||
FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__GRANT_ADMIN,
|
||||
userId);
|
||||
}
|
||||
|
||||
private void logGrantAdminJourneyFinish(long sessionId, @UserIdInt int userId, String userType,
|
||||
@UserInfoFlag int flags) {
|
||||
logUserJourneyFinish(sessionId,
|
||||
FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__GRANT_ADMIN,
|
||||
userId, userType, flags, true);
|
||||
}
|
||||
|
||||
private long logRevokeAdminJourneyBegin(@UserIdInt int userId) {
|
||||
return logUserJourneyBegin(
|
||||
FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__REVOKE_ADMIN,
|
||||
userId);
|
||||
}
|
||||
|
||||
private void logRevokeAdminJourneyFinish(long sessionId, @UserIdInt int userId, String userType,
|
||||
@UserInfoFlag int flags) {
|
||||
logUserJourneyFinish(sessionId,
|
||||
FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__REVOKE_ADMIN,
|
||||
userId, userType, flags, true);
|
||||
}
|
||||
|
||||
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,
|
||||
journey, /* origin_user= */ getCurrentUserId(), userId,
|
||||
UserManager.getUserTypeForStatsd(userType), flags);
|
||||
|
||||
int event;
|
||||
@@ -5163,6 +5198,12 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_REMOVE:
|
||||
event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__REMOVE_USER;
|
||||
break;
|
||||
case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__GRANT_ADMIN:
|
||||
event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__GRANT_ADMIN;
|
||||
break;
|
||||
case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__REVOKE_ADMIN:
|
||||
event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__REVOKE_ADMIN;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Journey " + journey + " not expected.");
|
||||
}
|
||||
@@ -5184,6 +5225,12 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__USER_REMOVE:
|
||||
event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__REMOVE_USER;
|
||||
break;
|
||||
case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__GRANT_ADMIN:
|
||||
event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__GRANT_ADMIN;
|
||||
break;
|
||||
case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__REVOKE_ADMIN:
|
||||
event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__REVOKE_ADMIN;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Journey " + journey + " not expected.");
|
||||
}
|
||||
@@ -5193,6 +5240,27 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
private void logUserJourneyError(long sessionId, int journey, @UserIdInt int userId) {
|
||||
|
||||
// log the journey atom with the user metadata
|
||||
FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED, sessionId,
|
||||
journey, /* origin_user= */ getCurrentUserId(), userId);
|
||||
|
||||
int event;
|
||||
switch (journey) {
|
||||
case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__GRANT_ADMIN:
|
||||
event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__GRANT_ADMIN;
|
||||
break;
|
||||
case FrameworkStatsLog.USER_LIFECYCLE_JOURNEY_REPORTED__JOURNEY__REVOKE_ADMIN:
|
||||
event = FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__EVENT__REVOKE_ADMIN;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Journey " + journey + " not expected.");
|
||||
}
|
||||
FrameworkStatsLog.write(FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED, sessionId, userId,
|
||||
event, FrameworkStatsLog.USER_LIFECYCLE_EVENT_OCCURRED__STATE__ERROR);
|
||||
}
|
||||
|
||||
/** Register callbacks for statsd pulled atoms. */
|
||||
private void registerStatsCallbacks() {
|
||||
final StatsManager statsManager = mContext.getSystemService(StatsManager.class);
|
||||
|
||||
Reference in New Issue
Block a user