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

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

Don't check the keyguard PIN a second time

If you tap the enter key twice on the keyguard PIN entry
screen, the second tap can sometimes register because keyguard
hasn't been dismissed yet.  The fix is to ignore a second attempt
after the PIN has already been verified.

Fixes bug 19216025

Change-Id: I73a004e91e43f3da65ec84f90de6943e717d737f
parent 01c5bf54
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
    protected SecurityMessageDisplay mSecurityMessageDisplay;
    protected View mEcaView;
    protected boolean mEnableHaptics;
    private boolean mDismissing;

    // To avoid accidental lockout due to events while the device in in the pocket, ignore
    // any passwords with length less than or equal to this length.
@@ -67,6 +68,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
    @Override
    public void reset() {
        // start fresh
        mDismissing = false;
        resetPasswordText(false /* animate */);
        // if the user is currently locked out, enforce it.
        long deadline = mLockPatternUtils.getLockoutAttemptDeadline(
@@ -113,6 +115,8 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
    }

    protected void verifyPasswordAndUnlock() {
        if (mDismissing) return; // already verified but haven't been dismissed; don't do it again.

        final String entry = getPasswordText();
        setPasswordEntryInputEnabled(false);
        if (mPendingLockCheck != null) {
@@ -143,6 +147,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout

    private void onPasswordChecked(boolean matched, int timeoutMs, boolean isValidPassword) {
        if (matched) {
            mDismissing = true;
            mCallback.reportUnlockAttempt(true, 0);
            mCallback.dismiss(true);
        } else {
+5 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView
        return mPasswordEntry.requestFocus(direction, previouslyFocusedRect);
    }

    @Override
    protected void resetState() {
        mPasswordEntry.setEnabled(true);
    }
@@ -69,11 +70,13 @@ public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView
    @Override
    protected void setPasswordEntryEnabled(boolean enabled) {
        mPasswordEntry.setEnabled(enabled);
        mOkButton.setEnabled(enabled);
    }

    @Override
    protected void setPasswordEntryInputEnabled(boolean enabled) {
        mPasswordEntry.setEnabled(enabled);
        mOkButton.setEnabled(enabled);
    }

    @Override
@@ -186,6 +189,7 @@ public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView
        mDeleteButton = findViewById(R.id.delete_button);
        mDeleteButton.setVisibility(View.VISIBLE);
        mDeleteButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // check for time-based lockouts
                if (mPasswordEntry.isEnabled()) {
@@ -195,6 +199,7 @@ public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView
            }
        });
        mDeleteButton.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                // check for time-based lockouts
                if (mPasswordEntry.isEnabled()) {