Loading packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +29 −4 Original line number Diff line number Diff line Loading @@ -111,7 +111,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private static final int MSG_DEVICE_PROVISIONED = 308; private static final int MSG_DPM_STATE_CHANGED = 309; private static final int MSG_USER_SWITCHING = 310; private static final int MSG_KEYGUARD_VISIBILITY_CHANGED = 312; private static final int MSG_KEYGUARD_VISIBILITY_CHANGED = 311; private static final int MSG_KEYGUARD_RESET = 312; private static final int MSG_BOOT_COMPLETED = 313; private static final int MSG_USER_SWITCH_COMPLETE = 314; private static final int MSG_USER_INFO_CHANGED = 317; Loading @@ -135,6 +136,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private boolean mKeyguardIsVisible; private boolean mBouncer; private boolean mBootCompleted; private boolean mUserHasAuthenticatedSinceBoot; // Device provisioning state private boolean mDeviceProvisioned; Loading Loading @@ -194,6 +196,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { case MSG_KEYGUARD_VISIBILITY_CHANGED: handleKeyguardVisibilityChanged(msg.arg1); break; case MSG_KEYGUARD_RESET: handleKeyguardReset(); break; case MSG_KEYGUARD_BOUNCER_CHANGED: handleKeyguardBouncerChanged(msg.arg1); break; Loading Loading @@ -497,7 +502,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } public boolean getUserCanSkipBouncer(int userId) { return getUserHasTrust(userId) || mUserFingerprintAuthenticated.get(userId); return getUserHasTrust(userId) || (mUserFingerprintAuthenticated.get(userId) && isUnlockingWithFingerprintAllowed()); } public boolean getUserHasTrust(int userId) { Loading @@ -508,6 +514,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { return mUserTrustIsManaged.get(userId) && !isTrustDisabled(userId); } public boolean isUnlockingWithFingerprintAllowed() { return mUserHasAuthenticatedSinceBoot; } static class DisplayClientState { public int clientGeneration; public boolean clearing; Loading Loading @@ -867,14 +877,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private boolean shouldListenForFingerprint() { return mKeyguardIsVisible && !mSwitchingUser && mTrustManager.hasUserAuthenticatedSinceBoot(ActivityManager.getCurrentUser()); return mKeyguardIsVisible && !mSwitchingUser; } private void startListeningForFingerprint() { if (DEBUG) Log.v(TAG, "startListeningForFingerprint()"); int userId = ActivityManager.getCurrentUser(); if (isUnlockWithFingerPrintPossible(userId)) { mUserHasAuthenticatedSinceBoot = mTrustManager.hasUserAuthenticatedSinceBoot( ActivityManager.getCurrentUser()); if (mFingerprintCancelSignal != null) { mFingerprintCancelSignal.cancel(); } Loading Loading @@ -1167,6 +1178,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { updateFingerprintListeningState(); } /** * Handle {@link #MSG_KEYGUARD_RESET} */ private void handleKeyguardReset() { if (DEBUG) Log.d(TAG, "handleKeyguardReset"); if (!isUnlockingWithFingerprintAllowed()) { updateFingerprintListeningState(); } } /** * Handle {@link #MSG_KEYGUARD_BOUNCER_CHANGED} * @see #sendKeyguardBouncerChanged(boolean) Loading Loading @@ -1274,6 +1295,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { message.sendToTarget(); } public void sendKeyguardReset() { mHandler.obtainMessage(MSG_KEYGUARD_RESET).sendToTarget(); } /** * @see #handleKeyguardBouncerChanged(int) */ Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +3 −1 Original line number Diff line number Diff line Loading @@ -461,7 +461,9 @@ public class KeyguardViewMediator extends SystemUI { @Override public void onFingerprintAuthenticated(int userId, boolean wakeAndUnlocking) { if (mStatusBarKeyguardViewManager.isBouncerShowing()) { if (mUpdateMonitor.isUnlockingWithFingerprintAllowed()) { mStatusBarKeyguardViewManager.notifyKeyguardAuthenticated(); } } else { if (wakeAndUnlocking) { mWakeAndUnlocking = true; Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +6 −0 Original line number Diff line number Diff line Loading @@ -659,6 +659,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL @Override public void onFingerprintHelp(int msgId, String helpString) { if (!KeyguardUpdateMonitor.getInstance(mContext).isUnlockingWithFingerprintAllowed()) { return; } mLockIcon.setTransientFpError(true); mIndicationController.showTransientIndication(helpString, getResources().getColor(R.color.system_warning_color, null)); Loading @@ -668,6 +671,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL @Override public void onFingerprintError(int msgId, String errString) { if (!KeyguardUpdateMonitor.getInstance(mContext).isUnlockingWithFingerprintAllowed()) { return; } // TODO: Go to bouncer if this is "too many attempts" (lockout) error. mIndicationController.showTransientIndication(errString, getResources().getColor(R.color.system_warning_color, null)); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java +4 −3 Original line number Diff line number Diff line Loading @@ -224,13 +224,14 @@ public class LockIcon extends KeyguardAffordanceView { } private int getState() { boolean fingerprintRunning = KeyguardUpdateMonitor.getInstance(mContext).isFingerprintDetectionRunning(); KeyguardUpdateMonitor updateMonitor = KeyguardUpdateMonitor.getInstance(mContext); boolean fingerprintRunning = updateMonitor.isFingerprintDetectionRunning(); boolean unlockingAllowed = updateMonitor.isUnlockingWithFingerprintAllowed(); if (mUnlockMethodCache.canSkipBouncer()) { return STATE_LOCK_OPEN; } else if (mTransientFpError) { return STATE_FINGERPRINT_ERROR; } else if (fingerprintRunning) { } else if (fingerprintRunning && unlockingAllowed) { return STATE_FINGERPRINT; } else if (mUnlockMethodCache.isFaceUnlockRunning()) { return STATE_FACE_UNLOCK; Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +1 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,7 @@ public class StatusBarKeyguardViewManager { } else { showBouncerOrKeyguard(); } KeyguardUpdateMonitor.getInstance(mContext).sendKeyguardReset(); updateStates(); } } Loading Loading
packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +29 −4 Original line number Diff line number Diff line Loading @@ -111,7 +111,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private static final int MSG_DEVICE_PROVISIONED = 308; private static final int MSG_DPM_STATE_CHANGED = 309; private static final int MSG_USER_SWITCHING = 310; private static final int MSG_KEYGUARD_VISIBILITY_CHANGED = 312; private static final int MSG_KEYGUARD_VISIBILITY_CHANGED = 311; private static final int MSG_KEYGUARD_RESET = 312; private static final int MSG_BOOT_COMPLETED = 313; private static final int MSG_USER_SWITCH_COMPLETE = 314; private static final int MSG_USER_INFO_CHANGED = 317; Loading @@ -135,6 +136,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private boolean mKeyguardIsVisible; private boolean mBouncer; private boolean mBootCompleted; private boolean mUserHasAuthenticatedSinceBoot; // Device provisioning state private boolean mDeviceProvisioned; Loading Loading @@ -194,6 +196,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { case MSG_KEYGUARD_VISIBILITY_CHANGED: handleKeyguardVisibilityChanged(msg.arg1); break; case MSG_KEYGUARD_RESET: handleKeyguardReset(); break; case MSG_KEYGUARD_BOUNCER_CHANGED: handleKeyguardBouncerChanged(msg.arg1); break; Loading Loading @@ -497,7 +502,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } public boolean getUserCanSkipBouncer(int userId) { return getUserHasTrust(userId) || mUserFingerprintAuthenticated.get(userId); return getUserHasTrust(userId) || (mUserFingerprintAuthenticated.get(userId) && isUnlockingWithFingerprintAllowed()); } public boolean getUserHasTrust(int userId) { Loading @@ -508,6 +514,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { return mUserTrustIsManaged.get(userId) && !isTrustDisabled(userId); } public boolean isUnlockingWithFingerprintAllowed() { return mUserHasAuthenticatedSinceBoot; } static class DisplayClientState { public int clientGeneration; public boolean clearing; Loading Loading @@ -867,14 +877,15 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } private boolean shouldListenForFingerprint() { return mKeyguardIsVisible && !mSwitchingUser && mTrustManager.hasUserAuthenticatedSinceBoot(ActivityManager.getCurrentUser()); return mKeyguardIsVisible && !mSwitchingUser; } private void startListeningForFingerprint() { if (DEBUG) Log.v(TAG, "startListeningForFingerprint()"); int userId = ActivityManager.getCurrentUser(); if (isUnlockWithFingerPrintPossible(userId)) { mUserHasAuthenticatedSinceBoot = mTrustManager.hasUserAuthenticatedSinceBoot( ActivityManager.getCurrentUser()); if (mFingerprintCancelSignal != null) { mFingerprintCancelSignal.cancel(); } Loading Loading @@ -1167,6 +1178,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { updateFingerprintListeningState(); } /** * Handle {@link #MSG_KEYGUARD_RESET} */ private void handleKeyguardReset() { if (DEBUG) Log.d(TAG, "handleKeyguardReset"); if (!isUnlockingWithFingerprintAllowed()) { updateFingerprintListeningState(); } } /** * Handle {@link #MSG_KEYGUARD_BOUNCER_CHANGED} * @see #sendKeyguardBouncerChanged(boolean) Loading Loading @@ -1274,6 +1295,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { message.sendToTarget(); } public void sendKeyguardReset() { mHandler.obtainMessage(MSG_KEYGUARD_RESET).sendToTarget(); } /** * @see #handleKeyguardBouncerChanged(int) */ Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +3 −1 Original line number Diff line number Diff line Loading @@ -461,7 +461,9 @@ public class KeyguardViewMediator extends SystemUI { @Override public void onFingerprintAuthenticated(int userId, boolean wakeAndUnlocking) { if (mStatusBarKeyguardViewManager.isBouncerShowing()) { if (mUpdateMonitor.isUnlockingWithFingerprintAllowed()) { mStatusBarKeyguardViewManager.notifyKeyguardAuthenticated(); } } else { if (wakeAndUnlocking) { mWakeAndUnlocking = true; Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +6 −0 Original line number Diff line number Diff line Loading @@ -659,6 +659,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL @Override public void onFingerprintHelp(int msgId, String helpString) { if (!KeyguardUpdateMonitor.getInstance(mContext).isUnlockingWithFingerprintAllowed()) { return; } mLockIcon.setTransientFpError(true); mIndicationController.showTransientIndication(helpString, getResources().getColor(R.color.system_warning_color, null)); Loading @@ -668,6 +671,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL @Override public void onFingerprintError(int msgId, String errString) { if (!KeyguardUpdateMonitor.getInstance(mContext).isUnlockingWithFingerprintAllowed()) { return; } // TODO: Go to bouncer if this is "too many attempts" (lockout) error. mIndicationController.showTransientIndication(errString, getResources().getColor(R.color.system_warning_color, null)); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java +4 −3 Original line number Diff line number Diff line Loading @@ -224,13 +224,14 @@ public class LockIcon extends KeyguardAffordanceView { } private int getState() { boolean fingerprintRunning = KeyguardUpdateMonitor.getInstance(mContext).isFingerprintDetectionRunning(); KeyguardUpdateMonitor updateMonitor = KeyguardUpdateMonitor.getInstance(mContext); boolean fingerprintRunning = updateMonitor.isFingerprintDetectionRunning(); boolean unlockingAllowed = updateMonitor.isUnlockingWithFingerprintAllowed(); if (mUnlockMethodCache.canSkipBouncer()) { return STATE_LOCK_OPEN; } else if (mTransientFpError) { return STATE_FINGERPRINT_ERROR; } else if (fingerprintRunning) { } else if (fingerprintRunning && unlockingAllowed) { return STATE_FINGERPRINT; } else if (mUnlockMethodCache.isFaceUnlockRunning()) { return STATE_FACE_UNLOCK; Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +1 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,7 @@ public class StatusBarKeyguardViewManager { } else { showBouncerOrKeyguard(); } KeyguardUpdateMonitor.getInstance(mContext).sendKeyguardReset(); updateStates(); } } Loading