1 package com.android.systemui.biometrics.data.repository 2 3 import android.hardware.biometrics.PromptInfo 4 import com.android.systemui.biometrics.shared.model.PromptKind 5 import kotlinx.coroutines.flow.MutableStateFlow 6 import kotlinx.coroutines.flow.asStateFlow 7 8 /** Fake implementation of [PromptRepository] for tests. */ 9 class FakePromptRepository : PromptRepository { 10 11 private val _isShowing = MutableStateFlow(false) 12 override val isShowing = _isShowing.asStateFlow() 13 14 private val _promptInfo = MutableStateFlow<PromptInfo?>(null) 15 override val promptInfo = _promptInfo.asStateFlow() 16 17 private val _userId = MutableStateFlow<Int?>(null) 18 override val userId = _userId.asStateFlow() 19 20 private var _challenge = MutableStateFlow<Long?>(null) 21 override val challenge = _challenge.asStateFlow() 22 23 private val _kind = MutableStateFlow<PromptKind>(PromptKind.Biometric()) 24 override val kind = _kind.asStateFlow() 25 26 private val _isConfirmationRequired = MutableStateFlow(false) 27 override val isConfirmationRequired = _isConfirmationRequired.asStateFlow() 28 29 override fun setPrompt( 30 promptInfo: PromptInfo, 31 userId: Int, 32 gatekeeperChallenge: Long?, 33 kind: PromptKind, 34 ) = setPrompt(promptInfo, userId, gatekeeperChallenge, kind, forceConfirmation = false) 35 36 fun setPrompt( 37 promptInfo: PromptInfo, 38 userId: Int, 39 gatekeeperChallenge: Long?, 40 kind: PromptKind, 41 forceConfirmation: Boolean = false, 42 ) { 43 _promptInfo.value = promptInfo 44 _userId.value = userId 45 _challenge.value = gatekeeperChallenge 46 _kind.value = kind 47 _isConfirmationRequired.value = promptInfo.isConfirmationRequested || forceConfirmation 48 } 49 50 override fun unsetPrompt() { 51 _promptInfo.value = null 52 _userId.value = null 53 _challenge.value = null 54 _kind.value = PromptKind.Biometric() 55 _isConfirmationRequired.value = false 56 } 57 58 fun setIsShowing(showing: Boolean) { 59 _isShowing.value = showing 60 } 61 } 62