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

Commit 0e78c72a authored by Dave Mankoff's avatar Dave Mankoff Committed by Android (Google) Code Review
Browse files

Merge "Ensure that the FalsingManager skips falsing when appropriate." into sc-dev

parents ac431bc0 9d3897ad
Loading
Loading
Loading
Loading
+27 −22
Original line number Original line Diff line number Diff line
@@ -197,12 +197,11 @@ public class BrightLineFalsingManager implements FalsingManager {
    public boolean isFalseTouch(@Classifier.InteractionType int interactionType) {
    public boolean isFalseTouch(@Classifier.InteractionType int interactionType) {
        mPriorInteractionType = interactionType;
        mPriorInteractionType = interactionType;
        if (skipFalsing()) {
        if (skipFalsing()) {
            mPriorResults = getPassedResult(1);
            logDebug("Skipped falsing");
            return false;
            return false;
        }
        }


        final boolean booleanResult;

        if (!mTestHarness && !mDataProvider.isJustUnlockedWithFace() && !mDockManager.isDocked()) {
        final boolean[] localResult = {false};
        final boolean[] localResult = {false};
        mPriorResults = mClassifiers.stream().map(falsingClassifier -> {
        mPriorResults = mClassifiers.stream().map(falsingClassifier -> {
            FalsingClassifier.Result r = falsingClassifier.classifyGesture(
            FalsingClassifier.Result r = falsingClassifier.classifyGesture(
@@ -213,15 +212,10 @@ public class BrightLineFalsingManager implements FalsingManager {


            return r;
            return r;
        }).collect(Collectors.toList());
        }).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
    @Override
@@ -236,6 +230,8 @@ public class BrightLineFalsingManager implements FalsingManager {
    @Override
    @Override
    public boolean isFalseTap(@Penalty int penalty) {
    public boolean isFalseTap(@Penalty int penalty) {
        if (skipFalsing()) {
        if (skipFalsing()) {
            mPriorResults = getPassedResult(1);
            logDebug("Skipped falsing");
            return false;
            return false;
        }
        }


@@ -264,7 +260,7 @@ public class BrightLineFalsingManager implements FalsingManager {
        if (!singleTapResult.isFalse()) {
        if (!singleTapResult.isFalse()) {
            if (mDataProvider.isJustUnlockedWithFace()) {
            if (mDataProvider.isJustUnlockedWithFace()) {
                // Immediately pass if a face is detected.
                // Immediately pass if a face is detected.
                mPriorResults = Collections.singleton(FalsingClassifier.Result.passed(1));
                mPriorResults = getPassedResult(1);
                logDebug("False Single Tap: false (face detected)");
                logDebug("False Single Tap: false (face detected)");
                return false;
                return false;
            } else if (!isFalseDoubleTap()) {
            } else if (!isFalseDoubleTap()) {
@@ -281,7 +277,7 @@ public class BrightLineFalsingManager implements FalsingManager {
                mFalsingTapListeners.forEach(FalsingTapListener::onDoubleTapRequired);
                mFalsingTapListeners.forEach(FalsingTapListener::onDoubleTapRequired);
                return true;
                return true;
            } else {
            } else {
                mPriorResults = Collections.singleton(FalsingClassifier.Result.passed(0.1));
                mPriorResults = getPassedResult(0.1);
                logDebug("False Single Tap: false (default)");
                logDebug("False Single Tap: false (default)");
                return false;
                return false;
            }
            }
@@ -296,6 +292,8 @@ public class BrightLineFalsingManager implements FalsingManager {
    @Override
    @Override
    public boolean isFalseDoubleTap() {
    public boolean isFalseDoubleTap() {
        if (skipFalsing()) {
        if (skipFalsing()) {
            mPriorResults = getPassedResult(1);
            logDebug("Skipped falsing");
            return false;
            return false;
        }
        }


@@ -309,7 +307,10 @@ public class BrightLineFalsingManager implements FalsingManager {
    }
    }


    private boolean skipFalsing() {
    private boolean skipFalsing() {
        return !mKeyguardStateController.isShowing();
        return !mKeyguardStateController.isShowing()
                || mTestHarness
                || mDataProvider.isJustUnlockedWithFace()
                || mDockManager.isDocked();
    }
    }


    @Override
    @Override
@@ -411,6 +412,10 @@ public class BrightLineFalsingManager implements FalsingManager {
        mHistoryTracker.removeBeliefListener(mBeliefListener);
        mHistoryTracker.removeBeliefListener(mBeliefListener);
    }
    }


    private static Collection<FalsingClassifier.Result> getPassedResult(double confidence) {
        return Collections.singleton(FalsingClassifier.Result.passed(confidence));
    }

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