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

Commit 3ac4d94f authored by Ilya Matyukhin's avatar Ilya Matyukhin
Browse files

RESTRICT AUTOMERGE Add overlayBounds to UdfpsOverlayParams

Bug: 257118043
Test: atest AuthControllerTest
Test: atest UdfpsControllerTest
Change-Id: I376f8b8b9b0fe27688ccc4a73269f067b7030c4f
parent c8045792
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -782,8 +782,17 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks,
            mUdfpsBounds = udfpsProp.getLocation().getRect();
            mUdfpsBounds.scale(mScaleFactor);

            final UdfpsOverlayParams overlayParams = new UdfpsOverlayParams(mUdfpsBounds,
                    mCachedDisplayInfo.getNaturalWidth(), mCachedDisplayInfo.getNaturalHeight(),
            final Rect overlayBounds = new Rect(
                    0, /* left */
                    mCachedDisplayInfo.getNaturalHeight() / 2, /* top */
                    mCachedDisplayInfo.getNaturalWidth(), /* right */
                    mCachedDisplayInfo.getNaturalHeight() /* bottom */);

            final UdfpsOverlayParams overlayParams = new UdfpsOverlayParams(
                    mUdfpsBounds,
                    overlayBounds,
                    mCachedDisplayInfo.getNaturalWidth(),
                    mCachedDisplayInfo.getNaturalHeight(),
                    mScaleFactor, mCachedDisplayInfo.rotation);

            mUdfpsController.updateOverlayParams(udfpsProp, overlayParams);
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.view.Surface.Rotation

data class UdfpsOverlayParams(
    val sensorBounds: Rect = Rect(),
    val overlayBounds: Rect = Rect(),
    val naturalDisplayWidth: Int = 0,
    val naturalDisplayHeight: Int = 0,
    val scaleFactor: Float = 1f,
+2 −1
Original line number Diff line number Diff line
@@ -190,11 +190,12 @@ class UdfpsControllerOverlayTest : SysuiTestCase() {
        // Sensor that's in the top left corner of the display in natural orientation.
        val sensorBounds = Rect(0, 0, SENSOR_WIDTH, SENSOR_HEIGHT)
        overlayParams = UdfpsOverlayParams(
            sensorBounds,
            sensorBounds,
            DISPLAY_WIDTH,
            DISPLAY_HEIGHT,
            scaleFactor = 1f,
            rotation
            rotation = rotation
        )
        block()
    }
+15 −15
Original line number Diff line number Diff line
@@ -437,7 +437,7 @@ public class UdfpsControllerTest extends SysuiTestCase {
        final float[] scaleFactor = new float[]{1f, displayHeight[1] / (float) displayHeight[0]};
        final int[] rotation = new int[]{Surface.ROTATION_0, Surface.ROTATION_90};
        final UdfpsOverlayParams oldParams = new UdfpsOverlayParams(sensorBounds[0],
                displayWidth[0], displayHeight[0], scaleFactor[0], rotation[0]);
                sensorBounds[0], displayWidth[0], displayHeight[0], scaleFactor[0], rotation[0]);

        for (int i1 = 0; i1 <= 1; ++i1) {
            for (int i2 = 0; i2 <= 1; ++i2) {
@@ -445,8 +445,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
                    for (int i4 = 0; i4 <= 1; ++i4) {
                        for (int i5 = 0; i5 <= 1; ++i5) {
                            final UdfpsOverlayParams newParams = new UdfpsOverlayParams(
                                    sensorBounds[i1], displayWidth[i2], displayHeight[i3],
                                    scaleFactor[i4], rotation[i5]);
                                    sensorBounds[i1], sensorBounds[i1], displayWidth[i2],
                                    displayHeight[i3], scaleFactor[i4], rotation[i5]);

                            if (newParams.equals(oldParams)) {
                                continue;
@@ -489,8 +489,8 @@ public class UdfpsControllerTest extends SysuiTestCase {

        // Initialize the overlay.
        mUdfpsController.updateOverlayParams(mOpticalProps,
                new UdfpsOverlayParams(sensorBounds, displayWidth, displayHeight, scaleFactor,
                        rotation));
                new UdfpsOverlayParams(sensorBounds, sensorBounds, displayWidth, displayHeight,
                        scaleFactor, rotation));

        // Show the overlay.
        mOverlayController.showUdfpsOverlay(TEST_REQUEST_ID, mOpticalProps.sensorId,
@@ -500,8 +500,8 @@ public class UdfpsControllerTest extends SysuiTestCase {

        // Update overlay with the same parameters.
        mUdfpsController.updateOverlayParams(mOpticalProps,
                new UdfpsOverlayParams(sensorBounds, displayWidth, displayHeight, scaleFactor,
                        rotation));
                new UdfpsOverlayParams(sensorBounds, sensorBounds, displayWidth, displayHeight,
                        scaleFactor, rotation));
        mFgExecutor.runAllReady();

        // Ensure the overlay was not recreated.
@@ -548,8 +548,8 @@ public class UdfpsControllerTest extends SysuiTestCase {

        // Test ROTATION_0
        mUdfpsController.updateOverlayParams(mOpticalProps,
                new UdfpsOverlayParams(sensorBounds, displayWidth, displayHeight, scaleFactor,
                        Surface.ROTATION_0));
                new UdfpsOverlayParams(sensorBounds, sensorBounds, displayWidth, displayHeight,
                        scaleFactor, Surface.ROTATION_0));
        MotionEvent event = obtainMotionEvent(ACTION_DOWN, displayWidth, displayHeight, touchMinor,
                touchMajor);
        mTouchListenerCaptor.getValue().onTouch(mUdfpsView, event);
@@ -565,8 +565,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
        // Test ROTATION_90
        reset(mAlternateTouchProvider);
        mUdfpsController.updateOverlayParams(mOpticalProps,
                new UdfpsOverlayParams(sensorBounds, displayWidth, displayHeight, scaleFactor,
                        Surface.ROTATION_90));
                new UdfpsOverlayParams(sensorBounds, sensorBounds, displayWidth, displayHeight,
                        scaleFactor, Surface.ROTATION_90));
        event = obtainMotionEvent(ACTION_DOWN, displayHeight, 0, touchMinor, touchMajor);
        mTouchListenerCaptor.getValue().onTouch(mUdfpsView, event);
        mBiometricsExecutor.runAllReady();
@@ -581,8 +581,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
        // Test ROTATION_270
        reset(mAlternateTouchProvider);
        mUdfpsController.updateOverlayParams(mOpticalProps,
                new UdfpsOverlayParams(sensorBounds, displayWidth, displayHeight, scaleFactor,
                        Surface.ROTATION_270));
                new UdfpsOverlayParams(sensorBounds, sensorBounds, displayWidth, displayHeight,
                        scaleFactor, Surface.ROTATION_270));
        event = obtainMotionEvent(ACTION_DOWN, 0, displayWidth, touchMinor, touchMajor);
        mTouchListenerCaptor.getValue().onTouch(mUdfpsView, event);
        mBiometricsExecutor.runAllReady();
@@ -597,8 +597,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
        // Test ROTATION_180
        reset(mAlternateTouchProvider);
        mUdfpsController.updateOverlayParams(mOpticalProps,
                new UdfpsOverlayParams(sensorBounds, displayWidth, displayHeight, scaleFactor,
                        Surface.ROTATION_180));
                new UdfpsOverlayParams(sensorBounds, sensorBounds, displayWidth, displayHeight,
                        scaleFactor, Surface.ROTATION_180));
        // ROTATION_180 is not supported. It should be treated like ROTATION_0.
        event = obtainMotionEvent(ACTION_DOWN, displayWidth, displayHeight, touchMinor, touchMajor);
        mTouchListenerCaptor.getValue().onTouch(mUdfpsView, event);
+3 −2
Original line number Diff line number Diff line
@@ -40,8 +40,8 @@ import org.mockito.Mock
import org.mockito.Mockito.never
import org.mockito.Mockito.nullable
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.junit.MockitoJUnit
import org.mockito.Mockito.`when` as whenever

private const val SENSOR_X = 50
private const val SENSOR_Y = 250
@@ -68,7 +68,8 @@ class UdfpsViewTest : SysuiTestCase() {
        view = LayoutInflater.from(context).inflate(R.layout.udfps_view, null) as UdfpsView
        view.animationViewController = animationViewController
        val sensorBounds = SensorLocationInternal("", SENSOR_X, SENSOR_Y, SENSOR_RADIUS).rect
        view.overlayParams = UdfpsOverlayParams(sensorBounds, 1920, 1080, 1f, Surface.ROTATION_0)
        view.overlayParams = UdfpsOverlayParams(sensorBounds, sensorBounds, 1920,
            1080, 1f, Surface.ROTATION_0)
        view.setUdfpsDisplayModeProvider(hbmProvider)
        ViewUtils.attachView(view)
    }