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

Commit b00c9293 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Revert "9/N Clean Up Keyguard Class Structure"

Revert submission 12585643-b166448040-keyguard-message-area

Reason for revert: http://b/169081305 & http://b/169020145
Reverted Changes:
I6fa05012c:4/N Setup Controller fo KeyguardSecurityContainer....
Iecf265744:5/N Add KeyguardSecurityViewFlipperController.
I90ab99b2f:6/N Add Controller for KeyguardPatternView
I4b74eddd1:7/N controllers for remaining Keyguard Password Vi...
I805286374:8/N Remove View Injection from KeyguardMessageArea...
I362755980:9/N Clean Up Keyguard Class Structure

Change-Id: Ic62f199a51a15d8384450b8f181f3c5a0b988d7f
Fixes: 169081305
Fixes: 169020145
parent 7a481c31
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
@@ -17,11 +17,13 @@
package com.android.keyguard;

import android.content.Context;
import android.content.res.ColorStateList;
import android.util.AttributeSet;
import android.view.HapticFeedbackConstants;
import android.view.KeyEvent;
import android.view.View;

import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockscreenCredential;
import com.android.systemui.R;

@@ -29,6 +31,8 @@ import com.android.systemui.R;
 * Base class for PIN and password unlock screens.
 */
public abstract class KeyguardAbsKeyInputView extends KeyguardInputView {
    protected KeyguardSecurityCallback mCallback;
    protected SecurityMessageDisplay mSecurityMessageDisplay;
    protected View mEcaView;
    protected boolean mEnableHaptics;

@@ -49,6 +53,19 @@ public abstract class KeyguardAbsKeyInputView extends KeyguardInputView {
        mEnableHaptics = enableHaptics;
    }

    @Override
    public void setKeyguardCallback(KeyguardSecurityCallback callback) {
        mCallback = callback;
    }

    @Override
    public void setLockPatternUtils(LockPatternUtils utils) {
    }

    @Override
    public void reset() {
    }

    protected abstract int getPasswordTextViewId();
    protected abstract void resetState();

@@ -76,6 +93,29 @@ public abstract class KeyguardAbsKeyInputView extends KeyguardInputView {
        return mKeyDownListener != null && mKeyDownListener.onKeyDown(keyCode, event);
    }

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

    @Override
    public KeyguardSecurityCallback getCallback() {
        return mCallback;
    }

    @Override
    public void showPromptReason(int reason) {

    }

    @Override
    public void showMessage(CharSequence message, ColorStateList colorState) {
        if (colorState != null) {
            mSecurityMessageDisplay.setNextMessageColor(colorState);
        }
        mSecurityMessageDisplay.setMessage(message);
    }

    protected abstract int getPromptReasonStringRes(int reason);

    // Cause a VIRTUAL_KEY vibration
@@ -87,6 +127,11 @@ public abstract class KeyguardAbsKeyInputView extends KeyguardInputView {
        }
    }

    @Override
    public boolean startDisappearAnimation(Runnable finishRunnable) {
        return false;
    }

    public void setKeyDownListener(KeyDownListener keyDownListener) {
        mKeyDownListener = keyDownListener;
    }
+8 −20
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import static com.android.internal.util.LatencyTracker.ACTION_CHECK_CREDENTIAL;
import static com.android.internal.util.LatencyTracker.ACTION_CHECK_CREDENTIAL_UNLOCKED;
import static com.android.keyguard.KeyguardAbsKeyInputView.MINIMUM_PASSWORD_LENGTH_BEFORE_REPORT;

import android.content.res.ColorStateList;
import android.os.AsyncTask;
import android.os.CountDownTimer;
import android.os.SystemClock;
@@ -39,6 +38,7 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
        extends KeyguardInputViewController<T> {
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final LockPatternUtils mLockPatternUtils;
    protected final KeyguardSecurityCallback mKeyguardSecurityCallback;
    private final LatencyTracker mLatencyTracker;
    private CountDownTimer mCountdownTimer;
    protected KeyguardMessageAreaController mMessageAreaController;
@@ -59,7 +59,7 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
    private final EmergencyButtonCallback mEmergencyButtonCallback = new EmergencyButtonCallback() {
        @Override
        public void onEmergencyButtonClickedWhenInCall() {
            getKeyguardSecurityCallback().reset();
            mKeyguardSecurityCallback.reset();
        }
    };

@@ -73,6 +73,7 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
        super(view, securityMode, keyguardSecurityCallback);
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mLockPatternUtils = lockPatternUtils;
        mKeyguardSecurityCallback = keyguardSecurityCallback;
        mLatencyTracker = latencyTracker;
        KeyguardMessageArea kma = KeyguardMessageArea.findSecurityMessageDisplay(mView);
        mMessageAreaController = messageAreaControllerFactory.create(kma);
@@ -111,19 +112,6 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
        }
    }

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

    @Override
    public void showMessage(CharSequence message, ColorStateList colorState) {
        if (colorState != null) {
            mMessageAreaController.setNextMessageColor(colorState);
        }
        mMessageAreaController.setMessage(message);
    }

    // Allow subclasses to override this behavior
    protected boolean shouldLockout(long deadline) {
        return deadline != 0;
@@ -156,14 +144,14 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
    void onPasswordChecked(int userId, boolean matched, int timeoutMs, boolean isValidPassword) {
        boolean dismissKeyguard = KeyguardUpdateMonitor.getCurrentUser() == userId;
        if (matched) {
            getKeyguardSecurityCallback().reportUnlockAttempt(userId, true, 0);
            mKeyguardSecurityCallback.reportUnlockAttempt(userId, true, 0);
            if (dismissKeyguard) {
                mDismissing = true;
                getKeyguardSecurityCallback().dismiss(true, userId);
                mKeyguardSecurityCallback.dismiss(true, userId);
            }
        } else {
            if (isValidPassword) {
                getKeyguardSecurityCallback().reportUnlockAttempt(userId, false, timeoutMs);
                mKeyguardSecurityCallback.reportUnlockAttempt(userId, false, timeoutMs);
                if (timeoutMs > 0) {
                    long deadline = mLockPatternUtils.setLockoutAttemptDeadline(
                            userId, timeoutMs);
@@ -248,8 +236,8 @@ public abstract class KeyguardAbsKeyInputViewController<T extends KeyguardAbsKey
    }

    protected void onUserInput() {
        getKeyguardSecurityCallback().userActivity();
        getKeyguardSecurityCallback().onUserInput();
        mKeyguardSecurityCallback.userActivity();
        mKeyguardSecurityCallback.onUserInput();
        mMessageAreaController.setMessage("");
    }

+1 −14
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.keyguard;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.LinearLayout;

import androidx.annotation.Nullable;
@@ -26,7 +25,7 @@ import androidx.annotation.Nullable;
/**
 * A Base class for all Keyguard password/pattern/pin related inputs.
 */
public abstract class KeyguardInputView extends LinearLayout {
public abstract class KeyguardInputView extends LinearLayout implements KeyguardSecurityView {

    public KeyguardInputView(Context context) {
        super(context);
@@ -40,16 +39,4 @@ public abstract class KeyguardInputView extends LinearLayout {
    public KeyguardInputView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    abstract CharSequence getTitle();

    boolean disallowInterceptTouch(MotionEvent event) {
        return false;
    }

    void startAppearAnimation() {}

    boolean startDisappearAnimation(Runnable finishRunnable) {
        return false;
    }
}
+48 −34
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.keyguard;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.telephony.TelephonyManager;
import android.view.MotionEvent;
import android.view.inputmethod.InputMethodManager;

import com.android.internal.util.LatencyTracker;
@@ -36,38 +37,18 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
        extends ViewController<T> implements KeyguardSecurityView {

    private final SecurityMode mSecurityMode;
    private final KeyguardSecurityCallback mKeyguardSecurityCallback;
    private boolean mPaused;


    // The following is used to ignore callbacks from SecurityViews that are no longer current
    // (e.g. face unlock). This avoids unwanted asynchronous events from messing with the
    // state for the current security method.
    private KeyguardSecurityCallback mNullCallback = new KeyguardSecurityCallback() {
        @Override
        public void userActivity() { }
        @Override
        public void reportUnlockAttempt(int userId, boolean success, int timeoutMs) { }
        @Override
        public boolean isVerifyUnlockOnly() {
            return false;
        }
        @Override
        public void dismiss(boolean securityVerified, int targetUserId) { }
        @Override
        public void dismiss(boolean authenticated, int targetId,
                boolean bypassSecondaryLockScreen) { }
        @Override
        public void onUserInput() { }
        @Override
        public void reset() {}
    };

    protected KeyguardInputViewController(T view, SecurityMode securityMode,
            KeyguardSecurityCallback keyguardSecurityCallback) {
        super(view);
        mSecurityMode = securityMode;
        mKeyguardSecurityCallback = keyguardSecurityCallback;
        mView.setKeyguardCallback(keyguardSecurityCallback);
    }

    @Override
    public void init() {
        super.init();
        mView.reset();
    }

    @Override
@@ -82,40 +63,63 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
        return mSecurityMode;
    }

    protected KeyguardSecurityCallback getKeyguardSecurityCallback() {
        if (mPaused) {
            return mNullCallback;

    @Override
    public void setKeyguardCallback(KeyguardSecurityCallback callback) {
        mView.setKeyguardCallback(callback);
    }

        return mKeyguardSecurityCallback;
    @Override
    public void setLockPatternUtils(LockPatternUtils utils) {
        mView.setLockPatternUtils(utils);
    }

    @Override
    public void reset() {
        mView.reset();
    }

    @Override
    public void onPause() {
        mPaused = true;
        mView.onPause();
    }

    @Override
    public void onResume(int reason) {
        mPaused = false;
        mView.onResume(reason);
    }

    @Override
    public boolean needsInput() {
        return mView.needsInput();
    }

    @Override
    public KeyguardSecurityCallback getCallback() {
        return mView.getCallback();
    }

    @Override
    public void showPromptReason(int reason) {
        mView.showPromptReason(reason);
    }

    @Override
    public void showMessage(CharSequence message, ColorStateList colorState) {
        mView.showMessage(message, colorState);
    }

    @Override
    public void showUsabilityHint() {
        mView.showUsabilityHint();
    }

    @Override
    public void startAppearAnimation() {
        mView.startAppearAnimation();
    }

    @Override
    public boolean startDisappearAnimation(Runnable finishRunnable) {
        return mView.startDisappearAnimation(finishRunnable);
    }
@@ -125,6 +129,16 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView>
        return mView.getTitle();
    }

    @Override
    public boolean disallowInterceptTouch(MotionEvent event) {
        return mView.disallowInterceptTouch(event);
    }

    @Override
    public void onStartingToHide() {
        mView.onStartingToHide();
    }

    /** Finds the index of this view in the suppplied parent view. */
    public int getIndexIn(KeyguardSecurityViewFlipper view) {
        return view.indexOfChild(mView);
+27 −0
Original line number Diff line number Diff line
@@ -103,6 +103,28 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
                new View[]{
                        null, mEcaView, null
                }};

        View cancelBtn = findViewById(R.id.cancel_button);
        if (cancelBtn != null) {
            cancelBtn.setOnClickListener(view -> {
                mCallback.reset();
                mCallback.onCancelClicked();
            });
        }
    }

    @Override
    public void onPause() {

    }

    @Override
    public void onResume(int reason) {

    }

    @Override
    public void showUsabilityHint() {
    }

    @Override
@@ -126,6 +148,11 @@ public class KeyguardPINView extends KeyguardPinBasedInputView {
                });
    }

    @Override
    public boolean startDisappearAnimation(final Runnable finishRunnable) {
        return false;
    }

    public boolean startDisappearAnimation(boolean needsSlowUnlockTransition,
            final Runnable finishRunnable) {

Loading