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

Commit de26ea65 authored by Xiyuan Xia's avatar Xiyuan Xia
Browse files

Do not show soft keyboard when locked out on keyguard UI

- Split password entry enabled and input enabled into two states;
- Disable input during lock check;
- Disable password entry when locked out;
- Don't show soft keyboard if password entry is disabled on resume;
- Auto show soft keyboard when password entry becomes enabled;

Bug:20542149
Change-Id: Iffe3f205776143ac21e25e337d5b7a0e6994ebf2
parent 8e9d7d55
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout

    protected void verifyPasswordAndUnlock() {
        final String entry = getPasswordText();
        setPasswordEntryEnabled(false);
        setPasswordEntryInputEnabled(false);
        if (mPendingLockCheck != null) {
            mPendingLockCheck.cancel(false);
        }
@@ -121,7 +121,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
                new LockPatternChecker.OnCheckCallback() {
                    @Override
                    public void onChecked(boolean matched) {
                        setPasswordEntryEnabled(true);
                        setPasswordEntryInputEnabled(true);
                        mPendingLockCheck = null;
                        onPasswordChecked(entry, matched);
                    }
@@ -152,6 +152,7 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
    protected abstract void resetPasswordText(boolean animate);
    protected abstract String getPasswordText();
    protected abstract void setPasswordEntryEnabled(boolean enabled);
    protected abstract void setPasswordEntryInputEnabled(boolean enabled);

    // Prevent user from using the PIN/Password entry until scheduled deadline.
    protected void handleAttemptLockout(long elapsedRealtimeDeadline) {
+11 −1
Original line number Diff line number Diff line
@@ -74,7 +74,12 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView

    protected void resetState() {
        mSecurityMessageDisplay.setMessage(R.string.kg_password_instructions, false);
        final boolean wasDisabled = mPasswordEntry.isEnabled();
        setPasswordEntryEnabled(true);
        setPasswordEntryInputEnabled(true);
        if (wasDisabled) {
            mImm.showSoftInput(mPasswordEntry, InputMethodManager.SHOW_IMPLICIT);
        }
    }

    @Override
@@ -95,7 +100,7 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView
        post(new Runnable() {
            @Override
            public void run() {
                if (isShown()) {
                if (isShown() && mPasswordEntry.isEnabled()) {
                    mPasswordEntry.requestFocus();
                    if (reason != KeyguardSecurityView.SCREEN_ON || mShowImeAtScreenOn) {
                        mImm.showSoftInput(mPasswordEntry, InputMethodManager.SHOW_IMPLICIT);
@@ -190,6 +195,11 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView

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

    @Override
    protected void setPasswordEntryInputEnabled(boolean enabled) {
        mPasswordEntryDisabler.setInputEnabled(enabled);
    }

+5 −0
Original line number Diff line number Diff line
@@ -71,6 +71,11 @@ public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView
        mPasswordEntry.setEnabled(enabled);
    }

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

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (KeyEvent.isConfirmKey(keyCode)) {