Remove ModernAlternateBouncer flag & legacyAltBouncer code
Test: atest StatusBarKeyguardViewManagerTest AlternateBouncerInteractorTest SideFpsControllerTest UdfpsKeyguardViewControllerWIthCoroutinesTest Test: manually show alternate bouncer with sfps and udfps over the lockscreen, occluding app, notification shade and see altBouncer functions as desired Fixes: 260619425 Change-Id: Ib1e5d07ab44482fc42c1a1bcfc45207d4b0a9aad
This commit is contained in:
@@ -59,8 +59,6 @@ import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Application
|
||||
import com.android.systemui.dagger.qualifiers.Main
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.flags.FeatureFlags
|
||||
import com.android.systemui.flags.Flags
|
||||
import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor
|
||||
import com.android.systemui.recents.OverviewProxyService
|
||||
import com.android.systemui.util.concurrency.DelayableExecutor
|
||||
@@ -90,7 +88,6 @@ constructor(
|
||||
@Main private val handler: Handler,
|
||||
private val alternateBouncerInteractor: AlternateBouncerInteractor,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val featureFlags: FeatureFlags,
|
||||
dumpManager: DumpManager
|
||||
) : Dumpable {
|
||||
private val requests: HashSet<SideFpsUiRequestSource> = HashSet()
|
||||
@@ -191,14 +188,12 @@ constructor(
|
||||
|
||||
private fun listenForAlternateBouncerVisibility() {
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(true)
|
||||
if (featureFlags.isEnabled(Flags.MODERN_ALTERNATE_BOUNCER)) {
|
||||
scope.launch {
|
||||
alternateBouncerInteractor.isVisible.collect { isVisible: Boolean ->
|
||||
if (isVisible) {
|
||||
show(SideFpsUiRequestSource.ALTERNATE_BOUNCER, REASON_AUTH_KEYGUARD)
|
||||
} else {
|
||||
hide(SideFpsUiRequestSource.ALTERNATE_BOUNCER)
|
||||
}
|
||||
scope.launch {
|
||||
alternateBouncerInteractor.isVisible.collect { isVisible: Boolean ->
|
||||
if (isVisible) {
|
||||
show(SideFpsUiRequestSource.ALTERNATE_BOUNCER, REASON_AUTH_KEYGUARD)
|
||||
} else {
|
||||
hide(SideFpsUiRequestSource.ALTERNATE_BOUNCER)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,6 @@ import com.android.systemui.statusbar.StatusBarState
|
||||
import com.android.systemui.statusbar.notification.stack.StackStateAnimator
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.KeyguardViewManagerCallback
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.LegacyAlternateBouncer
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.OccludingAppBiometricUI
|
||||
import com.android.systemui.statusbar.phone.SystemUIDialogManager
|
||||
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController
|
||||
@@ -82,8 +81,6 @@ constructor(
|
||||
) {
|
||||
private val useExpandedOverlay: Boolean =
|
||||
featureFlags.isEnabled(Flags.UDFPS_NEW_TOUCH_DETECTION)
|
||||
private val isModernAlternateBouncerEnabled: Boolean =
|
||||
featureFlags.isEnabled(Flags.MODERN_ALTERNATE_BOUNCER)
|
||||
private var showingUdfpsBouncer = false
|
||||
private var udfpsRequested = false
|
||||
private var qsExpansion = 0f
|
||||
@@ -107,7 +104,7 @@ constructor(
|
||||
)
|
||||
}
|
||||
}
|
||||
private var inputBouncerExpansion = 0f // only used for modernBouncer
|
||||
private var inputBouncerExpansion = 0f
|
||||
|
||||
private val stateListener: StatusBarStateController.StateListener =
|
||||
object : StatusBarStateController.StateListener {
|
||||
@@ -251,7 +248,7 @@ constructor(
|
||||
// that may make the view visible again.
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
listenForBouncerExpansion(this)
|
||||
if (isModernAlternateBouncerEnabled) listenForAlternateBouncerVisibility(this)
|
||||
listenForAlternateBouncerVisibility(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -295,7 +292,6 @@ constructor(
|
||||
view.updatePadding()
|
||||
updateAlpha()
|
||||
updatePauseAuth()
|
||||
keyguardViewManager.setLegacyAlternateBouncer(legacyAlternateBouncer)
|
||||
keyguardViewManager.setOccludingAppBiometricUI(occludingAppBiometricUI)
|
||||
lockScreenShadeTransitionController.udfpsKeyguardViewController = this
|
||||
activityLaunchAnimator.addListener(activityLaunchAnimatorListener)
|
||||
@@ -309,7 +305,6 @@ constructor(
|
||||
faceDetectRunning = false
|
||||
keyguardStateController.removeCallback(keyguardStateControllerCallback)
|
||||
statusBarStateController.removeCallback(stateListener)
|
||||
keyguardViewManager.removeLegacyAlternateBouncer(legacyAlternateBouncer)
|
||||
keyguardViewManager.removeOccludingAppBiometricUI(occludingAppBiometricUI)
|
||||
keyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false)
|
||||
configurationController.removeCallback(configurationListener)
|
||||
@@ -323,7 +318,6 @@ constructor(
|
||||
|
||||
override fun dump(pw: PrintWriter, args: Array<String>) {
|
||||
super.dump(pw, args)
|
||||
pw.println("isModernAlternateBouncerEnabled=$isModernAlternateBouncerEnabled")
|
||||
pw.println("showingUdfpsAltBouncer=$showingUdfpsBouncer")
|
||||
pw.println(
|
||||
"altBouncerInteractor#isAlternateBouncerVisible=" +
|
||||
@@ -473,22 +467,6 @@ constructor(
|
||||
private fun updateScaleFactor() {
|
||||
udfpsController.mOverlayParams?.scaleFactor?.let { view.setScaleFactor(it) }
|
||||
}
|
||||
|
||||
private val legacyAlternateBouncer: LegacyAlternateBouncer =
|
||||
object : LegacyAlternateBouncer {
|
||||
override fun showAlternateBouncer(): Boolean {
|
||||
return showUdfpsBouncer(true)
|
||||
}
|
||||
|
||||
override fun hideAlternateBouncer(): Boolean {
|
||||
return showUdfpsBouncer(false)
|
||||
}
|
||||
|
||||
override fun isShowingAlternateBouncer(): Boolean {
|
||||
return showingUdfpsBouncer
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "UdfpsKeyguardViewController"
|
||||
}
|
||||
|
||||
@@ -169,13 +169,6 @@ object Flags {
|
||||
@JvmField
|
||||
val LIGHT_REVEAL_MIGRATION = unreleasedFlag(218, "light_reveal_migration", teamfood = false)
|
||||
|
||||
/**
|
||||
* Whether to use the new alternate bouncer architecture, a refactor of and eventual replacement
|
||||
* of the Alternate/Authentication Bouncer. No visual UI changes.
|
||||
*/
|
||||
// TODO(b/260619425): Tracking Bug
|
||||
@JvmField val MODERN_ALTERNATE_BOUNCER = releasedFlag(219, "modern_alternate_bouncer")
|
||||
|
||||
/** Flag to control the migration of face auth to modern architecture. */
|
||||
// TODO(b/262838215): Tracking bug
|
||||
@JvmField val FACE_AUTH_REFACTOR = unreleasedFlag(220, "face_auth_refactor")
|
||||
|
||||
@@ -16,15 +16,11 @@
|
||||
|
||||
package com.android.systemui.keyguard.domain.interactor
|
||||
|
||||
import com.android.keyguard.KeyguardUpdateMonitor
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.flags.FeatureFlags
|
||||
import com.android.systemui.flags.Flags
|
||||
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
|
||||
import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.LegacyAlternateBouncer
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController
|
||||
import com.android.systemui.util.time.SystemClock
|
||||
import javax.inject.Inject
|
||||
@@ -41,13 +37,7 @@ constructor(
|
||||
private val biometricSettingsRepository: BiometricSettingsRepository,
|
||||
private val deviceEntryFingerprintAuthRepository: DeviceEntryFingerprintAuthRepository,
|
||||
private val systemClock: SystemClock,
|
||||
private val keyguardUpdateMonitor: KeyguardUpdateMonitor,
|
||||
featureFlags: FeatureFlags,
|
||||
) {
|
||||
val isModernAlternateBouncerEnabled = featureFlags.isEnabled(Flags.MODERN_ALTERNATE_BOUNCER)
|
||||
var legacyAlternateBouncer: LegacyAlternateBouncer? = null
|
||||
var legacyAlternateBouncerVisibleTime: Long = NOT_VISIBLE
|
||||
|
||||
var receivedDownTouch = false
|
||||
val isVisible: Flow<Boolean> = bouncerRepository.alternateBouncerVisible
|
||||
|
||||
@@ -68,21 +58,8 @@ constructor(
|
||||
* @return whether alternateBouncer is visible
|
||||
*/
|
||||
fun show(): Boolean {
|
||||
return when {
|
||||
isModernAlternateBouncerEnabled -> {
|
||||
bouncerRepository.setAlternateVisible(canShowAlternateBouncerForFingerprint())
|
||||
isVisibleState()
|
||||
}
|
||||
canShowAlternateBouncerForFingerprint() -> {
|
||||
if (legacyAlternateBouncer?.showAlternateBouncer() == true) {
|
||||
legacyAlternateBouncerVisibleTime = systemClock.uptimeMillis()
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
else -> false
|
||||
}
|
||||
bouncerRepository.setAlternateVisible(canShowAlternateBouncerForFingerprint())
|
||||
return isVisibleState()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -94,21 +71,13 @@ constructor(
|
||||
*/
|
||||
fun hide(): Boolean {
|
||||
receivedDownTouch = false
|
||||
return if (isModernAlternateBouncerEnabled) {
|
||||
val wasAlternateBouncerVisible = isVisibleState()
|
||||
bouncerRepository.setAlternateVisible(false)
|
||||
wasAlternateBouncerVisible && !isVisibleState()
|
||||
} else {
|
||||
legacyAlternateBouncer?.hideAlternateBouncer() ?: false
|
||||
}
|
||||
val wasAlternateBouncerVisible = isVisibleState()
|
||||
bouncerRepository.setAlternateVisible(false)
|
||||
return wasAlternateBouncerVisible && !isVisibleState()
|
||||
}
|
||||
|
||||
fun isVisibleState(): Boolean {
|
||||
return if (isModernAlternateBouncerEnabled) {
|
||||
bouncerRepository.alternateBouncerVisible.value
|
||||
} else {
|
||||
legacyAlternateBouncer?.isShowingAlternateBouncer ?: false
|
||||
}
|
||||
return bouncerRepository.alternateBouncerVisible.value
|
||||
}
|
||||
|
||||
fun setAlternateBouncerUIAvailable(isAvailable: Boolean) {
|
||||
@@ -116,18 +85,13 @@ constructor(
|
||||
}
|
||||
|
||||
fun canShowAlternateBouncerForFingerprint(): Boolean {
|
||||
return if (isModernAlternateBouncerEnabled) {
|
||||
bouncerRepository.alternateBouncerUIAvailable.value &&
|
||||
biometricSettingsRepository.isFingerprintEnrolled.value &&
|
||||
biometricSettingsRepository.isStrongBiometricAllowed.value &&
|
||||
biometricSettingsRepository.isFingerprintEnabledByDevicePolicy.value &&
|
||||
!deviceEntryFingerprintAuthRepository.isLockedOut.value &&
|
||||
!keyguardStateController.isUnlocked &&
|
||||
!statusBarStateController.isDozing
|
||||
} else {
|
||||
legacyAlternateBouncer != null &&
|
||||
keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(true)
|
||||
}
|
||||
return bouncerRepository.alternateBouncerUIAvailable.value &&
|
||||
biometricSettingsRepository.isFingerprintEnrolled.value &&
|
||||
biometricSettingsRepository.isStrongBiometricAllowed.value &&
|
||||
biometricSettingsRepository.isFingerprintEnabledByDevicePolicy.value &&
|
||||
!deviceEntryFingerprintAuthRepository.isLockedOut.value &&
|
||||
!keyguardStateController.isUnlocked &&
|
||||
!statusBarStateController.isDozing
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -135,12 +99,8 @@ constructor(
|
||||
* alternate bouncer and show the primary bouncer.
|
||||
*/
|
||||
fun hasAlternateBouncerShownWithMinTime(): Boolean {
|
||||
return if (isModernAlternateBouncerEnabled) {
|
||||
(systemClock.uptimeMillis() - bouncerRepository.lastAlternateBouncerVisibleTime) >
|
||||
MIN_VISIBILITY_DURATION_UNTIL_TOUCHES_DISMISS_ALTERNATE_BOUNCER_MS
|
||||
} else {
|
||||
systemClock.uptimeMillis() - legacyAlternateBouncerVisibleTime > 200
|
||||
}
|
||||
return (systemClock.uptimeMillis() - bouncerRepository.lastAlternateBouncerVisibleTime) >
|
||||
MIN_VISIBILITY_DURATION_UNTIL_TOUCHES_DISMISS_ALTERNATE_BOUNCER_MS
|
||||
}
|
||||
|
||||
private fun maybeHide() {
|
||||
@@ -151,6 +111,5 @@ constructor(
|
||||
|
||||
companion object {
|
||||
private const val MIN_VISIBILITY_DURATION_UNTIL_TOUCHES_DISMISS_ALTERNATE_BOUNCER_MS = 200L
|
||||
private const val NOT_VISIBLE = -1L
|
||||
}
|
||||
}
|
||||
|
||||
@@ -281,7 +281,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
private boolean mLastScreenOffAnimationPlaying;
|
||||
private float mQsExpansion;
|
||||
final Set<KeyguardViewManagerCallback> mCallbacks = new HashSet<>();
|
||||
private boolean mIsModernAlternateBouncerEnabled;
|
||||
private boolean mIsBackAnimationEnabled;
|
||||
private final boolean mUdfpsNewTouchDetectionEnabled;
|
||||
private final UdfpsOverlayInteractor mUdfpsOverlayInteractor;
|
||||
@@ -363,7 +362,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
mPrimaryBouncerView = primaryBouncerView;
|
||||
mFoldAodAnimationController = sysUIUnfoldComponent
|
||||
.map(SysUIUnfoldComponent::getFoldAodAnimationController).orElse(null);
|
||||
mIsModernAlternateBouncerEnabled = featureFlags.isEnabled(Flags.MODERN_ALTERNATE_BOUNCER);
|
||||
mAlternateBouncerInteractor = alternateBouncerInteractor;
|
||||
mIsBackAnimationEnabled =
|
||||
featureFlags.isEnabled(Flags.WM_ENABLE_PREDICTIVE_BACK_BOUNCER_ANIM);
|
||||
@@ -395,35 +393,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
registerListeners();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the given legacy alternate bouncer to null if it's the current alternate bouncer. Else,
|
||||
* does nothing. Only used if modern alternate bouncer is NOT enabled.
|
||||
*/
|
||||
public void removeLegacyAlternateBouncer(
|
||||
@NonNull LegacyAlternateBouncer alternateBouncerLegacy) {
|
||||
if (!mIsModernAlternateBouncerEnabled) {
|
||||
if (Objects.equals(mAlternateBouncerInteractor.getLegacyAlternateBouncer(),
|
||||
alternateBouncerLegacy)) {
|
||||
mAlternateBouncerInteractor.setLegacyAlternateBouncer(null);
|
||||
hideAlternateBouncer(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a new legacy alternate bouncer. Only used if modern alternate bouncer is NOT enabled.
|
||||
*/
|
||||
public void setLegacyAlternateBouncer(@NonNull LegacyAlternateBouncer alternateBouncerLegacy) {
|
||||
if (!mIsModernAlternateBouncerEnabled) {
|
||||
if (!Objects.equals(mAlternateBouncerInteractor.getLegacyAlternateBouncer(),
|
||||
alternateBouncerLegacy)) {
|
||||
mAlternateBouncerInteractor.setLegacyAlternateBouncer(alternateBouncerLegacy);
|
||||
hideAlternateBouncer(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the given OccludingAppBiometricUI to null if it's the current auth interceptor. Else,
|
||||
@@ -1386,7 +1355,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
|
||||
public void dump(PrintWriter pw) {
|
||||
pw.println("StatusBarKeyguardViewManager:");
|
||||
pw.println(" mIsModernAlternateBouncerEnabled: " + mIsModernAlternateBouncerEnabled);
|
||||
pw.println(" mRemoteInputActive: " + mRemoteInputActive);
|
||||
pw.println(" mDozing: " + mDozing);
|
||||
pw.println(" mAfterKeyguardGoneAction: " + mAfterKeyguardGoneAction);
|
||||
@@ -1584,28 +1552,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
|| mode == KeyguardSecurityModel.SecurityMode.SimPuk;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Delegate used to send show and hide events to an alternate bouncer.
|
||||
*/
|
||||
public interface LegacyAlternateBouncer {
|
||||
/**
|
||||
* Show alternate authentication bouncer.
|
||||
* @return whether alternate auth method was newly shown
|
||||
*/
|
||||
boolean showAlternateBouncer();
|
||||
|
||||
/**
|
||||
* Hide alternate authentication bouncer
|
||||
* @return whether the alternate auth method was newly hidden
|
||||
*/
|
||||
boolean hideAlternateBouncer();
|
||||
|
||||
/**
|
||||
* @return true if the alternate auth bouncer is showing
|
||||
*/
|
||||
boolean isShowingAlternateBouncer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delegate used to send show and hide events to an alternate authentication method instead of
|
||||
* the regular pin/pattern/password bouncer.
|
||||
|
||||
@@ -51,13 +51,10 @@ import android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG
|
||||
import android.view.WindowMetrics
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.airbnb.lottie.LottieAnimationView
|
||||
import com.android.keyguard.KeyguardUpdateMonitor
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.SysuiTestableContext
|
||||
import com.android.systemui.dump.DumpManager
|
||||
import com.android.systemui.flags.FakeFeatureFlags
|
||||
import com.android.systemui.flags.Flags.MODERN_ALTERNATE_BOUNCER
|
||||
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
||||
import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository
|
||||
import com.android.systemui.keyguard.data.repository.FakeKeyguardBouncerRepository
|
||||
@@ -113,7 +110,6 @@ class SideFpsControllerTest : SysuiTestCase() {
|
||||
|
||||
private lateinit var keyguardBouncerRepository: FakeKeyguardBouncerRepository
|
||||
private lateinit var alternateBouncerInteractor: AlternateBouncerInteractor
|
||||
private val featureFlags = FakeFeatureFlags()
|
||||
private val executor = FakeExecutor(FakeSystemClock())
|
||||
private lateinit var overlayController: ISidefpsController
|
||||
private lateinit var sideFpsController: SideFpsController
|
||||
@@ -134,7 +130,6 @@ class SideFpsControllerTest : SysuiTestCase() {
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
featureFlags.set(MODERN_ALTERNATE_BOUNCER, true)
|
||||
keyguardBouncerRepository = FakeKeyguardBouncerRepository()
|
||||
alternateBouncerInteractor =
|
||||
AlternateBouncerInteractor(
|
||||
@@ -144,8 +139,6 @@ class SideFpsControllerTest : SysuiTestCase() {
|
||||
FakeBiometricSettingsRepository(),
|
||||
FakeDeviceEntryFingerprintAuthRepository(),
|
||||
FakeSystemClock(),
|
||||
mock(KeyguardUpdateMonitor::class.java),
|
||||
featureFlags,
|
||||
)
|
||||
|
||||
context.addMockSystemService(DisplayManager::class.java, displayManager)
|
||||
@@ -246,7 +239,6 @@ class SideFpsControllerTest : SysuiTestCase() {
|
||||
handler,
|
||||
alternateBouncerInteractor,
|
||||
TestCoroutineScope(),
|
||||
featureFlags,
|
||||
dumpManager,
|
||||
)
|
||||
|
||||
|
||||
@@ -147,7 +147,6 @@ public class UdfpsKeyguardViewControllerBaseTest extends SysuiTestCase {
|
||||
|
||||
protected UdfpsKeyguardViewController createUdfpsKeyguardViewController(
|
||||
boolean useModernBouncer, boolean useExpandedOverlay) {
|
||||
mFeatureFlags.set(Flags.MODERN_ALTERNATE_BOUNCER, useModernBouncer);
|
||||
mFeatureFlags.set(Flags.UDFPS_NEW_TOUCH_DETECTION, useExpandedOverlay);
|
||||
UdfpsKeyguardViewController controller = new UdfpsKeyguardViewController(
|
||||
mView,
|
||||
|
||||
@@ -21,9 +21,7 @@ import android.testing.AndroidTestingRunner
|
||||
import android.testing.TestableLooper
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.keyguard.KeyguardSecurityModel
|
||||
import com.android.keyguard.KeyguardUpdateMonitor
|
||||
import com.android.systemui.classifier.FalsingCollector
|
||||
import com.android.systemui.flags.FeatureFlags
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry
|
||||
import com.android.systemui.keyguard.data.BouncerView
|
||||
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
|
||||
@@ -100,8 +98,6 @@ class UdfpsKeyguardViewControllerWithCoroutinesTest : UdfpsKeyguardViewControlle
|
||||
mock(BiometricSettingsRepository::class.java),
|
||||
mock(DeviceEntryFingerprintAuthRepository::class.java),
|
||||
mock(SystemClock::class.java),
|
||||
mock(KeyguardUpdateMonitor::class.java),
|
||||
mock(FeatureFlags::class.java)
|
||||
)
|
||||
return createUdfpsKeyguardViewController(
|
||||
/* useModernBouncer */ true, /* useExpandedOverlay */
|
||||
|
||||
@@ -18,11 +18,8 @@ package com.android.systemui.keyguard.domain.interactor
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.keyguard.KeyguardUpdateMonitor
|
||||
import com.android.keyguard.ViewMediatorCallback
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.flags.FakeFeatureFlags
|
||||
import com.android.systemui.flags.Flags
|
||||
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
||||
import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository
|
||||
@@ -40,10 +37,8 @@ import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.ArgumentCaptor
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.mock
|
||||
import org.mockito.Mockito.verify
|
||||
import org.mockito.MockitoAnnotations
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
@@ -58,9 +53,7 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
||||
@Mock private lateinit var statusBarStateController: StatusBarStateController
|
||||
@Mock private lateinit var keyguardStateController: KeyguardStateController
|
||||
@Mock private lateinit var systemClock: SystemClock
|
||||
@Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor
|
||||
@Mock private lateinit var bouncerLogger: TableLogBuffer
|
||||
private lateinit var featureFlags: FakeFeatureFlags
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
@@ -74,7 +67,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
||||
)
|
||||
biometricSettingsRepository = FakeBiometricSettingsRepository()
|
||||
deviceEntryFingerprintAuthRepository = FakeDeviceEntryFingerprintAuthRepository()
|
||||
featureFlags = FakeFeatureFlags().apply { this.set(Flags.MODERN_ALTERNATE_BOUNCER, true) }
|
||||
underTest =
|
||||
AlternateBouncerInteractor(
|
||||
statusBarStateController,
|
||||
@@ -83,8 +75,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
||||
biometricSettingsRepository,
|
||||
deviceEntryFingerprintAuthRepository,
|
||||
systemClock,
|
||||
keyguardUpdateMonitor,
|
||||
featureFlags,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -134,14 +124,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
||||
assertFalse(underTest.canShowAlternateBouncerForFingerprint())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun canShowAlternateBouncerForFingerprint_isDozing() {
|
||||
givenCanShowAlternateBouncer()
|
||||
whenever(statusBarStateController.isDozing).thenReturn(true)
|
||||
|
||||
assertFalse(underTest.canShowAlternateBouncerForFingerprint())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun show_whenCanShow() {
|
||||
givenCanShowAlternateBouncer()
|
||||
@@ -182,42 +164,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
||||
assertFalse(bouncerRepository.alternateBouncerVisible.value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun onUnlockedIsFalse_doesNotHide() {
|
||||
// GIVEN alternate bouncer is showing
|
||||
bouncerRepository.setAlternateVisible(true)
|
||||
|
||||
val keyguardStateControllerCallbackCaptor =
|
||||
ArgumentCaptor.forClass(KeyguardStateController.Callback::class.java)
|
||||
verify(keyguardStateController).addCallback(keyguardStateControllerCallbackCaptor.capture())
|
||||
|
||||
// WHEN isUnlocked=false
|
||||
givenCanShowAlternateBouncer()
|
||||
whenever(keyguardStateController.isUnlocked).thenReturn(false)
|
||||
keyguardStateControllerCallbackCaptor.value.onUnlockedChanged()
|
||||
|
||||
// THEN the alternate bouncer is still visible
|
||||
assertTrue(bouncerRepository.alternateBouncerVisible.value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun onUnlockedChangedIsTrue_hide() {
|
||||
// GIVEN alternate bouncer is showing
|
||||
bouncerRepository.setAlternateVisible(true)
|
||||
|
||||
val keyguardStateControllerCallbackCaptor =
|
||||
ArgumentCaptor.forClass(KeyguardStateController.Callback::class.java)
|
||||
verify(keyguardStateController).addCallback(keyguardStateControllerCallbackCaptor.capture())
|
||||
|
||||
// WHEN isUnlocked=true
|
||||
givenCanShowAlternateBouncer()
|
||||
whenever(keyguardStateController.isUnlocked).thenReturn(true)
|
||||
keyguardStateControllerCallbackCaptor.value.onUnlockedChanged()
|
||||
|
||||
// THEN the alternate bouncer is hidden
|
||||
assertFalse(bouncerRepository.alternateBouncerVisible.value)
|
||||
}
|
||||
|
||||
private fun givenCanShowAlternateBouncer() {
|
||||
bouncerRepository.setAlternateBouncerUIAvailable(true)
|
||||
biometricSettingsRepository.setFingerprintEnrolled(true)
|
||||
@@ -225,7 +171,6 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
||||
biometricSettingsRepository.setFingerprintEnabledByDevicePolicy(true)
|
||||
deviceEntryFingerprintAuthRepository.setLockedOut(false)
|
||||
whenever(keyguardStateController.isUnlocked).thenReturn(false)
|
||||
whenever(statusBarStateController.isDozing).thenReturn(false)
|
||||
}
|
||||
|
||||
private fun givenCannotShowAlternateBouncer() {
|
||||
|
||||
Reference in New Issue
Block a user