Merge "Allow alternateBouncer if at least once source has ui available" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
cadad8e43f
@@ -186,7 +186,7 @@ constructor(
|
||||
}
|
||||
|
||||
private fun listenForAlternateBouncerVisibility() {
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(true)
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(true, "SideFpsController")
|
||||
scope.launch {
|
||||
alternateBouncerInteractor.isVisible.collect { isVisible: Boolean ->
|
||||
if (isVisible) {
|
||||
|
||||
@@ -83,6 +83,7 @@ constructor(
|
||||
dumpManager,
|
||||
),
|
||||
UdfpsKeyguardViewControllerAdapter {
|
||||
private val uniqueIdentifier = this.toString()
|
||||
private val useExpandedOverlay: Boolean =
|
||||
featureFlags.isEnabled(Flags.UDFPS_NEW_TOUCH_DETECTION)
|
||||
private var showingUdfpsBouncer = false
|
||||
@@ -282,7 +283,7 @@ constructor(
|
||||
|
||||
public override fun onViewAttached() {
|
||||
super.onViewAttached()
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(true)
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(true, uniqueIdentifier)
|
||||
val dozeAmount = statusBarStateController.dozeAmount
|
||||
lastDozeAmount = dozeAmount
|
||||
stateListener.onDozeAmountChanged(dozeAmount, dozeAmount)
|
||||
@@ -312,7 +313,7 @@ constructor(
|
||||
|
||||
override fun onViewDetached() {
|
||||
super.onViewDetached()
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(false)
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(false, uniqueIdentifier)
|
||||
faceDetectRunning = false
|
||||
keyguardStateController.removeCallback(keyguardStateControllerCallback)
|
||||
statusBarStateController.removeCallback(stateListener)
|
||||
|
||||
@@ -46,6 +46,7 @@ open class UdfpsKeyguardViewController(
|
||||
dumpManager,
|
||||
),
|
||||
UdfpsKeyguardViewControllerAdapter {
|
||||
private val uniqueIdentifier = this.toString()
|
||||
override val tag: String
|
||||
get() = TAG
|
||||
|
||||
@@ -55,12 +56,12 @@ open class UdfpsKeyguardViewController(
|
||||
|
||||
public override fun onViewAttached() {
|
||||
super.onViewAttached()
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(true)
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(true, uniqueIdentifier)
|
||||
}
|
||||
|
||||
public override fun onViewDetached() {
|
||||
super.onViewDetached()
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(false)
|
||||
alternateBouncerInteractor.setAlternateBouncerUIAvailable(false, uniqueIdentifier)
|
||||
}
|
||||
|
||||
override fun shouldPauseAuth(): Boolean {
|
||||
|
||||
@@ -40,6 +40,7 @@ constructor(
|
||||
) {
|
||||
var receivedDownTouch = false
|
||||
val isVisible: Flow<Boolean> = bouncerRepository.alternateBouncerVisible
|
||||
private val alternateBouncerUiAvailableFromSource: HashSet<String> = HashSet()
|
||||
|
||||
/**
|
||||
* Sets the correct bouncer states to show the alternate bouncer if it can show.
|
||||
@@ -69,8 +70,15 @@ constructor(
|
||||
return bouncerRepository.alternateBouncerVisible.value
|
||||
}
|
||||
|
||||
fun setAlternateBouncerUIAvailable(isAvailable: Boolean) {
|
||||
bouncerRepository.setAlternateBouncerUIAvailable(isAvailable)
|
||||
fun setAlternateBouncerUIAvailable(isAvailable: Boolean, token: String) {
|
||||
if (isAvailable) {
|
||||
alternateBouncerUiAvailableFromSource.add(token)
|
||||
} else {
|
||||
alternateBouncerUiAvailableFromSource.remove(token)
|
||||
}
|
||||
bouncerRepository.setAlternateBouncerUIAvailable(
|
||||
alternateBouncerUiAvailableFromSource.isNotEmpty()
|
||||
)
|
||||
}
|
||||
|
||||
fun canShowAlternateBouncerForFingerprint(): Boolean {
|
||||
|
||||
@@ -165,6 +165,28 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
|
||||
assertFalse(bouncerRepository.alternateBouncerVisible.value)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun alternateBouncerUiAvailable_fromMultipleSources() {
|
||||
assertFalse(bouncerRepository.alternateBouncerUIAvailable.value)
|
||||
|
||||
// GIVEN there are two different sources indicating the alternate bouncer is available
|
||||
underTest.setAlternateBouncerUIAvailable(true, "source1")
|
||||
underTest.setAlternateBouncerUIAvailable(true, "source2")
|
||||
assertTrue(bouncerRepository.alternateBouncerUIAvailable.value)
|
||||
|
||||
// WHEN one of the sources no longer says the UI is available
|
||||
underTest.setAlternateBouncerUIAvailable(false, "source1")
|
||||
|
||||
// THEN alternate bouncer UI is still available (from the other source)
|
||||
assertTrue(bouncerRepository.alternateBouncerUIAvailable.value)
|
||||
|
||||
// WHEN all sources say the UI is not available
|
||||
underTest.setAlternateBouncerUIAvailable(false, "source2")
|
||||
|
||||
// THEN alternate boucer UI is not available
|
||||
assertFalse(bouncerRepository.alternateBouncerUIAvailable.value)
|
||||
}
|
||||
|
||||
private fun givenCanShowAlternateBouncer() {
|
||||
bouncerRepository.setAlternateBouncerUIAvailable(true)
|
||||
biometricSettingsRepository.setFingerprintEnrolled(true)
|
||||
|
||||
Reference in New Issue
Block a user