Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d3897ad authored by Dave Mankoff's avatar Dave Mankoff
Browse files

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
parent 59ea1a09
Loading
Loading
Loading
Loading
+27 −22
Original line number Diff line number Diff line
@@ -196,12 +196,11 @@ 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(
@@ -212,15 +211,10 @@ public class BrightLineFalsingManager implements FalsingManager {

            return r;
        }).collect(Collectors.toList());
            booleanResult = localResult[0];
        } else {
            booleanResult = false;
            mPriorResults = Collections.singleton(FalsingClassifier.Result.passed(1));
        }

        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<FalsingClassifier.Result> getPassedResult(double confidence) {
        return Collections.singleton(FalsingClassifier.Result.passed(confidence));
    }

    static void logDebug(String msg) {
        logDebug(msg, null);
    }