From 9d3897adf5ba687f43299e3f1aa4ce045af15509 Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Fri, 23 Apr 2021 12:01:37 -0400 Subject: Ensure that the FalsingManager skips falsing when appropriate. Copies the logic from isFalseTouch to isFalseTap and isFalseDoubleTap. Fixes: 186218339 Test: atest SystemUITests && manual Change-Id: Ic0fdcc9880eaaf3597beee9f0fa634dc49214fbd --- .../classifier/BrightLineFalsingManager.java | 49 ++++++++++++---------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java index 01d59597197c..85321bfbca47 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java @@ -196,31 +196,25 @@ public class BrightLineFalsingManager implements FalsingManager { public boolean isFalseTouch(@Classifier.InteractionType int interactionType) { mPriorInteractionType = interactionType; if (skipFalsing()) { + mPriorResults = getPassedResult(1); + logDebug("Skipped falsing"); return false; } - final boolean booleanResult; - - if (!mTestHarness && !mDataProvider.isJustUnlockedWithFace() && !mDockManager.isDocked()) { - final boolean[] localResult = {false}; - mPriorResults = mClassifiers.stream().map(falsingClassifier -> { - FalsingClassifier.Result r = falsingClassifier.classifyGesture( - interactionType, - mHistoryTracker.falseBelief(), - mHistoryTracker.falseConfidence()); - localResult[0] |= r.isFalse(); + final boolean[] localResult = {false}; + mPriorResults = mClassifiers.stream().map(falsingClassifier -> { + FalsingClassifier.Result r = falsingClassifier.classifyGesture( + interactionType, + mHistoryTracker.falseBelief(), + mHistoryTracker.falseConfidence()); + localResult[0] |= r.isFalse(); - return r; - }).collect(Collectors.toList()); - booleanResult = localResult[0]; - } else { - booleanResult = false; - mPriorResults = Collections.singleton(FalsingClassifier.Result.passed(1)); - } + return r; + }).collect(Collectors.toList()); - logDebug("False Gesture: " + booleanResult); + logDebug("False Gesture: " + localResult[0]); - return booleanResult; + return localResult[0]; } @Override @@ -235,6 +229,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTap(@Penalty int penalty) { if (skipFalsing()) { + mPriorResults = getPassedResult(1); + logDebug("Skipped falsing"); return false; } @@ -263,7 +259,7 @@ public class BrightLineFalsingManager implements FalsingManager { if (!singleTapResult.isFalse()) { if (mDataProvider.isJustUnlockedWithFace()) { // Immediately pass if a face is detected. - mPriorResults = Collections.singleton(FalsingClassifier.Result.passed(1)); + mPriorResults = getPassedResult(1); logDebug("False Single Tap: false (face detected)"); return false; } else if (!isFalseDoubleTap()) { @@ -279,7 +275,7 @@ public class BrightLineFalsingManager implements FalsingManager { logDebug("False Single Tap: true (bad history)"); return true; } else { - mPriorResults = Collections.singleton(FalsingClassifier.Result.passed(0.1)); + mPriorResults = getPassedResult(0.1); logDebug("False Single Tap: false (default)"); return false; } @@ -294,6 +290,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseDoubleTap() { if (skipFalsing()) { + mPriorResults = getPassedResult(1); + logDebug("Skipped falsing"); return false; } @@ -307,7 +305,10 @@ public class BrightLineFalsingManager implements FalsingManager { } private boolean skipFalsing() { - return !mKeyguardStateController.isShowing(); + return !mKeyguardStateController.isShowing() + || mTestHarness + || mDataProvider.isJustUnlockedWithFace() + || mDockManager.isDocked(); } @Override @@ -399,6 +400,10 @@ public class BrightLineFalsingManager implements FalsingManager { mHistoryTracker.removeBeliefListener(mBeliefListener); } + private static Collection getPassedResult(double confidence) { + return Collections.singleton(FalsingClassifier.Result.passed(confidence)); + } + static void logDebug(String msg) { logDebug(msg, null); } -- cgit v1.2.3-59-g8ed1b