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

Commit 10066c69 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "resolve merge conflicts of c4828692 to...

Merge "resolve merge conflicts of c4828692 to sc-v2-dev" into sc-v2-dev
parents 8aedf643 4a6fb4e6
Loading
Loading
Loading
Loading
+32 −22
Original line number Original line Diff line number Diff line
@@ -1431,6 +1431,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                @Override
                @Override
                public void onAuthenticationFailed() {
                public void onAuthenticationFailed() {
                    handleFaceAuthFailed();
                    handleFaceAuthFailed();
                    if (mKeyguardBypassController != null) {
                        mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
                    }
                }
                }


                @Override
                @Override
@@ -1438,6 +1441,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                    Trace.beginSection("KeyguardUpdateMonitor#onAuthenticationSucceeded");
                    Trace.beginSection("KeyguardUpdateMonitor#onAuthenticationSucceeded");
                    handleFaceAuthenticated(result.getUserId(), result.isStrongBiometric());
                    handleFaceAuthenticated(result.getUserId(), result.isStrongBiometric());
                    Trace.endSection();
                    Trace.endSection();

                    if (mKeyguardBypassController != null) {
                        mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
                    }
                }
                }


                @Override
                @Override
@@ -1448,6 +1455,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                @Override
                @Override
                public void onAuthenticationError(int errMsgId, CharSequence errString) {
                public void onAuthenticationError(int errMsgId, CharSequence errString) {
                    handleFaceError(errMsgId, errString.toString());
                    handleFaceError(errMsgId, errString.toString());
                    if (mKeyguardBypassController != null) {
                        mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
                    }
                }
                }


                @Override
                @Override
+24 −8
Original line number Original line Diff line number Diff line
@@ -68,6 +68,7 @@ import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -120,6 +121,7 @@ public class UdfpsController implements DozeReceiver {
    @NonNull private final AccessibilityManager mAccessibilityManager;
    @NonNull private final AccessibilityManager mAccessibilityManager;
    @NonNull private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    @NonNull private final LockscreenShadeTransitionController mLockscreenShadeTransitionController;
    @Nullable private final UdfpsHbmProvider mHbmProvider;
    @Nullable private final UdfpsHbmProvider mHbmProvider;
    @NonNull private final KeyguardBypassController mKeyguardBypassController;
    @VisibleForTesting @NonNull final BiometricOrientationEventListener mOrientationListener;
    @VisibleForTesting @NonNull final BiometricOrientationEventListener mOrientationListener;
    // Currently the UdfpsController supports a single UDFPS sensor. If devices have multiple
    // Currently the UdfpsController supports a single UDFPS sensor. If devices have multiple
    // sensors, this, in addition to a lot of the code here, will be updated.
    // sensors, this, in addition to a lot of the code here, will be updated.
@@ -397,7 +399,10 @@ public class UdfpsController implements DozeReceiver {
                    handled = true;
                    handled = true;
                }
                }
                if ((withinSensorArea || fromUdfpsView) && shouldTryToDismissKeyguard()) {
                if ((withinSensorArea || fromUdfpsView) && shouldTryToDismissKeyguard()) {
                    Log.v(TAG, "onTouch | dismiss keyguard from ACTION_DOWN");
                    Log.v(TAG, "onTouch | dismiss keyguard ACTION_DOWN");
                    if (!mOnFingerDown) {
                        playStartHaptic();
                    }
                    mKeyguardViewManager.notifyKeyguardAuthenticated(false /* strongAuth */);
                    mKeyguardViewManager.notifyKeyguardAuthenticated(false /* strongAuth */);
                    mAttemptedToDismissKeyguard = true;
                    mAttemptedToDismissKeyguard = true;
                }
                }
@@ -414,6 +419,16 @@ public class UdfpsController implements DozeReceiver {
                    boolean actionMoveWithinSensorArea =
                    boolean actionMoveWithinSensorArea =
                            isWithinSensorArea(udfpsView, event.getX(idx), event.getY(idx),
                            isWithinSensorArea(udfpsView, event.getX(idx), event.getY(idx),
                                fromUdfpsView);
                                fromUdfpsView);
                    if ((fromUdfpsView || actionMoveWithinSensorArea)
                            && shouldTryToDismissKeyguard()) {
                        Log.v(TAG, "onTouch | dismiss keyguard ACTION_MOVE");
                        if (!mOnFingerDown) {
                            playStartHaptic();
                        }
                        mKeyguardViewManager.notifyKeyguardAuthenticated(false /* strongAuth */);
                        mAttemptedToDismissKeyguard = true;
                        break;
                    }
                    if (actionMoveWithinSensorArea) {
                    if (actionMoveWithinSensorArea) {
                        if (mVelocityTracker == null) {
                        if (mVelocityTracker == null) {
                            // touches could be injected, so the velocity tracker may not have
                            // touches could be injected, so the velocity tracker may not have
@@ -449,12 +464,6 @@ public class UdfpsController implements DozeReceiver {
                        Log.v(TAG, "onTouch | finger outside");
                        Log.v(TAG, "onTouch | finger outside");
                        onFingerUp();
                        onFingerUp();
                    }
                    }
                    if ((fromUdfpsView || actionMoveWithinSensorArea)
                            && shouldTryToDismissKeyguard()) {
                        Log.v(TAG, "onTouch | dismiss keyguard from ACTION_MOVE");
                        mKeyguardViewManager.notifyKeyguardAuthenticated(false /* strongAuth */);
                        mAttemptedToDismissKeyguard = true;
                    }
                }
                }
                Trace.endSection();
                Trace.endSection();
                break;
                break;
@@ -509,7 +518,8 @@ public class UdfpsController implements DozeReceiver {
            @Nullable Vibrator vibrator,
            @Nullable Vibrator vibrator,
            @NonNull UdfpsHapticsSimulator udfpsHapticsSimulator,
            @NonNull UdfpsHapticsSimulator udfpsHapticsSimulator,
            @NonNull Optional<UdfpsHbmProvider> hbmProvider,
            @NonNull Optional<UdfpsHbmProvider> hbmProvider,
            @NonNull KeyguardStateController keyguardStateController) {
            @NonNull KeyguardStateController keyguardStateController,
            @NonNull KeyguardBypassController keyguardBypassController) {
        mContext = context;
        mContext = context;
        mExecution = execution;
        mExecution = execution;
        // TODO (b/185124905): inject main handler and vibrator once done prototyping
        // TODO (b/185124905): inject main handler and vibrator once done prototyping
@@ -539,6 +549,7 @@ public class UdfpsController implements DozeReceiver {
            onOrientationChanged();
            onOrientationChanged();
            return Unit.INSTANCE;
            return Unit.INSTANCE;
        });
        });
        mKeyguardBypassController = keyguardBypassController;


        mSensorProps = findFirstUdfps();
        mSensorProps = findFirstUdfps();
        // At least one UDFPS sensor exists
        // At least one UDFPS sensor exists
@@ -863,12 +874,17 @@ public class UdfpsController implements DozeReceiver {


    private void onFingerDown(int x, int y, float minor, float major) {
    private void onFingerDown(int x, int y, float minor, float major) {
        mExecution.assertIsMainThread();
        mExecution.assertIsMainThread();
        mKeyguardBypassController.setUserHasDeviceEntryIntent(true);
        if (mView == null) {
        if (mView == null) {
            Log.w(TAG, "Null view in onFingerDown");
            Log.w(TAG, "Null view in onFingerDown");
            return;
            return;
        }
        }
        if (!mOnFingerDown) {
        if (!mOnFingerDown) {
            playStartHaptic();
            playStartHaptic();

            if (!mKeyguardUpdateMonitor.isFaceDetectionRunning()) {
                mKeyguardUpdateMonitor.requestFaceAuth(/* userInitiatedRequest */ false);
            }
        }
        }
        mOnFingerDown = true;
        mOnFingerDown = true;
        mFingerprintManager.onPointerDown(mSensorProps.sensorId, x, y, minor, major);
        mFingerprintManager.onPointerDown(mSensorProps.sensorId, x, y, minor, major);
+2 −2
Original line number Original line Diff line number Diff line
@@ -564,8 +564,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
        boolean unlockingAllowed =
        boolean unlockingAllowed =
                mUpdateMonitor.isUnlockingWithBiometricAllowed(isStrongBiometric);
                mUpdateMonitor.isUnlockingWithBiometricAllowed(isStrongBiometric);
        boolean deviceDreaming = mUpdateMonitor.isDreaming();
        boolean deviceDreaming = mUpdateMonitor.isDreaming();
        boolean bypass = mKeyguardBypassController.getBypassEnabled();
        boolean bypass = mKeyguardBypassController.getBypassEnabled()

                || mKeyguardBypassController.getUserHasDeviceEntryIntent();
        if (!mUpdateMonitor.isDeviceInteractive()) {
        if (!mUpdateMonitor.isDeviceInteractive()) {
            if (!mKeyguardViewController.isShowing()) {
            if (!mKeyguardViewController.isShowing()) {
                return bypass ? MODE_WAKE_AND_UNLOCK : MODE_ONLY_WAKE;
                return bypass ? MODE_WAKE_AND_UNLOCK : MODE_ONLY_WAKE;
+1 −0
Original line number Original line Diff line number Diff line
@@ -48,6 +48,7 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
    private val faceAuthEnabledChangedCallback = object : KeyguardStateController.Callback {
    private val faceAuthEnabledChangedCallback = object : KeyguardStateController.Callback {
        override fun onFaceAuthEnabledChanged() = notifyListeners()
        override fun onFaceAuthEnabledChanged() = notifyListeners()
    }
    }
    var userHasDeviceEntryIntent: Boolean = false // ie: attempted udfps auth


    @IntDef(
    @IntDef(
        FACE_UNLOCK_BYPASS_NO_OVERRIDE,
        FACE_UNLOCK_BYPASS_NO_OVERRIDE,
+5 −1
Original line number Original line Diff line number Diff line
@@ -59,6 +59,7 @@ import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -136,6 +137,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
    private UdfpsHapticsSimulator mUdfpsHapticsSimulator;
    private UdfpsHapticsSimulator mUdfpsHapticsSimulator;
    @Mock
    @Mock
    private KeyguardStateController mKeyguardStateController;
    private KeyguardStateController mKeyguardStateController;
    @Mock
    private KeyguardBypassController mKeyguardBypassController;


    private FakeExecutor mFgExecutor;
    private FakeExecutor mFgExecutor;


@@ -204,7 +207,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
                mVibrator,
                mVibrator,
                mUdfpsHapticsSimulator,
                mUdfpsHapticsSimulator,
                Optional.of(mHbmProvider),
                Optional.of(mHbmProvider),
                mKeyguardStateController);
                mKeyguardStateController,
                mKeyguardBypassController);
        verify(mFingerprintManager).setUdfpsOverlayController(mOverlayCaptor.capture());
        verify(mFingerprintManager).setUdfpsOverlayController(mOverlayCaptor.capture());
        mOverlayController = mOverlayCaptor.getValue();
        mOverlayController = mOverlayCaptor.getValue();
        verify(mScreenLifecycle).addObserver(mScreenObserverCaptor.capture());
        verify(mScreenLifecycle).addObserver(mScreenObserverCaptor.capture());