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

Commit 1fbfaad4 authored by Austin Delgado's avatar Austin Delgado
Browse files

Support talkback with new Udfps Overlay on keyguard

Resizes talkback bounds for new udfps overlay on keyguard. Now only
highlights the sensor area instead of taking up the whole screen.

Bug: 270437012
Test: atest SystemUITests:com.android.systemui.biometrics
Change-Id: Iaa41ef0d7afe32f48a873924f83c1f36acf77361
parent 2f63277b
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -20,7 +20,8 @@
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/udfps_animation_view_internal"
    android:id="@+id/udfps_animation_view_internal"
    android:layout_width="match_parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    android:layout_height="match_parent"
    android:contentDescription="@string/accessibility_fingerprint_label">


    <!-- Background protection -->
    <!-- Background protection -->
    <ImageView
    <ImageView
+2 −2
Original line number Original line Diff line number Diff line
@@ -823,9 +823,9 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks,


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


            mUdfpsOverlayParams = new UdfpsOverlayParams(
            mUdfpsOverlayParams = new UdfpsOverlayParams(
                    mUdfpsBounds,
                    mUdfpsBounds,
+6 −1
Original line number Original line Diff line number Diff line
@@ -364,7 +364,12 @@ class UdfpsControllerOverlay @JvmOverloads constructor(
                if (accessibilityManager.isTouchExplorationEnabled && isEnrollment) {
                if (accessibilityManager.isTouchExplorationEnabled && isEnrollment) {
                    Rect(overlayParams.sensorBounds)
                    Rect(overlayParams.sensorBounds)
                } else {
                } else {
                    Rect(overlayParams.overlayBounds)
                    Rect(
                        0,
                        0,
                        overlayParams.naturalDisplayWidth,
                        overlayParams.naturalDisplayHeight
                    )
                }
                }
            } else {
            } else {
                Rect(overlayParams.sensorBounds)
                Rect(overlayParams.sensorBounds)
+20 −2
Original line number Original line Diff line number Diff line
@@ -25,7 +25,6 @@ import android.hardware.biometrics.BiometricOverlayConstants.REASON_ENROLL_ENROL
import android.hardware.biometrics.BiometricOverlayConstants.ShowReason
import android.hardware.biometrics.BiometricOverlayConstants.ShowReason
import android.hardware.fingerprint.FingerprintManager
import android.hardware.fingerprint.FingerprintManager
import android.hardware.fingerprint.IUdfpsOverlayControllerCallback
import android.hardware.fingerprint.IUdfpsOverlayControllerCallback
import androidx.test.ext.junit.runners.AndroidJUnit4
import android.testing.TestableLooper.RunWithLooper
import android.testing.TestableLooper.RunWithLooper
import android.view.LayoutInflater
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.MotionEvent
@@ -35,6 +34,7 @@ import android.view.Surface.Rotation
import android.view.View
import android.view.View
import android.view.WindowManager
import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
import android.view.accessibility.AccessibilityManager
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.settingslib.udfps.UdfpsOverlayParams
import com.android.settingslib.udfps.UdfpsOverlayParams
@@ -69,8 +69,8 @@ import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mock
import org.mockito.Mockito.mock
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoJUnit
import org.mockito.Mockito.`when` as whenever


private const val REQUEST_ID = 2L
private const val REQUEST_ID = 2L


@@ -340,4 +340,22 @@ class UdfpsControllerOverlayTest : SysuiTestCase() {
            assertThat(lp.height).isEqualTo(overlayParams.sensorBounds.height())
            assertThat(lp.height).isEqualTo(overlayParams.sensorBounds.height())
        }
        }
    }
    }

    @Test
    fun fullScreenOverlayWithNewTouchDetectionEnabled() = withRotation(ROTATION_0) {
        withReason(REASON_AUTH_KEYGUARD) {
            whenever(featureFlags.isEnabled(Flags.UDFPS_NEW_TOUCH_DETECTION)).thenReturn(true)

            controllerOverlay.show(udfpsController, overlayParams)
            verify(windowManager).addView(
                    eq(controllerOverlay.overlayView),
                    layoutParamsCaptor.capture()
            )

            // Layout params should use natural display width and height
            val lp = layoutParamsCaptor.value
            assertThat(lp.width).isEqualTo(overlayParams.naturalDisplayWidth)
            assertThat(lp.height).isEqualTo(overlayParams.naturalDisplayHeight)
        }
    }
}
}