diff options
Diffstat (limited to 'packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java')
-rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java | 82 |
1 files changed, 34 insertions, 48 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java index c73149c7a8b9..fbda818740e8 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java @@ -19,7 +19,6 @@ 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; @@ -37,18 +36,38 @@ 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; - mView.setKeyguardCallback(keyguardSecurityCallback); - } - - @Override - public void init() { - super.init(); - mView.reset(); + mKeyguardSecurityCallback = keyguardSecurityCallback; } @Override @@ -63,63 +82,40 @@ 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); - } - - @Override - public void setLockPatternUtils(LockPatternUtils utils) { - mView.setLockPatternUtils(utils); + return mKeyguardSecurityCallback; } @Override public void reset() { - mView.reset(); } @Override public void onPause() { - mView.onPause(); + mPaused = true; } @Override public void onResume(int reason) { - mView.onResume(reason); - } - - @Override - public boolean needsInput() { - return mView.needsInput(); - } - - @Override - public KeyguardSecurityCallback getCallback() { - return mView.getCallback(); + mPaused = false; } @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); } @@ -129,16 +125,6 @@ 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); |