Merge "Move face and fingerprint error handling into separate methods." into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-11-05 00:43:49 +00:00
committed by Android (Google) Code Review

View File

@@ -21,6 +21,7 @@ import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_
import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_NAMED_MANAGEMENT_DISCLOSURE; import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_NAMED_MANAGEMENT_DISCLOSURE;
import static android.hardware.biometrics.BiometricFaceConstants.FACE_ACQUIRED_TOO_DARK; import static android.hardware.biometrics.BiometricFaceConstants.FACE_ACQUIRED_TOO_DARK;
import static android.hardware.biometrics.BiometricSourceType.FACE; import static android.hardware.biometrics.BiometricSourceType.FACE;
import static android.hardware.biometrics.BiometricSourceType.FINGERPRINT;
import static android.view.View.GONE; import static android.view.View.GONE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
@@ -74,7 +75,6 @@ import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IBatteryStats; import com.android.internal.app.IBatteryStats;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.ViewClippingUtil;
import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.settingslib.Utils; import com.android.settingslib.Utils;
@@ -188,14 +188,7 @@ public class KeyguardIndicationController {
private KeyguardUpdateMonitorCallback mUpdateMonitorCallback; private KeyguardUpdateMonitorCallback mUpdateMonitorCallback;
private boolean mDozing; private boolean mDozing;
private final ViewClippingUtil.ClippingParameters mClippingParams = private final ScreenLifecycle mScreenLifecycle;
new ViewClippingUtil.ClippingParameters() {
@Override
public boolean shouldFinish(View view) {
return view == mIndicationArea;
}
};
private ScreenLifecycle mScreenLifecycle;
private final ScreenLifecycle.Observer mScreenObserver = private final ScreenLifecycle.Observer mScreenObserver =
new ScreenLifecycle.Observer() { new ScreenLifecycle.Observer() {
@Override @Override
@@ -619,7 +612,6 @@ public class KeyguardIndicationController {
if (mFalsingManager.isFalseTap(LOW_PENALTY)) { if (mFalsingManager.isFalseTap(LOW_PENALTY)) {
return; return;
} }
int currentUserId = getCurrentUser();
mDevicePolicyManager.logoutUser(); mDevicePolicyManager.logoutUser();
}) })
.build(), .build(),
@@ -676,7 +668,7 @@ public class KeyguardIndicationController {
hideTransientIndication(); hideTransientIndication();
} }
updateDeviceEntryIndication(false); updateDeviceEntryIndication(false);
} else if (!visible) { } else {
// If we unlock and return to keyguard quickly, previous error should not be shown // If we unlock and return to keyguard quickly, previous error should not be shown
hideTransientIndication(); hideTransientIndication();
} }
@@ -1078,11 +1070,8 @@ public class KeyguardIndicationController {
final boolean isCoExFaceAcquisitionMessage = final boolean isCoExFaceAcquisitionMessage =
faceAuthSoftError && isUnlockWithFingerprintPossible; faceAuthSoftError && isUnlockWithFingerprintPossible;
if (isCoExFaceAcquisitionMessage && !mCoExFaceAcquisitionMsgIdsToShow.contains(msgId)) { if (isCoExFaceAcquisitionMessage && !mCoExFaceAcquisitionMsgIdsToShow.contains(msgId)) {
if (DEBUG) { debugLog("skip showing msgId=" + msgId + " helpString=" + helpString
Log.d(TAG, "skip showing msgId=" + msgId + " helpString=" + helpString + ", due to co-ex logic");
+ ", due to co-ex logic");
}
return;
} else if (mStatusBarKeyguardViewManager.isBouncerShowing()) { } else if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
mStatusBarKeyguardViewManager.setKeyguardMessage(helpString, mStatusBarKeyguardViewManager.setKeyguardMessage(helpString,
mInitialTextColorState); mInitialTextColorState);
@@ -1122,23 +1111,23 @@ public class KeyguardIndicationController {
@Override @Override
public void onBiometricError(int msgId, String errString, public void onBiometricError(int msgId, String errString,
BiometricSourceType biometricSourceType) { BiometricSourceType biometricSourceType) {
CharSequence deferredFaceMessage = null;
if (biometricSourceType == FACE) { if (biometricSourceType == FACE) {
if (msgId == BiometricFaceConstants.FACE_ERROR_TIMEOUT) { onFaceAuthError(msgId, errString);
deferredFaceMessage = mFaceAcquiredMessageDeferral.getDeferredMessage(); } else if (biometricSourceType == FINGERPRINT) {
if (DEBUG) { onFingerprintAuthError(msgId, errString);
Log.d(TAG, "showDeferredFaceMessage msgId=" + deferredFaceMessage);
}
}
mFaceAcquiredMessageDeferral.reset();
} }
}
if (shouldSuppressBiometricError(msgId, biometricSourceType, mKeyguardUpdateMonitor)) { private void onFaceAuthError(int msgId, String errString) {
if (DEBUG) { CharSequence deferredFaceMessage = null;
Log.d(TAG, "suppressingBiometricError msgId=" + msgId if (msgId == BiometricFaceConstants.FACE_ERROR_TIMEOUT) {
+ " source=" + biometricSourceType); deferredFaceMessage = mFaceAcquiredMessageDeferral.getDeferredMessage();
} debugLog("showDeferredFaceMessage msgId=" + deferredFaceMessage);
} else if (biometricSourceType == FACE && msgId == FaceManager.FACE_ERROR_TIMEOUT) { }
mFaceAcquiredMessageDeferral.reset();
if (shouldSuppressFaceError(msgId, mKeyguardUpdateMonitor)) {
debugLog("suppressingFaceError msgId=" + msgId + " errString= " + errString);
} else if (msgId == FaceManager.FACE_ERROR_TIMEOUT) {
// Co-ex: show deferred message OR nothing // Co-ex: show deferred message OR nothing
if (mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible( if (mKeyguardUpdateMonitor.getCachedIsUnlockWithFingerprintPossible(
KeyguardUpdateMonitor.getCurrentUser())) { KeyguardUpdateMonitor.getCurrentUser())) {
@@ -1153,9 +1142,7 @@ public class KeyguardIndicationController {
} }
// otherwise, don't show any message // otherwise, don't show any message
if (DEBUG) { debugLog("skip showing FACE_ERROR_TIMEOUT due to co-ex logic");
Log.d(TAG, "skip showing FACE_ERROR_TIMEOUT due to co-ex logic");
}
return; return;
} }
@@ -1170,24 +1157,18 @@ public class KeyguardIndicationController {
// suggest swiping up to unlock (try face auth again or swipe up to bouncer) // suggest swiping up to unlock (try face auth again or swipe up to bouncer)
showActionToUnlock(); showActionToUnlock();
} }
} else if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
mStatusBarKeyguardViewManager.setKeyguardMessage(errString, mInitialTextColorState);
} else if (mScreenLifecycle.getScreenState() == SCREEN_ON) {
showBiometricMessage(errString);
} else { } else {
mBiometricErrorMessageToShowOnScreenOn = errString; handleGenericBiometricError(errString);
} }
} }
private boolean shouldSuppressBiometricError(int msgId, private void onFingerprintAuthError(int msgId, String errString) {
BiometricSourceType biometricSourceType, KeyguardUpdateMonitor updateMonitor) { if (shouldSuppressFingerprintError(msgId, mKeyguardUpdateMonitor)) {
if (biometricSourceType == BiometricSourceType.FINGERPRINT) { debugLog("suppressingFingerprintError msgId=" + msgId
return shouldSuppressFingerprintError(msgId, updateMonitor); + " errString= " + errString);
} else {
handleGenericBiometricError(errString);
} }
if (biometricSourceType == FACE) {
return shouldSuppressFaceError(msgId, updateMonitor);
}
return false;
} }
private boolean shouldSuppressFingerprintError(int msgId, private boolean shouldSuppressFingerprintError(int msgId,
@@ -1286,7 +1267,23 @@ public class KeyguardIndicationController {
} }
} }
private StatusBarStateController.StateListener mStatusBarStateListener = private void debugLog(String logMsg) {
if (DEBUG) {
Log.d(TAG, logMsg);
}
}
private void handleGenericBiometricError(String errString) {
if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
mStatusBarKeyguardViewManager.setKeyguardMessage(errString, mInitialTextColorState);
} else if (mScreenLifecycle.getScreenState() == SCREEN_ON) {
showBiometricMessage(errString);
} else {
mBiometricErrorMessageToShowOnScreenOn = errString;
}
}
private final StatusBarStateController.StateListener mStatusBarStateListener =
new StatusBarStateController.StateListener() { new StatusBarStateController.StateListener() {
@Override @Override
public void onStateChanged(int newState) { public void onStateChanged(int newState) {
@@ -1307,7 +1304,7 @@ public class KeyguardIndicationController {
} }
}; };
private KeyguardStateController.Callback mKeyguardStateCallback = private final KeyguardStateController.Callback mKeyguardStateCallback =
new KeyguardStateController.Callback() { new KeyguardStateController.Callback() {
@Override @Override
public void onUnlockedChanged() { public void onUnlockedChanged() {