Merge "Do not tie managed profile synchronously in onUnlockUser()" into nyc-dev

am: 99df649aa4

* commit '99df649aa4907d9f9c6fe4bdf4acb517003f97f2':
  Do not tie managed profile synchronously in onUnlockUser()

Change-Id: I2d67bf4dc5f7421fef104db4ad25f5bb8bfa4e7d
This commit is contained in:
Ricky Wai
2016-05-25 13:12:07 +00:00
committed by android-build-merger

View File

@@ -43,6 +43,7 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR
import android.database.sqlite.SQLiteDatabase;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.IProgressListener;
import android.os.Parcel;
@@ -118,6 +119,7 @@ public class LockSettingsService extends ILockSettings.Stub {
private final Object mSeparateChallengeLock = new Object();
private final Context mContext;
private final Handler mHandler;
private final LockSettingsStorage mStorage;
private final LockSettingsStrongAuth mStrongAuth;
private final SynchronizedStrongAuthTracker mStrongAuthTracker;
@@ -244,6 +246,7 @@ public class LockSettingsService extends ILockSettings.Stub {
public LockSettingsService(Context context) {
mContext = context;
mHandler = new Handler();
mStrongAuth = new LockSettingsStrongAuth(context);
// Open the database
@@ -367,10 +370,20 @@ public class LockSettingsService extends ILockSettings.Stub {
hideEncryptionNotification(new UserHandle(userId));
}
public void onUnlockUser(int userId) {
public void onUnlockUser(final int userId) {
// Hide notification first, as tie managed profile lock takes time
hideEncryptionNotification(new UserHandle(userId));
tieManagedProfileLockIfNecessary(userId, null);
if (mUserManager.getUserInfo(userId).isManagedProfile()) {
// As tieManagedProfileLockIfNecessary() may try to unlock user, we should not do it
// in onUnlockUser() synchronously, otherwise it may cause a deadlock
mHandler.post(new Runnable() {
@Override
public void run() {
tieManagedProfileLockIfNecessary(userId, null);
}
});
}
// Now we have unlocked the parent user we should show notifications
// about any profiles that exist.