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

Commit 35fbb312 authored by Siarhei Vishniakou's avatar Siarhei Vishniakou
Browse files

Keyguard can be on even if not showing

It is possible for keyguard to be in "restricted input" state even if
isKeyguardShowingAndNotOccluded returns false. The previous CL to
deprecate inKeyguardRestrictedInputMode has also changed the behaviour
of isKeyguardLocked. Return to the old behaviour here, but keep the API
deprecated.

Bug: 70411251
Test: 1) add Google account to phone 2) Enable google assistant and set
up active edge to trigger the assistant 3) Ensure phone is in the
always-on-display mode 4) Squeeze the phone to trigger the assistant.
Previously, the assistant would not launch. The expected behaviour is
that assistant gets launched. Without this change, display will turn on
but the assistant will not get launched.

Change-Id: Ic299f3fc223ebdc3b0f6eea97cb4a89a3142e44a
parent d87c6b51
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
@@ -3392,7 +3392,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    }
    }


    boolean keyguardOn() {
    boolean keyguardOn() {
        return isKeyguardShowingAndNotOccluded();
        return isKeyguardShowingAndNotOccluded() || inKeyguardRestrictedKeyInputMode();
    }
    }


    private static final int[] WINDOW_TYPES_WHERE_HOME_DOESNT_WORK = {
    private static final int[] WINDOW_TYPES_WHERE_HOME_DOESNT_WORK = {
@@ -6934,6 +6934,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        return mKeyguardOccluded;
        return mKeyguardOccluded;
    }
    }


    /** {@inheritDoc} */
    @Override
    public boolean inKeyguardRestrictedKeyInputMode() {
        if (mKeyguardDelegate == null) return false;
        return mKeyguardDelegate.isInputRestricted();
    }

    @Override
    @Override
    public void dismissKeyguardLw(IKeyguardDismissCallback callback) {
    public void dismissKeyguardLw(IKeyguardDismissCallback callback) {
        if (mKeyguardDelegate != null && mKeyguardDelegate.isShowing()) {
        if (mKeyguardDelegate != null && mKeyguardDelegate.isShowing()) {
+11 −0
Original line number Original line Diff line number Diff line
@@ -1359,6 +1359,17 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants {
     */
     */
    public boolean isKeyguardTrustedLw();
    public boolean isKeyguardTrustedLw();


    /**
     * inKeyguardRestrictedKeyInputMode
     *
     * If keyguard screen is showing or in restricted key input mode (i.e. in
     * keyguard password emergency screen). When in such mode, certain keys,
     * such as the Home key and the right soft keys, don't work.
     *
     * @return true if in keyguard restricted input mode.
     */
    public boolean inKeyguardRestrictedKeyInputMode();

    /**
    /**
     * Ask the policy to dismiss the keyguard, if it is currently shown.
     * Ask the policy to dismiss the keyguard, if it is currently shown.
     *
     *
+5 −0
Original line number Original line Diff line number Diff line
@@ -410,6 +410,11 @@ class TestWindowManagerPolicy implements WindowManagerPolicy {
        return false;
        return false;
    }
    }


    @Override
    public boolean inKeyguardRestrictedKeyInputMode() {
        return false;
    }

    @Override
    @Override
    public void dismissKeyguardLw(@Nullable IKeyguardDismissCallback callback) {
    public void dismissKeyguardLw(@Nullable IKeyguardDismissCallback callback) {
    }
    }