Merge "Fix potential deadlock in applyUserRestrictions methods." into udc-dev
This commit is contained in:
@@ -2592,7 +2592,7 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
}
|
||||
}
|
||||
if (scheduleWriteUser) {
|
||||
scheduleWriteUser(userData);
|
||||
scheduleWriteUser(userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2902,7 +2902,7 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
!= newBaseRestrictions);
|
||||
|
||||
if (mBaseUserRestrictions.updateRestrictions(userId, newBaseRestrictions)) {
|
||||
scheduleWriteUser(getUserDataNoChecks(userId));
|
||||
scheduleWriteUser(userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2978,7 +2978,7 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
@GuardedBy("mRestrictionsLock")
|
||||
private void applyUserRestrictionsLR(@UserIdInt int userId) {
|
||||
updateUserRestrictionsInternalLR(null, userId);
|
||||
scheduleWriteUser(getUserDataNoChecks(userId));
|
||||
scheduleWriteUser(userId);
|
||||
}
|
||||
|
||||
@GuardedBy("mRestrictionsLock")
|
||||
@@ -4129,14 +4129,14 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
}
|
||||
}
|
||||
|
||||
private void scheduleWriteUser(UserData userData) {
|
||||
private void scheduleWriteUser(@UserIdInt int userId) {
|
||||
if (DBG) {
|
||||
debug("scheduleWriteUser");
|
||||
}
|
||||
// No need to wrap it within a lock -- worst case, we'll just post the same message
|
||||
// twice.
|
||||
if (!mHandler.hasMessages(WRITE_USER_MSG, userData)) {
|
||||
Message msg = mHandler.obtainMessage(WRITE_USER_MSG, userData);
|
||||
if (!mHandler.hasMessages(WRITE_USER_MSG, userId)) {
|
||||
Message msg = mHandler.obtainMessage(WRITE_USER_MSG, userId);
|
||||
mHandler.sendMessageDelayed(msg, WRITE_USER_DELAY);
|
||||
}
|
||||
}
|
||||
@@ -4152,7 +4152,7 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
// Something went wrong, schedule full rewrite.
|
||||
UserData userData = getUserDataNoChecks(userId);
|
||||
if (userData != null) {
|
||||
scheduleWriteUser(userData);
|
||||
scheduleWriteUser(userId);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -6363,7 +6363,7 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
userData.info.lastLoggedInTime = now;
|
||||
}
|
||||
userData.info.lastLoggedInFingerprint = PackagePartitions.FINGERPRINT;
|
||||
scheduleWriteUser(userData);
|
||||
scheduleWriteUser(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -6533,7 +6533,7 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
|
||||
private void setLastEnteredForegroundTimeToNow(@NonNull UserData userData) {
|
||||
userData.mLastEnteredForegroundTimeMillis = System.currentTimeMillis();
|
||||
scheduleWriteUser(userData);
|
||||
scheduleWriteUser(userData.info.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -6832,7 +6832,7 @@ public class UserManagerService extends IUserManager.Stub {
|
||||
case WRITE_USER_MSG:
|
||||
removeMessages(WRITE_USER_MSG, msg.obj);
|
||||
synchronized (mPackagesLock) {
|
||||
int userId = ((UserData) msg.obj).info.id;
|
||||
int userId = (int) msg.obj;
|
||||
UserData userData = getUserDataNoChecks(userId);
|
||||
if (userData != null) {
|
||||
writeUserLP(userData);
|
||||
|
||||
Reference in New Issue
Block a user