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

Commit 81cbe1eb authored by Austin Delgado's avatar Austin Delgado
Browse files

Integrate isHardwareIgnoringTouches into OperationContext

Test: atest SystemUITests:com.android.systemui.biometrics
Bug: 313763144
Flag: None
Change-Id: Ic7597b6edfdad2b8c9d0d60588809b0e254e095c
parent 697e97bc
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -38,4 +38,8 @@ oneway interface IBiometricContextListener {
    // Called when the display state of the device changes.
    // Where `displayState` is defined in AuthenticateOptions.DisplayState
    void onDisplayStateChanged(int displayState);

    // Called when the HAL ignoring touches state changes.
    // When true, the HAL ignores touches on the sensor.
    void onHardwareIgnoreTouchesChanged(boolean shouldIgnore);
}
+4 −1
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.ActivityLaunchAnimator
import com.android.systemui.biometrics.domain.interactor.UdfpsOverlayInteractor
import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams
import com.android.systemui.biometrics.ui.viewmodel.DefaultUdfpsTouchOverlayViewModel
import com.android.systemui.biometrics.ui.viewmodel.DeviceEntryUdfpsTouchOverlayViewModel
@@ -118,6 +119,7 @@ class UdfpsControllerOverlayTest : SysuiTestCase() {
    @Mock private lateinit var keyguardTransitionInteractor: KeyguardTransitionInteractor
    @Mock private lateinit var shadeInteractor: ShadeInteractor
    @Captor private lateinit var layoutParamsCaptor: ArgumentCaptor<WindowManager.LayoutParams>
    @Mock private lateinit var udfpsOverlayInteractor: UdfpsOverlayInteractor

    private val onTouch = { _: View, _: MotionEvent, _: Boolean -> true }
    private var overlayParams: UdfpsOverlayParams = UdfpsOverlayParams()
@@ -174,7 +176,8 @@ class UdfpsControllerOverlayTest : SysuiTestCase() {
                mSelectedUserInteractor,
                { deviceEntryUdfpsTouchOverlayViewModel },
                { defaultUdfpsTouchOverlayViewModel },
                shadeInteractor
                shadeInteractor,
                udfpsOverlayInteractor,
            )
        block()
    }
+5 −2
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.biometrics.domain.interactor.UdfpsOverlayInteractor;
import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams;
import com.android.systemui.biometrics.udfps.InteractionEvent;
import com.android.systemui.biometrics.udfps.NormalizedTouchData;
@@ -214,6 +215,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
    @Mock
    private AlternateBouncerInteractor mAlternateBouncerInteractor;
    @Mock
    private UdfpsOverlayInteractor mUdfpsOverlayInteractor;
    @Mock
    private UdfpsKeyguardAccessibilityDelegate mUdfpsKeyguardAccessibilityDelegate;
    @Mock
    private SelectedUserInteractor mSelectedUserInteractor;
@@ -342,8 +345,8 @@ public class UdfpsControllerTest extends SysuiTestCase {
                mFpsUnlockTracker,
                mKeyguardTransitionInteractor,
                mDeviceEntryUdfpsTouchOverlayViewModel,
                mDefaultUdfpsTouchOverlayViewModel

                mDefaultUdfpsTouchOverlayViewModel,
                mUdfpsOverlayInteractor
        );
        verify(mFingerprintManager).setUdfpsOverlayController(mOverlayCaptor.capture());
        mOverlayController = mOverlayCaptor.getValue();
+4 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.biometrics.domain.interactor.UdfpsOverlayInteractor;
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor;
import com.android.systemui.dump.DumpManager;
@@ -76,6 +77,7 @@ public class UdfpsKeyguardViewLegacyControllerBaseTest extends SysuiTestCase {
    protected @Mock UdfpsKeyguardAccessibilityDelegate mUdfpsKeyguardAccessibilityDelegate;
    protected @Mock SelectedUserInteractor mSelectedUserInteractor;
    protected @Mock KeyguardTransitionInteractor mKeyguardTransitionInteractor;
    protected @Mock UdfpsOverlayInteractor mUdfpsOverlayInteractor;

    protected FakeFeatureFlags mFeatureFlags = new FakeFeatureFlags();

@@ -152,7 +154,8 @@ public class UdfpsKeyguardViewLegacyControllerBaseTest extends SysuiTestCase {
                mUdfpsKeyguardAccessibilityDelegate,
                mSelectedUserInteractor,
                mKeyguardTransitionInteractor,
                mShadeInteractor);
                mShadeInteractor,
                mUdfpsOverlayInteractor);
        return controller;
    }
}
+36 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.keyguard.KeyguardSecurityModel
import com.android.systemui.biometrics.UdfpsKeyguardViewLegacy.ANIMATE_APPEAR_ON_SCREEN_OFF
import com.android.systemui.biometrics.UdfpsKeyguardViewLegacy.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN
import com.android.systemui.biometrics.data.repository.FakeFingerprintPropertyRepository
import com.android.systemui.biometrics.domain.interactor.UdfpsOverlayInteractor
import com.android.systemui.bouncer.data.repository.KeyguardBouncerRepository
import com.android.systemui.bouncer.data.repository.KeyguardBouncerRepositoryImpl
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
@@ -32,6 +33,7 @@ import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants
import com.android.systemui.bouncer.ui.BouncerView
import com.android.systemui.classifier.FalsingCollector
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor
import com.android.systemui.keyguard.DismissCallbackRegistry
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
@@ -45,9 +47,11 @@ import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.user.domain.interactor.SelectedUserInteractor
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.android.systemui.util.time.SystemClock
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.test.runCurrent
@@ -130,6 +134,13 @@ class UdfpsKeyguardViewLegacyControllerWithCoroutinesTest :
                    repository = transitionRepository,
                )
                .keyguardTransitionInteractor
        mUdfpsOverlayInteractor =
            UdfpsOverlayInteractor(
                context,
                mock(AuthController::class.java),
                mock(SelectedUserInteractor::class.java),
                testScope.backgroundScope,
            )
        return createUdfpsKeyguardViewController(/* useModernBouncer */ true)
    }

@@ -238,6 +249,31 @@ class UdfpsKeyguardViewLegacyControllerWithCoroutinesTest :
            job.cancel()
        }

    @Test
    fun shouldHandleTouchesChange() =
        testScope.runTest {
            val shouldHandleTouches by collectLastValue(mUdfpsOverlayInteractor.shouldHandleTouches)

            // GIVEN view is attached + on the keyguard
            mController.onViewAttached()
            captureStatusBarStateListeners()
            sendStatusBarStateChanged(StatusBarState.KEYGUARD)
            whenever(mView.setPauseAuth(true)).thenReturn(true)
            whenever(mView.unpausedAlpha).thenReturn(0)

            // WHEN panelViewExpansion changes to expanded
            val job = mController.listenForBouncerExpansion(this)
            keyguardBouncerRepository.setPrimaryShow(true)
            keyguardBouncerRepository.setPanelExpansion(KeyguardBouncerConstants.EXPANSION_VISIBLE)
            runCurrent()

            // THEN UDFPS auth is paused and should not handle touches
            assertThat(mController.shouldPauseAuth()).isTrue()
            assertThat(shouldHandleTouches!!).isFalse()

            job.cancel()
        }

    @Test
    fun fadeFromDialogSuggestedAlpha() =
        testScope.runTest {
Loading