Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e629990e authored by Ricky Wai's avatar Ricky Wai Committed by android-build-merger
Browse files

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

am: 8d5ab52c

* commit '8d5ab52c':
  Do not tie managed profile synchronously in onUnlockUser()

Change-Id: I5e2bb7364c957b41deb9389d0ee75efe68a8bc0b
parents 63cb0fbf 8d5ab52c
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -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));

        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.