Merge "Move face and fingerprint error handling into separate methods." into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
dc72403d54
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user