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