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

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

Merge changes from topic "b172655679-bayes-falsing" into sc-dev

* changes:
  Rely on a falsing-belief event to reset lockscreen
  Track Falsing on Notification Taps.
parents ec340e7e 39ed7729
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -95,4 +95,15 @@ public interface FalsingManager {

    /** Call to report a ProximityEvent to the FalsingManager. */
    void onProximityEvent(ThresholdSensor.ThresholdSensorEvent proximityEvent);

    /** Adds a {@link FalsingBeliefListener}. */
    void addFalsingBeliefListener(FalsingBeliefListener listener);

    /** Removes a {@link FalsingBeliefListener}. */
    void removeFalsingBeliefListener(FalsingBeliefListener listener);

    /** Listener that is alerted when falsing belief level crosses a predfined threshold. */
    interface FalsingBeliefListener {
        void onFalse();
    }
}
+4 −22
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode;
import com.android.keyguard.dagger.KeyguardBouncerScope;
import com.android.settingslib.utils.ThreadUtils;
import com.android.systemui.Gefingerpoken;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -74,8 +73,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
    private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController;
    private final SecurityCallback mSecurityCallback;
    private final ConfigurationController mConfigurationController;
    private final KeyguardViewController mKeyguardViewController;
    private final FalsingManager mFalsingManager;

    private SecurityMode mCurrentSecurityMode = SecurityMode.Invalid;

@@ -97,13 +94,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
                }
                mTouchDown = MotionEvent.obtain(ev);
            } else if (mTouchDown != null) {
                boolean tapResult = mFalsingManager.isFalseTap(true, 0.6);
                if (tapResult
                        || ev.getActionMasked() == MotionEvent.ACTION_UP
                if (ev.getActionMasked() == MotionEvent.ACTION_UP
                        || ev.getActionMasked() == MotionEvent.ACTION_CANCEL) {
                    if (tapResult) {
                        mKeyguardViewController.reset(true);
                    }
                    mTouchDown.recycle();
                    mTouchDown = null;
                }
@@ -207,9 +199,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
            KeyguardStateController keyguardStateController,
            SecurityCallback securityCallback,
            KeyguardSecurityViewFlipperController securityViewFlipperController,
            ConfigurationController configurationController,
            KeyguardViewController keyguardViewController,
            FalsingManager falsingManager) {
            ConfigurationController configurationController) {
        super(view);
        mLockPatternUtils = lockPatternUtils;
        mUpdateMonitor = keyguardUpdateMonitor;
@@ -222,8 +212,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        mAdminSecondaryLockScreenController = adminSecondaryLockScreenControllerFactory.create(
                mKeyguardSecurityCallback);
        mConfigurationController = configurationController;
        mKeyguardViewController = keyguardViewController;
        mFalsingManager = falsingManager;
    }

    @Override
@@ -523,8 +511,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        private final KeyguardStateController mKeyguardStateController;
        private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController;
        private final ConfigurationController mConfigurationController;
        private final KeyguardViewController mKeyguardViewController;
        private final FalsingManager mFalsingManager;

        @Inject
        Factory(KeyguardSecurityContainer view,
@@ -537,9 +523,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
                UiEventLogger uiEventLogger,
                KeyguardStateController keyguardStateController,
                KeyguardSecurityViewFlipperController securityViewFlipperController,
                ConfigurationController configurationController,
                KeyguardViewController keyguardViewController,
                FalsingManager falsingManager) {
                ConfigurationController configurationController) {
            mView = view;
            mAdminSecondaryLockScreenControllerFactory = adminSecondaryLockScreenControllerFactory;
            mLockPatternUtils = lockPatternUtils;
@@ -550,8 +534,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
            mKeyguardStateController = keyguardStateController;
            mSecurityViewFlipperController = securityViewFlipperController;
            mConfigurationController = configurationController;
            mKeyguardViewController = keyguardViewController;
            mFalsingManager = falsingManager;
        }

        public KeyguardSecurityContainerController create(
@@ -560,7 +542,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
                    mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils,
                    mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger,
                    mKeyguardStateController, securityCallback, mSecurityViewFlipperController,
                    mConfigurationController, mKeyguardViewController, mFalsingManager);
                    mConfigurationController);
        }

    }
+35 −13
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import androidx.annotation.NonNull;

import com.android.internal.logging.MetricsLogger;
import com.android.systemui.classifier.FalsingDataProvider.SessionListener;
import com.android.systemui.classifier.HistoryTracker.BeliefListener;
import com.android.systemui.dagger.qualifiers.TestHarness;
import com.android.systemui.dock.DockManager;
import com.android.systemui.plugins.FalsingManager;
@@ -62,6 +63,7 @@ public class BrightLineFalsingManager implements FalsingManager {
    private static final int RECENT_INFO_LOG_SIZE = 40;
    private static final int RECENT_SWIPE_LOG_SIZE = 20;
    private static final double TAP_CONFIDENCE_THRESHOLD = 0.7;
    private static final double FALSE_BELIEF_THRESHOLD = 0.9;

    private final FalsingDataProvider mDataProvider;
    private final DockManager mDockManager;
@@ -78,6 +80,7 @@ public class BrightLineFalsingManager implements FalsingManager {
            new ArrayDeque<>(RECENT_SWIPE_LOG_SIZE + 1);

    private final Collection<FalsingClassifier> mClassifiers;
    private final List<FalsingBeliefListener> mFalsingBeliefListeners = new ArrayList<>();

    private final SessionListener mSessionListener = new SessionListener() {
        @Override
@@ -91,6 +94,12 @@ public class BrightLineFalsingManager implements FalsingManager {
        }
    };

    private final BeliefListener mBeliefListener = belief -> {
        if (belief > FALSE_BELIEF_THRESHOLD) {
            mFalsingBeliefListeners.forEach(FalsingBeliefListener::onFalse);
        }
    };

    private final FalsingDataProvider.GestureCompleteListener mGestureCompleteListener =
            new FalsingDataProvider.GestureCompleteListener() {
                @Override
@@ -129,6 +138,7 @@ public class BrightLineFalsingManager implements FalsingManager {

        mDataProvider.addSessionListener(mSessionListener);
        mDataProvider.addGestureCompleteListener(mGestureCompleteListener);
        mHistoryTracker.addBeliefListener(mBeliefListener);
    }

    @Override
@@ -301,6 +311,16 @@ public class BrightLineFalsingManager implements FalsingManager {
        return false;
    }

    @Override
    public void addFalsingBeliefListener(FalsingBeliefListener listener) {
        mFalsingBeliefListeners.add(listener);
    }

    @Override
    public void removeFalsingBeliefListener(FalsingBeliefListener listener) {
        mFalsingBeliefListeners.remove(listener);
    }

    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
        IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ");
@@ -341,6 +361,8 @@ public class BrightLineFalsingManager implements FalsingManager {
        mDataProvider.removeSessionListener(mSessionListener);
        mDataProvider.removeGestureCompleteListener(mGestureCompleteListener);
        mClassifiers.forEach(FalsingClassifier::cleanup);
        mFalsingBeliefListeners.clear();
        mHistoryTracker.removeBeliefListener(mBeliefListener);
    }

    static void logDebug(String msg) {
+14 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import com.android.systemui.util.sensors.ThresholdSensor;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

/**
 * Simple Fake for testing where {@link FalsingManager} is required.
@@ -38,6 +40,8 @@ public class FalsingManagerFake implements FalsingManager {
    private boolean mIsReportingEnabled;
    private boolean mIsFalseRobustTap;

    private final List<FalsingBeliefListener> mFalsingBeliefListeners = new ArrayList<>();

    @Override
    public void onSuccessfulUnlock() {

@@ -127,4 +131,14 @@ public class FalsingManagerFake implements FalsingManager {
    public void onProximityEvent(ThresholdSensor.ThresholdSensorEvent proximityEvent) {

    }

    @Override
    public void addFalsingBeliefListener(FalsingBeliefListener listener) {
        mFalsingBeliefListeners.add(listener);
    }

    @Override
    public void removeFalsingBeliefListener(FalsingBeliefListener listener) {
        mFalsingBeliefListeners.remove(listener);
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -160,6 +160,16 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable {
        return mInternalFalsingManager.isReportingEnabled();
    }

    @Override
    public void addFalsingBeliefListener(FalsingBeliefListener listener) {
        mInternalFalsingManager.addFalsingBeliefListener(listener);
    }

    @Override
    public void removeFalsingBeliefListener(FalsingBeliefListener listener) {
        mInternalFalsingManager.removeFalsingBeliefListener(listener);
    }

    @Override
    public void onProximityEvent(ThresholdSensor.ThresholdSensorEvent proximityEvent) {
        mInternalFalsingManager.onProximityEvent(proximityEvent);
Loading