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

Commit 0d04492c authored by Beverly's avatar Beverly Committed by Beverly Tai
Browse files

Don't rotate LS udfps location unless LS is occluded

Test: manual
Fixes: 198083412
Change-Id: Ia58c294895ddb811fbf12e603507bbb296396504
parent 906b2ed5
Loading
Loading
Loading
Loading
+23 −5
Original line number Diff line number Diff line
@@ -657,6 +657,20 @@ public class UdfpsController implements DozeReceiver {
        }
    }

    private boolean shouldRotate(@Nullable UdfpsAnimationViewController animation) {
        if (!(animation instanceof UdfpsKeyguardViewController)) {
            // always rotate view if we're not on the keyguard
            return true;
        }

        // on the keyguard, make sure we don't rotate if we're going to sleep or not occluded
        if (mKeyguardUpdateMonitor.isGoingToSleep() || !mKeyguardStateController.isOccluded()) {
            return false;
        }

        return true;
    }

    private WindowManager.LayoutParams computeLayoutParams(
            @Nullable UdfpsAnimationViewController animation) {
        final int paddingX = animation != null ? animation.getPaddingX() : 0;
@@ -680,9 +694,11 @@ public class UdfpsController implements DozeReceiver {
        // Transform dimensions if the device is in landscape mode
        switch (mContext.getDisplay().getRotation()) {
            case Surface.ROTATION_90:
                if (animation instanceof UdfpsKeyguardViewController
                        && mKeyguardUpdateMonitor.isGoingToSleep()) {
                if (!shouldRotate(animation)) {
                    Log.v(TAG, "skip rotating udfps location ROTATION_90");
                    break;
                } else {
                    Log.v(TAG, "rotate udfps location ROTATION_90");
                }
                mCoreLayoutParams.x = mSensorProps.sensorLocationY - mSensorProps.sensorRadius
                        - paddingX;
@@ -691,9 +707,11 @@ public class UdfpsController implements DozeReceiver {
                break;

            case Surface.ROTATION_270:
                if (animation instanceof UdfpsKeyguardViewController
                        && mKeyguardUpdateMonitor.isGoingToSleep()) {
                if (!shouldRotate(animation)) {
                    Log.v(TAG, "skip rotating udfps location ROTATION_270");
                    break;
                } else {
                    Log.v(TAG, "rotate udfps location ROTATION_270");
                }
                mCoreLayoutParams.x = p.x - mSensorProps.sensorLocationY - mSensorProps.sensorRadius
                        - paddingX;
+1 −0
Original line number Diff line number Diff line
@@ -191,6 +191,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
        when(mLayoutInflater.inflate(R.layout.udfps_keyguard_view, null))
                .thenReturn(mKeyguardView); // for showOverlay REASON_AUTH_FPM_KEYGUARD
        when(mEnrollView.getContext()).thenReturn(mContext);
        when(mKeyguardStateController.isOccluded()).thenReturn(false);
        final List<FingerprintSensorPropertiesInternal> props = new ArrayList<>();

        final List<ComponentInfoInternal> componentInfo = new ArrayList<>();