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

Commit ddcdecc9 authored by Adrian Roos's avatar Adrian Roos
Browse files

Keyguard: Improve trusted unlock while occluded

Smoothly unlocks device when going from a SHOW_WHEN_LOCKED activity
to a DISMISS_KEYGUARD activity while the device is trusted.

This change suppresses the jank from going briefly through the
lockscreen if the device is trusted and unlockable without entering
a credential.

Bug: 27410215
Change-Id: Idd86e825d37a89538a0a1f690daf6afcf94a0699
parent d88eb269
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -3562,7 +3562,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {

    @Override
    public boolean canShowDismissingWindowWhileLockedLw() {
        return false;
        // If the keyguard is trusted, it will unlock without a challange. Therefore, windows with
        // FLAG_DISMISS_KEYGUARD don't need to be force hidden, as they will unlock the phone right
        // away anyways.
        return mKeyguardDelegate != null && mKeyguardDelegate.isTrusted();
    }

    private void launchAssistLongPressAction() {
@@ -5261,7 +5264,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                }
            } else if (mDismissKeyguard != DISMISS_KEYGUARD_NONE) {
                mKeyguardHidden = false;
                if (setKeyguardOccludedLw(false)) {
                final boolean trusted = mKeyguardDelegate.isTrusted();
                if (trusted) {
                    // No need to un-occlude keyguard - we'll dimiss it right away anyways.
                } else if (setKeyguardOccludedLw(false)) {
                    changes |= FINISH_LAYOUT_REDO_LAYOUT
                            | FINISH_LAYOUT_REDO_CONFIG
                            | FINISH_LAYOUT_REDO_WALLPAPER;
@@ -5271,7 +5277,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            mKeyguardDelegate.dismiss(false /* allowWhileOccluded */);
                            mKeyguardDelegate.dismiss(trusted /* allowWhileOccluded */);
                        }
                    });
                }