Merge "Disable falsing manager when face-authed." into qt-r1-dev

am: 9249d828a1

Change-Id: I6c153ec1809d07b2e5ede1738bacc48e57d7b9cc
This commit is contained in:
Dave Mankoff
2019-08-12 08:41:34 -07:00
committed by android-build-merger
2 changed files with 30 additions and 4 deletions

View File

@@ -26,6 +26,7 @@ import android.provider.DeviceConfig;
import android.view.MotionEvent; import android.view.MotionEvent;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Dependency; import com.android.systemui.Dependency;
import com.android.systemui.classifier.brightline.BrightLineFalsingManager; import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
import com.android.systemui.classifier.brightline.FalsingDataProvider; import com.android.systemui.classifier.brightline.FalsingDataProvider;
@@ -102,7 +103,8 @@ public class FalsingManagerProxy implements FalsingManager {
} else { } else {
mInternalFalsingManager = new BrightLineFalsingManager( mInternalFalsingManager = new BrightLineFalsingManager(
new FalsingDataProvider(context.getResources().getDisplayMetrics()), new FalsingDataProvider(context.getResources().getDisplayMetrics()),
Dependency.get(AsyncSensorManager.class) Dependency.get(AsyncSensorManager.class),
KeyguardUpdateMonitor.getInstance(context)
); );
} }

View File

@@ -23,11 +23,14 @@ import android.hardware.Sensor;
import android.hardware.SensorEvent; import android.hardware.SensorEvent;
import android.hardware.SensorEventListener; import android.hardware.SensorEventListener;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.hardware.biometrics.BiometricSourceType;
import android.net.Uri; import android.net.Uri;
import android.util.Log; import android.util.Log;
import android.view.MotionEvent; import android.view.MotionEvent;
import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.classifier.Classifier; import com.android.systemui.classifier.Classifier;
import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.FalsingManager;
@@ -47,11 +50,13 @@ public class BrightLineFalsingManager implements FalsingManager {
private final SensorManager mSensorManager; private final SensorManager mSensorManager;
private final FalsingDataProvider mDataProvider; private final FalsingDataProvider mDataProvider;
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private boolean mSessionStarted; private boolean mSessionStarted;
private MetricsLogger mMetricsLogger; private MetricsLogger mMetricsLogger;
private int mIsFalseTouchCalls; private int mIsFalseTouchCalls;
private boolean mShowingAod; private boolean mShowingAod;
private boolean mScreenOn; private boolean mScreenOn;
private boolean mJustUnlockedWithFace;
private final ExecutorService mBackgroundExecutor = Executors.newSingleThreadExecutor(); private final ExecutorService mBackgroundExecutor = Executors.newSingleThreadExecutor();
@@ -68,10 +73,27 @@ public class BrightLineFalsingManager implements FalsingManager {
} }
}; };
public BrightLineFalsingManager(FalsingDataProvider falsingDataProvider, private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
SensorManager sensorManager) { new KeyguardUpdateMonitorCallback() {
@Override
public void onBiometricAuthenticated(int userId,
BiometricSourceType biometricSourceType) {
if (userId == KeyguardUpdateMonitor.getCurrentUser()
&& biometricSourceType == BiometricSourceType.FACE) {
mJustUnlockedWithFace = true;
}
}
};
public BrightLineFalsingManager(
FalsingDataProvider falsingDataProvider,
SensorManager sensorManager,
KeyguardUpdateMonitor keyguardUpdateMonitor) {
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mDataProvider = falsingDataProvider; mDataProvider = falsingDataProvider;
mSensorManager = sensorManager; mSensorManager = sensorManager;
mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateCallback);
mMetricsLogger = new MetricsLogger(); mMetricsLogger = new MetricsLogger();
mClassifiers = new ArrayList<>(); mClassifiers = new ArrayList<>();
DistanceClassifier distanceClassifier = new DistanceClassifier(mDataProvider); DistanceClassifier distanceClassifier = new DistanceClassifier(mDataProvider);
@@ -110,6 +132,7 @@ public class BrightLineFalsingManager implements FalsingManager {
if (!mSessionStarted && !mShowingAod && mScreenOn) { if (!mSessionStarted && !mShowingAod && mScreenOn) {
logDebug("Starting Session"); logDebug("Starting Session");
mSessionStarted = true; mSessionStarted = true;
mJustUnlockedWithFace = false;
registerSensors(); registerSensors();
mClassifiers.forEach(FalsingClassifier::onSessionStarted); mClassifiers.forEach(FalsingClassifier::onSessionStarted);
} }
@@ -141,7 +164,7 @@ public class BrightLineFalsingManager implements FalsingManager {
@Override @Override
public boolean isFalseTouch() { public boolean isFalseTouch() {
boolean r = mClassifiers.stream().anyMatch(falsingClassifier -> { boolean r = !mJustUnlockedWithFace && mClassifiers.stream().anyMatch(falsingClassifier -> {
boolean result = falsingClassifier.isFalseTouch(); boolean result = falsingClassifier.isFalseTouch();
if (result) { if (result) {
logInfo(falsingClassifier.getClass().getName() + ": true"); logInfo(falsingClassifier.getClass().getName() + ": true");
@@ -335,6 +358,7 @@ public class BrightLineFalsingManager implements FalsingManager {
@Override @Override
public void cleanup() { public void cleanup() {
unregisterSensors(); unregisterSensors();
mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateCallback);
} }
static void logDebug(String msg) { static void logDebug(String msg) {