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

Commit 2a681e7e authored by Beverly Tai's avatar Beverly Tai Committed by Android Build Coastguard Worker
Browse files

Updated: always show the keyguard on device lockdown

Additionally, don't hide keyguard when it's disabled if the user has locked
down the device.

Manual test steps:
    1. Enable app pinning and disable "Ask for PIN before unpinning" setting
    2. Pin an app (ie: Settings)
    3. Lockdown from the power menu
    4. Observe: user is brought to the keyguard, primary auth is
       required to enter the device.
       => After entering correct credential, the device is still in
          app pinning mode.
       => After entering an incorrect credential, the keyguard remains
          showing and the user can attempt again up to the limit

Bug: 300463732
Bug: 218495634
Test: atest KeyguardViewMediatorTest
Test: manual
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:35a6e2f2c952440b1102033b2c3e496438503cff)
Merged-In: I70fdae80f717712b3dfc9df54b9649959b4bb8f0
Change-Id: I70fdae80f717712b3dfc9df54b9649959b4bb8f0
parent 51288a0c
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -560,6 +560,13 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
            }
        }

        @Override
        public void onStrongAuthStateChanged(int userId) {
            if (mLockPatternUtils.isUserInLockdown(KeyguardUpdateMonitor.getCurrentUser())) {
                doKeyguardLocked(null);
            }
        }

        @Override
        public void onTrustChanged(int userId) {
            if (userId == KeyguardUpdateMonitor.getCurrentUser()) {
@@ -1148,6 +1155,10 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
            mExternallyEnabled = enabled;

            if (!enabled && mShowing) {
                if (mLockPatternUtils.isUserInLockdown(KeyguardUpdateMonitor.getCurrentUser())) {
                    Log.d(TAG, "keyguardEnabled(false) overridden by user lockdown");
                    return;
                }
                if (mExitSecureCallback != null) {
                    if (DEBUG) Log.d(TAG, "in process of verifyUnlock request, ignoring");
                    // we're in the process of handling a request to verify the user
@@ -1359,8 +1370,9 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable {
            return;
        }

        // if another app is disabling us, don't show
        if (!mExternallyEnabled) {
        // if another app is disabling us, don't show unless we're in lockdown mode
        if (!mExternallyEnabled
                && !mLockPatternUtils.isUserInLockdown(KeyguardUpdateMonitor.getCurrentUser())) {
            if (DEBUG) Log.d(TAG, "doKeyguard: not showing because externally disabled");

            mNeedToReshowWhenReenabled = true;