Use the default message as the primary line for fp/face acquisition messages
Also, stop animating the messages to avoid the flicker for fp/face acquisition messages/primary auth lockout messages. Fixes: 293476712 Test: verified manually Test: atest BouncerMessageFactoryTest Test: atest BouncerMessageInteractorTest Change-Id: I5539cdaf843de9a1d4a67797a2eb70eed9b6e0d2
This commit is contained in:
@@ -93,6 +93,7 @@ constructor(
|
||||
fun createFromPromptReason(
|
||||
@BouncerPromptReason reason: Int,
|
||||
userId: Int,
|
||||
secondaryMsgOverride: String? = null
|
||||
): BouncerMessageModel? {
|
||||
val pair =
|
||||
getBouncerMessage(
|
||||
@@ -102,21 +103,16 @@ constructor(
|
||||
)
|
||||
return pair?.let {
|
||||
BouncerMessageModel(
|
||||
message = Message(messageResId = pair.first),
|
||||
secondaryMessage = Message(messageResId = pair.second)
|
||||
message = Message(messageResId = pair.first, animate = false),
|
||||
secondaryMessage =
|
||||
secondaryMsgOverride?.let {
|
||||
Message(message = secondaryMsgOverride, animate = false)
|
||||
}
|
||||
?: Message(messageResId = pair.second, animate = false)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun createFromString(
|
||||
primaryMsg: String? = null,
|
||||
secondaryMsg: String? = null
|
||||
): BouncerMessageModel =
|
||||
BouncerMessageModel(
|
||||
message = primaryMsg?.let { Message(message = it) },
|
||||
secondaryMessage = secondaryMsg?.let { Message(message = it) },
|
||||
)
|
||||
|
||||
/**
|
||||
* Helper method that provides the relevant bouncer message that should be shown for different
|
||||
* scenarios indicated by [reason]. [securityMode] & [fpAllowedInBouncer] parameters are used to
|
||||
@@ -159,6 +155,9 @@ constructor(
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
fun emptyMessage(): BouncerMessageModel =
|
||||
BouncerMessageModel(Message(message = ""), Message(message = ""))
|
||||
}
|
||||
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
|
||||
@@ -86,7 +86,11 @@ constructor(
|
||||
|
||||
repository.setFingerprintAcquisitionMessage(
|
||||
if (value != null) {
|
||||
factory.createFromString(secondaryMsg = value)
|
||||
factory.createFromPromptReason(
|
||||
PROMPT_REASON_DEFAULT,
|
||||
userRepository.getSelectedUserInfo().id,
|
||||
secondaryMsgOverride = value
|
||||
)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
@@ -98,7 +102,11 @@ constructor(
|
||||
|
||||
repository.setFaceAcquisitionMessage(
|
||||
if (value != null) {
|
||||
factory.createFromString(secondaryMsg = value)
|
||||
factory.createFromPromptReason(
|
||||
PROMPT_REASON_DEFAULT,
|
||||
userRepository.getSelectedUserInfo().id,
|
||||
secondaryMsgOverride = value
|
||||
)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
@@ -110,7 +118,11 @@ constructor(
|
||||
|
||||
repository.setCustomMessage(
|
||||
if (value != null) {
|
||||
factory.createFromString(secondaryMsg = value)
|
||||
factory.createFromPromptReason(
|
||||
PROMPT_REASON_DEFAULT,
|
||||
userRepository.getSelectedUserInfo().id,
|
||||
secondaryMsgOverride = value
|
||||
)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
@@ -140,8 +152,7 @@ constructor(
|
||||
// always maps to an empty string.
|
||||
private fun nullOrEmptyMessage() =
|
||||
flowOf(
|
||||
if (featureFlags.isEnabled(REVAMPED_BOUNCER_MESSAGES)) null
|
||||
else factory.createFromString("", "")
|
||||
if (featureFlags.isEnabled(REVAMPED_BOUNCER_MESSAGES)) null else factory.emptyMessage()
|
||||
)
|
||||
|
||||
val bouncerMessage =
|
||||
|
||||
@@ -77,6 +77,22 @@ class BouncerMessageFactoryTest : SysuiTestCase() {
|
||||
.isEqualTo("Unlock with pattern or fingerprint")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun bouncerMessages_overridesSecondaryMessageValue() =
|
||||
testScope.runTest {
|
||||
val bouncerMessageModel =
|
||||
bouncerMessageModel(
|
||||
PIN,
|
||||
true,
|
||||
PROMPT_REASON_DEFAULT,
|
||||
secondaryMessageOverride = "face acquisition message"
|
||||
)!!
|
||||
assertThat(context.resources.getString(bouncerMessageModel.message!!.messageResId!!))
|
||||
.isEqualTo("Unlock with PIN or fingerprint")
|
||||
assertThat(bouncerMessageModel.secondaryMessage!!.message!!)
|
||||
.isEqualTo("face acquisition message")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun bouncerMessages_setsPrimaryAndSecondaryMessage_basedOnSecurityModeAndFpAllowedInBouncer() =
|
||||
testScope.runTest {
|
||||
@@ -149,11 +165,16 @@ class BouncerMessageFactoryTest : SysuiTestCase() {
|
||||
private fun bouncerMessageModel(
|
||||
mode: KeyguardSecurityModel.SecurityMode,
|
||||
fpAllowedInBouncer: Boolean,
|
||||
reason: Int
|
||||
reason: Int,
|
||||
secondaryMessageOverride: String? = null,
|
||||
): BouncerMessageModel? {
|
||||
whenever(securityModel.getSecurityMode(0)).thenReturn(mode)
|
||||
whenever(updateMonitor.isFingerprintAllowedInBouncer).thenReturn(fpAllowedInBouncer)
|
||||
|
||||
return underTest.createFromPromptReason(reason, 0)
|
||||
return underTest.createFromPromptReason(
|
||||
reason,
|
||||
0,
|
||||
secondaryMsgOverride = secondaryMessageOverride
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -363,8 +363,8 @@ class BouncerMessageRepositoryTest : SysuiTestCase() {
|
||||
|
||||
private fun message(primaryResId: Int, secondaryResId: Int): BouncerMessageModel {
|
||||
return BouncerMessageModel(
|
||||
message = Message(messageResId = primaryResId),
|
||||
secondaryMessage = Message(messageResId = secondaryResId)
|
||||
message = Message(messageResId = primaryResId, animate = false),
|
||||
secondaryMessage = Message(messageResId = secondaryResId, animate = false)
|
||||
)
|
||||
}
|
||||
private fun message(value: String): BouncerMessageModel {
|
||||
|
||||
@@ -150,11 +150,12 @@ class BouncerMessageInteractorTest : SysuiTestCase() {
|
||||
|
||||
underTest.setCustomMessage("not empty")
|
||||
|
||||
assertThat(repository.customMessage.value)
|
||||
.isEqualTo(BouncerMessageModel(secondaryMessage = Message(message = "not empty")))
|
||||
val customMessage = repository.customMessage
|
||||
assertThat(customMessage.value!!.message!!.messageResId).isEqualTo(keyguard_enter_pin)
|
||||
assertThat(customMessage.value!!.secondaryMessage!!.message).isEqualTo("not empty")
|
||||
|
||||
underTest.setCustomMessage(null)
|
||||
assertThat(repository.customMessage.value).isNull()
|
||||
assertThat(customMessage.value).isNull()
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -164,11 +165,15 @@ class BouncerMessageInteractorTest : SysuiTestCase() {
|
||||
|
||||
underTest.setFaceAcquisitionMessage("not empty")
|
||||
|
||||
assertThat(repository.faceAcquisitionMessage.value)
|
||||
.isEqualTo(BouncerMessageModel(secondaryMessage = Message(message = "not empty")))
|
||||
val faceAcquisitionMessage = repository.faceAcquisitionMessage
|
||||
|
||||
assertThat(faceAcquisitionMessage.value!!.message!!.messageResId)
|
||||
.isEqualTo(keyguard_enter_pin)
|
||||
assertThat(faceAcquisitionMessage.value!!.secondaryMessage!!.message)
|
||||
.isEqualTo("not empty")
|
||||
|
||||
underTest.setFaceAcquisitionMessage(null)
|
||||
assertThat(repository.faceAcquisitionMessage.value).isNull()
|
||||
assertThat(faceAcquisitionMessage.value).isNull()
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -178,11 +183,15 @@ class BouncerMessageInteractorTest : SysuiTestCase() {
|
||||
|
||||
underTest.setFingerprintAcquisitionMessage("not empty")
|
||||
|
||||
assertThat(repository.fingerprintAcquisitionMessage.value)
|
||||
.isEqualTo(BouncerMessageModel(secondaryMessage = Message(message = "not empty")))
|
||||
val fingerprintAcquisitionMessage = repository.fingerprintAcquisitionMessage
|
||||
|
||||
assertThat(fingerprintAcquisitionMessage.value!!.message!!.messageResId)
|
||||
.isEqualTo(keyguard_enter_pin)
|
||||
assertThat(fingerprintAcquisitionMessage.value!!.secondaryMessage!!.message)
|
||||
.isEqualTo("not empty")
|
||||
|
||||
underTest.setFingerprintAcquisitionMessage(null)
|
||||
assertThat(repository.fingerprintAcquisitionMessage.value).isNull()
|
||||
assertThat(fingerprintAcquisitionMessage.value).isNull()
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user