Call notifyLockedProfile in TrustManagerService instead of KeyguardViewMediator.
Setting the profile as locked is not synchronous. In some cases, KeyguardViewMediator called notifyLockedProfile before TrustManagerService had actually marked the profile as locked. BUG:28161912 Change-Id: Ic2ad302c74806ae368d56050eb31503a8ef0bd38
This commit is contained in:
@@ -1217,7 +1217,6 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
|
||||
private void lockProfile(int userId) {
|
||||
mTrustManager.setDeviceLockedForUser(userId, true);
|
||||
notifyLockedProfile(userId);
|
||||
}
|
||||
|
||||
private boolean shouldWaitForProvisioning() {
|
||||
@@ -1547,13 +1546,6 @@ public class KeyguardViewMediator extends SystemUI {
|
||||
}
|
||||
}
|
||||
|
||||
private void notifyLockedProfile(@UserIdInt int userId) {
|
||||
try {
|
||||
ActivityManagerNative.getDefault().notifyLockedProfile(userId);
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle message sent by {@link #showLocked}.
|
||||
* @see #SHOW
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.xmlpull.v1.XmlPullParserException;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityManagerNative;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.app.trust.ITrustListener;
|
||||
import android.app.trust.ITrustManager;
|
||||
@@ -318,6 +319,12 @@ public class TrustManagerService extends SystemService {
|
||||
synchronized (mDeviceLockedForUser) {
|
||||
mDeviceLockedForUser.put(userId, locked);
|
||||
}
|
||||
if (locked) {
|
||||
try {
|
||||
ActivityManagerNative.getDefault().notifyLockedProfile(userId);
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user