summaryrefslogtreecommitdiff
path: root/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java')
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java82
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);