diff options
author | 2025-03-25 19:01:04 +0000 | |
---|---|---|
committer | 2025-09-18 09:05:51 +0200 | |
commit | 6fed4a4e7e0402ce99896dd8cb2fabed58a7fc89 (patch) | |
tree | 09b698933632c121bc40f4ed3ce74603c37551ca | |
parent | 004d92fe7fcea8788b2f918da7161986d3f99608 (diff) |
[SP 2025-09-01] Move BP window to Keyguard_dialog
Bug: 384727394
Test: UdfpsControllerTest
Test: UdfpsControllerOverlayTest
Flag: EXEMPT bugfix
Change-Id: Ifce421be7997eca4323a2e0412abca5753b6b787
(cherry picked from commit 47fd897138eb2c9ee3a25ca35970d34178226f6a)
6 files changed, 62 insertions, 152 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsControllerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsControllerTest.java index 56c018218269..0637603f5525 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsControllerTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsControllerTest.java @@ -45,8 +45,6 @@ import android.os.RemoteException; import android.testing.TestableLooper.RunWithLooper; import android.view.LayoutInflater; import android.view.Surface; -import android.view.View; -import android.view.ViewRootImpl; import android.view.WindowManager; import android.view.accessibility.AccessibilityManager; @@ -63,13 +61,13 @@ import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams; import com.android.systemui.biometrics.udfps.SinglePointerTouchProcessor; import com.android.systemui.biometrics.ui.viewmodel.DefaultUdfpsTouchOverlayViewModel; import com.android.systemui.biometrics.ui.viewmodel.DeviceEntryUdfpsTouchOverlayViewModel; +import com.android.systemui.biometrics.ui.viewmodel.PromptUdfpsTouchOverlayViewModel; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor; import com.android.systemui.camera.CameraGestureHelper; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor; import com.android.systemui.dump.DumpManager; -import com.android.systemui.flags.FeatureFlags; import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.keyguard.UserActivityNotifierKosmosKt; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; @@ -82,7 +80,6 @@ import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.power.shared.model.WakeSleepReason; import com.android.systemui.power.shared.model.WakefulnessState; import com.android.systemui.shade.domain.interactor.ShadeInteractor; -import com.android.systemui.statusbar.LockscreenShadeTransitionController; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.phone.ScreenOffAnimationController; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; @@ -98,8 +95,6 @@ import com.android.systemui.util.time.SystemClock; import dagger.Lazy; -import javax.inject.Provider; - import kotlinx.coroutines.CoroutineScope; import org.junit.Before; @@ -115,6 +110,8 @@ import org.mockito.junit.MockitoRule; import java.util.ArrayList; import java.util.List; +import javax.inject.Provider; + @SmallTest @RunWith(AndroidJUnit4.class) @RunWithLooper(setAsMainLooper = true) @@ -151,8 +148,6 @@ public class UdfpsControllerTest extends SysuiTestCase { @Mock private AccessibilityManager mAccessibilityManager; @Mock - private LockscreenShadeTransitionController mLockscreenShadeTransitionController; - @Mock private ScreenLifecycle mScreenLifecycle; @Mock private VibratorHelper mVibrator; @@ -178,9 +173,6 @@ public class UdfpsControllerTest extends SysuiTestCase { @Mock private UdfpsDisplayMode mUdfpsDisplayMode; @Mock - private FeatureFlags mFeatureFlags; - // Stuff for configuring mocks - @Mock private SystemUIDialogManager mSystemUIDialogManager; @Mock private ActivityTransitionAnimator mActivityTransitionAnimator; @@ -204,31 +196,21 @@ public class UdfpsControllerTest extends SysuiTestCase { private ArgumentCaptor<IUdfpsOverlayController> mOverlayCaptor; private IUdfpsOverlayController mOverlayController; @Captor - private ArgumentCaptor<View> mViewCaptor; - @Captor - private ArgumentCaptor<View.OnHoverListener> mHoverListenerCaptor; - @Captor - private ArgumentCaptor<Runnable> mOnDisplayConfiguredCaptor; - @Captor private ArgumentCaptor<ScreenLifecycle.Observer> mScreenObserverCaptor; - @Captor - private ArgumentCaptor<UdfpsController.UdfpsOverlayController> mUdfpsOverlayControllerCaptor; - private ScreenLifecycle.Observer mScreenObserver; private FingerprintSensorPropertiesInternal mOpticalProps; - private FingerprintSensorPropertiesInternal mUltrasonicProps; private PowerInteractor mPowerInteractor; private FakePowerRepository mPowerRepository; @Mock private InputManager mInputManager; @Mock - private ViewRootImpl mViewRootImpl; - @Mock private KeyguardTransitionInteractor mKeyguardTransitionInteractor; @Mock private Lazy<DeviceEntryUdfpsTouchOverlayViewModel> mDeviceEntryUdfpsTouchOverlayViewModel; @Mock private Lazy<DefaultUdfpsTouchOverlayViewModel> mDefaultUdfpsTouchOverlayViewModel; @Mock + private Lazy<PromptUdfpsTouchOverlayViewModel> mPromptUdfpsTouchOverlayViewModel; + @Mock private Provider<CameraGestureHelper> mCameraGestureHelper; @Before @@ -269,13 +251,6 @@ public class UdfpsControllerTest extends SysuiTestCase { FingerprintSensorProperties.TYPE_UDFPS_OPTICAL, true /* resetLockoutRequiresHardwareAuthToken */); - mUltrasonicProps = new FingerprintSensorPropertiesInternal(2 /* sensorId */, - SensorProperties.STRENGTH_STRONG, - 5 /* maxEnrollmentsPerUser */, - componentInfo, - FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC, - true /* resetLockoutRequiresHardwareAuthToken */); - mFgExecutor = new FakeExecutor(new FakeSystemClock()); // Create a fake background executor. @@ -327,6 +302,7 @@ public class UdfpsControllerTest extends SysuiTestCase { mKeyguardTransitionInteractor, mDeviceEntryUdfpsTouchOverlayViewModel, mDefaultUdfpsTouchOverlayViewModel, + mPromptUdfpsTouchOverlayViewModel, mUdfpsOverlayInteractor, mPowerInteractor, mock(CoroutineScope.class), @@ -335,7 +311,6 @@ public class UdfpsControllerTest extends SysuiTestCase { verify(mFingerprintManager).setUdfpsOverlayController(mOverlayCaptor.capture()); mOverlayController = mOverlayCaptor.getValue(); verify(mScreenLifecycle).addObserver(mScreenObserverCaptor.capture()); - mScreenObserver = mScreenObserverCaptor.getValue(); mUdfpsController.updateOverlayParams(sensorProps, new UdfpsOverlayParams()); mUdfpsController.setUdfpsDisplayMode(mUdfpsDisplayMode); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java index 7bb08edd4773..38af7e064559 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java @@ -741,7 +741,7 @@ public class AuthContainerView extends LinearLayout final WindowManager.LayoutParams lp = new WindowManager.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, - WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, + WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, windowFlags, PixelFormat.TRANSLUCENT); lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS; diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index 9064966b25c6..7966f41f304c 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -83,6 +83,7 @@ import com.android.systemui.biometrics.udfps.TouchProcessor; import com.android.systemui.biometrics.udfps.TouchProcessorResult; import com.android.systemui.biometrics.ui.viewmodel.DefaultUdfpsTouchOverlayViewModel; import com.android.systemui.biometrics.ui.viewmodel.DeviceEntryUdfpsTouchOverlayViewModel; +import com.android.systemui.biometrics.ui.viewmodel.PromptUdfpsTouchOverlayViewModel; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor; import com.android.systemui.dagger.SysUISingleton; @@ -178,6 +179,8 @@ public class UdfpsController implements DozeReceiver, Dumpable { mDeviceEntryUdfpsTouchOverlayViewModel; @NonNull private final Lazy<DefaultUdfpsTouchOverlayViewModel> mDefaultUdfpsTouchOverlayViewModel; + @NonNull private final Lazy<PromptUdfpsTouchOverlayViewModel> + mPromptUdfpsTouchOverlayViewModel; @NonNull private final AlternateBouncerInteractor mAlternateBouncerInteractor; @NonNull private final UdfpsOverlayInteractor mUdfpsOverlayInteractor; @NonNull private final PowerInteractor mPowerInteractor; @@ -272,18 +275,11 @@ public class UdfpsController implements DozeReceiver, Dumpable { mUdfpsOverlayInteractor.setRequestId(requestId); mFgExecutor.execute(() -> UdfpsController.this.showUdfpsOverlay( new UdfpsControllerOverlay( - mContext, mInflater, mWindowManager, mAccessibilityManager, - mStatusBarStateController, - mKeyguardViewManager, mKeyguardUpdateMonitor, - mDialogManager, - mDumpManager, - mConfigurationController, mKeyguardStateController, - mUnlockedScreenOffAnimationController, mUdfpsDisplayMode, requestId, reason, @@ -292,14 +288,10 @@ public class UdfpsController implements DozeReceiver, Dumpable { requestId, event ), - mActivityTransitionAnimator, - mPrimaryBouncerInteractor, - mAlternateBouncerInteractor, mKeyguardTransitionInteractor, - mSelectedUserInteractor, mDeviceEntryUdfpsTouchOverlayViewModel, mDefaultUdfpsTouchOverlayViewModel, - mShadeInteractor, + mPromptUdfpsTouchOverlayViewModel, mUdfpsOverlayInteractor, mPowerInteractor, mScope @@ -697,6 +689,7 @@ public class UdfpsController implements DozeReceiver, Dumpable { @NonNull KeyguardTransitionInteractor keyguardTransitionInteractor, Lazy<DeviceEntryUdfpsTouchOverlayViewModel> deviceEntryUdfpsTouchOverlayViewModel, Lazy<DefaultUdfpsTouchOverlayViewModel> defaultUdfpsTouchOverlayViewModel, + Lazy<PromptUdfpsTouchOverlayViewModel> promptUdfpsTouchOverlayViewModel, @NonNull UdfpsOverlayInteractor udfpsOverlayInteractor, @NonNull PowerInteractor powerInteractor, @Application CoroutineScope scope, @@ -752,6 +745,7 @@ public class UdfpsController implements DozeReceiver, Dumpable { mSessionTracker = sessionTracker; mDeviceEntryUdfpsTouchOverlayViewModel = deviceEntryUdfpsTouchOverlayViewModel; mDefaultUdfpsTouchOverlayViewModel = defaultUdfpsTouchOverlayViewModel; + mPromptUdfpsTouchOverlayViewModel = promptUdfpsTouchOverlayViewModel; mDumpManager.registerDumpable(TAG, this); @@ -827,7 +821,7 @@ public class UdfpsController implements DozeReceiver, Dumpable { + " isn't running on keyguard. Skip show."); return; } - if (overlay.show(this, mOverlayParams)) { + if (overlay.show(mOverlayParams)) { Log.d(TAG, "showUdfpsOverlay | adding window reason=" + requestReason); mOnFingerDown = false; mAttemptedToDismissKeyguard = false; diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt index 61b670715572..1e6567ea3158 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsControllerOverlay.kt @@ -18,7 +18,6 @@ package com.android.systemui.biometrics import android.annotation.SuppressLint import android.annotation.UiThread -import android.content.Context import android.graphics.PixelFormat import android.graphics.Rect import android.hardware.biometrics.BiometricRequestConstants.REASON_AUTH_BP @@ -27,10 +26,8 @@ import android.hardware.biometrics.BiometricRequestConstants.REASON_ENROLL_ENROL import android.hardware.biometrics.BiometricRequestConstants.REASON_ENROLL_FIND_SENSOR import android.hardware.biometrics.BiometricRequestConstants.RequestReason import android.hardware.fingerprint.IUdfpsOverlayControllerCallback -import android.os.Build import android.os.RemoteException import android.os.Trace -import android.provider.Settings import android.util.Log import android.util.RotationUtils import android.view.LayoutInflater @@ -40,32 +37,21 @@ import android.view.View import android.view.WindowManager import android.view.accessibility.AccessibilityManager import android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener -import androidx.annotation.VisibleForTesting import com.android.app.tracing.coroutines.launchTraced as launch import com.android.keyguard.KeyguardUpdateMonitor -import com.android.systemui.animation.ActivityTransitionAnimator import com.android.systemui.biometrics.domain.interactor.UdfpsOverlayInteractor import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams import com.android.systemui.biometrics.ui.binder.UdfpsTouchOverlayBinder import com.android.systemui.biometrics.ui.view.UdfpsTouchOverlay import com.android.systemui.biometrics.ui.viewmodel.DefaultUdfpsTouchOverlayViewModel import com.android.systemui.biometrics.ui.viewmodel.DeviceEntryUdfpsTouchOverlayViewModel -import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor -import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor +import com.android.systemui.biometrics.ui.viewmodel.PromptUdfpsTouchOverlayViewModel import com.android.systemui.dagger.qualifiers.Application -import com.android.systemui.dump.DumpManager import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.KeyguardState -import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.res.R -import com.android.systemui.shade.domain.interactor.ShadeInteractor -import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager -import com.android.systemui.statusbar.phone.SystemUIDialogManager -import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController -import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController -import com.android.systemui.user.domain.interactor.SelectedUserInteractor import dagger.Lazy import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -75,42 +61,27 @@ import kotlinx.coroutines.flow.map private const val TAG = "UdfpsControllerOverlay" -@VisibleForTesting const val SETTING_REMOVE_ENROLLMENT_UI = "udfps_overlay_remove_enrollment_ui" - /** * Keeps track of the overlay state and UI resources associated with a single FingerprintService * request. This state can persist across configuration changes via the [show] and [hide] methods. */ @UiThread class UdfpsControllerOverlay -@JvmOverloads constructor( - private val context: Context, private val inflater: LayoutInflater, private val windowManager: WindowManager, private val accessibilityManager: AccessibilityManager, - private val statusBarStateController: StatusBarStateController, - private val statusBarKeyguardViewManager: StatusBarKeyguardViewManager, private val keyguardUpdateMonitor: KeyguardUpdateMonitor, - private val dialogManager: SystemUIDialogManager, - private val dumpManager: DumpManager, - private val configurationController: ConfigurationController, private val keyguardStateController: KeyguardStateController, - private val unlockedScreenOffAnimationController: UnlockedScreenOffAnimationController, private var udfpsDisplayModeProvider: UdfpsDisplayModeProvider, val requestId: Long, @RequestReason val requestReason: Int, private val controllerCallback: IUdfpsOverlayControllerCallback, private val onTouch: (View, MotionEvent) -> Boolean, - private val activityTransitionAnimator: ActivityTransitionAnimator, - private val primaryBouncerInteractor: PrimaryBouncerInteractor, - private val alternateBouncerInteractor: AlternateBouncerInteractor, - private val isDebuggable: Boolean = Build.IS_DEBUGGABLE, - private val transitionInteractor: KeyguardTransitionInteractor, - private val selectedUserInteractor: SelectedUserInteractor, + transitionInteractor: KeyguardTransitionInteractor, private val deviceEntryUdfpsTouchOverlayViewModel: Lazy<DeviceEntryUdfpsTouchOverlayViewModel>, private val defaultUdfpsTouchOverlayViewModel: Lazy<DefaultUdfpsTouchOverlayViewModel>, - private val shadeInteractor: ShadeInteractor, + private val promptUdfpsTouchOverlayViewModel: Lazy<PromptUdfpsTouchOverlayViewModel>, private val udfpsOverlayInteractor: UdfpsOverlayInteractor, private val powerInteractor: PowerInteractor, @Application private val scope: CoroutineScope, @@ -170,20 +141,9 @@ constructor( private var touchExplorationEnabled = false - private fun shouldRemoveEnrollmentUi(): Boolean { - if (isDebuggable) { - return Settings.Global.getInt( - context.contentResolver, - SETTING_REMOVE_ENROLLMENT_UI, - 0, /* def */ - ) != 0 - } - return false - } - /** Show the overlay or return false and do nothing if it is already showing. */ @SuppressLint("ClickableViewAccessibility") - fun show(controller: UdfpsController, params: UdfpsOverlayParams): Boolean { + fun show(params: UdfpsOverlayParams): Boolean { if (getTouchOverlay() == null) { overlayParams = params sensorBounds = Rect(params.sensorBounds) @@ -206,6 +166,12 @@ constructor( viewModel = deviceEntryUdfpsTouchOverlayViewModel.get(), udfpsOverlayInteractor = udfpsOverlayInteractor, ) + REASON_AUTH_BP -> + UdfpsTouchOverlayBinder.bind( + view = this, + viewModel = promptUdfpsTouchOverlayViewModel.get(), + udfpsOverlayInteractor = udfpsOverlayInteractor, + ) else -> UdfpsTouchOverlayBinder.bind( view = this, @@ -340,7 +306,7 @@ constructor( val rot = overlayParams.rotation if (rot == Surface.ROTATION_90 || rot == Surface.ROTATION_270) { - if (!shouldRotate(animation)) { + if (!shouldRotate()) { Log.v( TAG, "Skip rotating UDFPS bounds " + @@ -375,7 +341,7 @@ constructor( return this } - private fun shouldRotate(animation: UdfpsAnimationViewController<*>?): Boolean { + private fun shouldRotate(): Boolean { if (!keyguardStateController.isShowing) { // always rotate view if we're not on the keyguard return true diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptUdfpsTouchOverlayViewModel.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptUdfpsTouchOverlayViewModel.kt new file mode 100644 index 000000000000..d8c659ee18a8 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptUdfpsTouchOverlayViewModel.kt @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.biometrics.ui.viewmodel + +import javax.inject.Inject +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow + +class PromptUdfpsTouchOverlayViewModel @Inject constructor() : UdfpsTouchOverlayViewModel { + // Biometric Prompt should always handle touches + override val shouldHandleTouches: Flow<Boolean> = MutableStateFlow(true) +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt index a9e6a3ebdb30..2c12ef67034e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerOverlayTest.kt @@ -30,35 +30,25 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.SysuiTestCase -import com.android.systemui.animation.ActivityTransitionAnimator 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 -import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor -import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor -import com.android.systemui.dump.DumpManager +import com.android.systemui.biometrics.ui.viewmodel.PromptUdfpsTouchOverlayViewModel import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.kosmos.testScope -import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.power.data.repository.FakePowerRepository import com.android.systemui.power.data.repository.fakePowerRepository import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.power.shared.model.WakeSleepReason import com.android.systemui.power.shared.model.WakefulnessState -import com.android.systemui.shade.domain.interactor.ShadeInteractor -import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager -import com.android.systemui.statusbar.phone.SystemUIDialogManager -import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController -import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.testKosmos -import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent @@ -67,10 +57,8 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith -import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.eq -import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.never import org.mockito.Mockito.verify @@ -79,12 +67,6 @@ import org.mockito.junit.MockitoJUnit private const val REQUEST_ID = 2L -// Dimensions for the current display resolution. -private const val DISPLAY_WIDTH = 1080 -private const val DISPLAY_HEIGHT = 1920 -private const val SENSOR_WIDTH = 30 -private const val SENSOR_HEIGHT = 60 - @SmallTest @RunWith(AndroidJUnit4::class) @RunWithLooper(setAsMainLooper = true) @@ -96,30 +78,17 @@ class UdfpsControllerOverlayTest : SysuiTestCase() { @Mock private lateinit var inflater: LayoutInflater @Mock private lateinit var windowManager: WindowManager @Mock private lateinit var accessibilityManager: AccessibilityManager - @Mock private lateinit var statusBarStateController: StatusBarStateController - @Mock private lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor - @Mock private lateinit var dialogManager: SystemUIDialogManager - @Mock private lateinit var dumpManager: DumpManager - @Mock private lateinit var configurationController: ConfigurationController @Mock private lateinit var keyguardStateController: KeyguardStateController - @Mock - private lateinit var unlockedScreenOffAnimationController: UnlockedScreenOffAnimationController @Mock private lateinit var udfpsDisplayMode: UdfpsDisplayModeProvider @Mock private lateinit var controllerCallback: IUdfpsOverlayControllerCallback - @Mock private lateinit var udfpsController: UdfpsController - @Mock private lateinit var mActivityTransitionAnimator: ActivityTransitionAnimator - @Mock private lateinit var primaryBouncerInteractor: PrimaryBouncerInteractor - @Mock private lateinit var alternateBouncerInteractor: AlternateBouncerInteractor - @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock private lateinit var deviceEntryUdfpsTouchOverlayViewModel: DeviceEntryUdfpsTouchOverlayViewModel @Mock private lateinit var defaultUdfpsTouchOverlayViewModel: DefaultUdfpsTouchOverlayViewModel + @Mock private lateinit var promptUdfpsTouchOverlayViewModel: PromptUdfpsTouchOverlayViewModel @Mock private lateinit var keyguardTransitionRepository: FakeKeyguardTransitionRepository 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 lateinit var powerRepository: FakePowerRepository private lateinit var powerInteractor: PowerInteractor @@ -138,48 +107,28 @@ class UdfpsControllerOverlayTest : SysuiTestCase() { keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor } - private suspend fun withReasonSuspend( - @RequestReason reason: Int, - isDebuggable: Boolean = false, - block: suspend () -> Unit, - ) { - withReason(reason, isDebuggable) + private suspend fun withReasonSuspend(@RequestReason reason: Int, block: suspend () -> Unit) { + withReason(reason) block() } - private fun withReason( - @RequestReason reason: Int, - isDebuggable: Boolean = false, - block: () -> Unit = {}, - ) { + private fun withReason(@RequestReason reason: Int, block: () -> Unit = {}) { controllerOverlay = UdfpsControllerOverlay( - context, inflater, windowManager, accessibilityManager, - statusBarStateController, - statusBarKeyguardViewManager, keyguardUpdateMonitor, - dialogManager, - dumpManager, - configurationController, keyguardStateController, - unlockedScreenOffAnimationController, udfpsDisplayMode, REQUEST_ID, reason, controllerCallback, onTouch, - mActivityTransitionAnimator, - primaryBouncerInteractor, - alternateBouncerInteractor, - isDebuggable, keyguardTransitionInteractor, - mSelectedUserInteractor, { deviceEntryUdfpsTouchOverlayViewModel }, { defaultUdfpsTouchOverlayViewModel }, - shadeInteractor, + { promptUdfpsTouchOverlayViewModel }, udfpsOverlayInteractor, powerInteractor, testScope, @@ -204,7 +153,7 @@ class UdfpsControllerOverlayTest : SysuiTestCase() { runCurrent() // WHEN a request comes to show the view - controllerOverlay.show(udfpsController, overlayParams) + controllerOverlay.show(overlayParams) runCurrent() // THEN the view does not get added immediately @@ -232,7 +181,7 @@ class UdfpsControllerOverlayTest : SysuiTestCase() { runCurrent() // WHEN a request comes to show the view - controllerOverlay.show(udfpsController, overlayParams) + controllerOverlay.show(overlayParams) runCurrent() // THEN view isn't added yet @@ -247,7 +196,7 @@ class UdfpsControllerOverlayTest : SysuiTestCase() { fun neverRemoveViewThatHasNotBeenAdded() = testScope.runTest { withReasonSuspend(REASON_AUTH_KEYGUARD) { - controllerOverlay.show(udfpsController, overlayParams) + controllerOverlay.show(overlayParams) val view = controllerOverlay.getTouchOverlay() view?.let { // parent is null, signalling that the view was never added @@ -292,7 +241,7 @@ class UdfpsControllerOverlayTest : SysuiTestCase() { runCurrent() // WHEN a request comes to show the view - controllerOverlay.show(udfpsController, overlayParams) + controllerOverlay.show(overlayParams) runCurrent() // THEN the view does not get added immediately |