Assume all touches are valid after face auth
Biometric authentication is a strong user presense signal. Let's factor it into FalsingManager. Fixes: 132094802 Test: manual Change-Id: I799a07040faffa41e0990ada7cb73022e53315a3
This commit is contained in:
@@ -22,6 +22,7 @@ import android.hardware.Sensor;
|
||||
import android.hardware.SensorEvent;
|
||||
import android.hardware.SensorEventListener;
|
||||
import android.hardware.SensorManager;
|
||||
import android.hardware.biometrics.BiometricSourceType;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
@@ -33,6 +34,8 @@ import android.view.MotionEvent;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.UiOffloadThread;
|
||||
import com.android.systemui.analytics.DataCollector;
|
||||
@@ -80,6 +83,7 @@ public class FalsingManagerImpl implements FalsingManagerFactory.FalsingManager
|
||||
private boolean mBouncerOffOnDown = false;
|
||||
private boolean mSessionActive = false;
|
||||
private boolean mIsTouchScreen = true;
|
||||
private boolean mJustUnlockedWithFace = false;
|
||||
private int mState = StatusBarState.SHADE;
|
||||
private boolean mScreenOn;
|
||||
private boolean mShowingAod;
|
||||
@@ -120,6 +124,17 @@ public class FalsingManagerImpl implements FalsingManagerFactory.FalsingManager
|
||||
updateConfiguration();
|
||||
}
|
||||
};
|
||||
private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
|
||||
new KeyguardUpdateMonitorCallback() {
|
||||
@Override
|
||||
public void onBiometricAuthenticated(int userId,
|
||||
BiometricSourceType biometricSourceType) {
|
||||
if (userId == KeyguardUpdateMonitor.getCurrentUser()
|
||||
&& biometricSourceType == BiometricSourceType.FACE) {
|
||||
mJustUnlockedWithFace = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
FalsingManagerImpl(Context context) {
|
||||
mContext = context;
|
||||
@@ -138,6 +153,7 @@ public class FalsingManagerImpl implements FalsingManagerFactory.FalsingManager
|
||||
|
||||
updateConfiguration();
|
||||
Dependency.get(StatusBarStateController.class).addCallback(mStatusBarStateListener);
|
||||
KeyguardUpdateMonitor.getInstance(context).registerCallback(mKeyguardUpdateCallback);
|
||||
}
|
||||
|
||||
private void updateConfiguration() {
|
||||
@@ -199,6 +215,7 @@ public class FalsingManagerImpl implements FalsingManagerFactory.FalsingManager
|
||||
}
|
||||
mBouncerOn = false;
|
||||
mSessionActive = true;
|
||||
mJustUnlockedWithFace = false;
|
||||
mIsFalseTouchCalls = 0;
|
||||
|
||||
if (mHumanInteractionClassifier.isEnabled()) {
|
||||
@@ -285,6 +302,11 @@ public class FalsingManagerImpl implements FalsingManagerFactory.FalsingManager
|
||||
// anti-falsed.
|
||||
return false;
|
||||
}
|
||||
if (mJustUnlockedWithFace) {
|
||||
// Unlocking with face is a strong user presence signal, we can assume the user
|
||||
// is present until the next session starts.
|
||||
return false;
|
||||
}
|
||||
mIsFalseTouchCalls++;
|
||||
boolean isFalse = mHumanInteractionClassifier.isFalseTouch();
|
||||
if (!isFalse) {
|
||||
|
||||
Reference in New Issue
Block a user