Merge "Set DeviceLockedForUser state synchronously" into nyc-mr1-dev

This commit is contained in:
Rubin Xu
2016-08-24 14:23:42 +00:00
committed by Android (Google) Code Review

View File

@@ -102,9 +102,8 @@ public class TrustManagerService extends SystemService {
private static final int MSG_START_USER = 7; private static final int MSG_START_USER = 7;
private static final int MSG_CLEANUP_USER = 8; private static final int MSG_CLEANUP_USER = 8;
private static final int MSG_SWITCH_USER = 9; private static final int MSG_SWITCH_USER = 9;
private static final int MSG_SET_DEVICE_LOCKED = 10; private static final int MSG_FLUSH_TRUST_USUALLY_MANAGED = 10;
private static final int MSG_FLUSH_TRUST_USUALLY_MANAGED = 11; private static final int MSG_UNLOCK_USER = 11;
private static final int MSG_UNLOCK_USER = 12;
private static final int TRUST_USUALLY_MANAGED_FLUSH_DELAY = 2 * 60 * 1000; private static final int TRUST_USUALLY_MANAGED_FLUSH_DELAY = 2 * 60 * 1000;
@@ -317,20 +316,6 @@ public class TrustManagerService extends SystemService {
} }
} }
public void setDeviceLockedForUser(int userId, boolean locked) {
if (mLockPatternUtils.isSeparateProfileChallengeEnabled(userId)) {
synchronized (mDeviceLockedForUser) {
mDeviceLockedForUser.put(userId, locked);
}
if (locked) {
try {
ActivityManagerNative.getDefault().notifyLockedProfile(userId);
} catch (RemoteException e) {
}
}
}
}
boolean isDeviceLockedInner(int userId) { boolean isDeviceLockedInner(int userId) {
synchronized (mDeviceLockedForUser) { synchronized (mDeviceLockedForUser) {
return mDeviceLockedForUser.get(userId, true); return mDeviceLockedForUser.get(userId, true);
@@ -838,10 +823,24 @@ public class TrustManagerService extends SystemService {
} }
@Override @Override
public void setDeviceLockedForUser(int userId, boolean value) { public void setDeviceLockedForUser(int userId, boolean locked) {
enforceReportPermission(); enforceReportPermission();
mHandler.obtainMessage(MSG_SET_DEVICE_LOCKED, value ? 1 : 0, userId) final long identity = Binder.clearCallingIdentity();
.sendToTarget(); try {
if (mLockPatternUtils.isSeparateProfileChallengeEnabled(userId)) {
synchronized (mDeviceLockedForUser) {
mDeviceLockedForUser.put(userId, locked);
}
if (locked) {
try {
ActivityManagerNative.getDefault().notifyLockedProfile(userId);
} catch (RemoteException e) {
}
}
}
} finally {
Binder.restoreCallingIdentity(identity);
}
} }
@Override @Override
@@ -917,9 +916,6 @@ public class TrustManagerService extends SystemService {
mCurrentUser = msg.arg1; mCurrentUser = msg.arg1;
refreshDeviceLockedForUser(UserHandle.USER_ALL); refreshDeviceLockedForUser(UserHandle.USER_ALL);
break; break;
case MSG_SET_DEVICE_LOCKED:
setDeviceLockedForUser(msg.arg2, msg.arg1 != 0);
break;
case MSG_FLUSH_TRUST_USUALLY_MANAGED: case MSG_FLUSH_TRUST_USUALLY_MANAGED:
SparseBooleanArray usuallyManaged; SparseBooleanArray usuallyManaged;
synchronized (mTrustUsuallyManagedForUser) { synchronized (mTrustUsuallyManagedForUser) {