Skip to content

Commit

Permalink
SystemUI: biometrics: Follow user setting to confirm face unlock
Browse files Browse the repository at this point in the history
* It seems that AOSP code migration has some pending clean up
  which creates issue of not honoring setConfirmationRequired(false)
  for biometric prompt.
* Let's disregard app setting and follow only user setting whether or
  not confirm face unlock prompt is required.

Signed-off-by: Pranav Vashi <[email protected]>
  • Loading branch information
neobuddy89 authored and aswin7469 committed Apr 14, 2024
1 parent 0411e2f commit fd57020
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -110,17 +110,9 @@ constructor(

private val _faceSettings =
_userId.map { id -> faceSettings.forUser(id) }.distinctUntilChanged()
private val _faceSettingAlwaysRequireConfirmation =
_faceSettings.flatMapLatest { it.alwaysRequireConfirmationInApps }.distinctUntilChanged()

private val _isConfirmationRequired = _promptInfo.map { it?.isConfirmationRequested ?: false }
override val isConfirmationRequired =
combine(_isConfirmationRequired, _faceSettingAlwaysRequireConfirmation) {
appRequiresConfirmation,
forceRequireConfirmation ->
forceRequireConfirmation || appRequiresConfirmation
}
.distinctUntilChanged()
_faceSettings.flatMapLatest { it.alwaysRequireConfirmationInApps }.distinctUntilChanged()

override fun setPrompt(
promptInfo: PromptInfo,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,7 @@ constructor(
* If the API caller or the user's personal preferences require explicit confirmation after
* successful authentication. Confirmation always required when in explicit flow.
*/
val isConfirmationRequired: Flow<Boolean> =
combine(_isOverlayTouched, size) { isOverlayTouched, size ->
!isOverlayTouched && size.isNotSmall
}
val isConfirmationRequired: Flow<Boolean> = promptSelectorInteractor.isConfirmationRequired

/**
* When fingerprint and face modalities are enrolled, indicates whether only face auth has
Expand Down Expand Up @@ -476,11 +473,9 @@ constructor(
}

private suspend fun needsExplicitConfirmation(modality: BiometricModality): Boolean {
val confirmationRequired = isConfirmationRequired.first()

// Only worry about confirmationRequired if face was used to unlock
if (modality == BiometricModality.Face) {
return confirmationRequired
return isConfirmationRequired.first()
}
// fingerprint only never requires confirmation
return false
Expand Down

0 comments on commit fd57020

Please sign in to comment.