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

Commit e5f17ab5 authored by Jim Miller's avatar Jim Miller
Browse files

Report keyguard as initially showing and secure until we know

This fixes a bug where an app calls KeyguardManager.isLocked()
before keyguard has had a chance to show.  The fix is to assume
keyguard is showing and secure until we know otherwise.

Fixes bug 11670159

Change-Id: Ifbe4cdf40e3b76d2069ecace940f85fa58f31187
parent c641de01
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -200,7 +200,7 @@ public class KeyguardViewMediator {

    // cached value of whether we are showing (need to know this to quickly
    // answer whether the input should be restricted)
    private boolean mShowing = false;
    private boolean mShowing;

    // true if the keyguard is hidden by another window
    private boolean mHidden = false;
@@ -508,6 +508,9 @@ public class KeyguardViewMediator {
                ? lockPatternUtils : new LockPatternUtils(mContext);
        mLockPatternUtils.setCurrentUser(UserHandle.USER_OWNER);

        // Assume keyguard is showing (unless it's disabled) until we know for sure...
        mShowing = !mLockPatternUtils.isLockScreenDisabled();

        WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);

        mKeyguardViewManager = new KeyguardViewManager(context, wm, mViewMediatorCallback,
+8 −0
Original line number Diff line number Diff line
@@ -40,6 +40,14 @@ public class KeyguardServiceDelegate {
    private KeyguardState mKeyguardState = new KeyguardState();

    /* package */ static final class KeyguardState {
        KeyguardState() {
            // Assume keyguard is showing and secure until we know for sure. This is here in
            // the event something checks before the service is actually started.
            // KeyguardService itself should default to this state until the real state is known.
            showing = true;
            showingAndNotHidden = true;
            secure = true;
        }
        boolean showing;
        boolean showingAndNotHidden;
        boolean inputRestricted;