Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b2c905b authored by Chandru S's avatar Chandru S
Browse files

Change ComposeBouncerFlags to an object instead of an interface + impl

This makes it easier to use the flag in a new class.

Bug: 310005730
Flag: com.android.systemui.compose_bouncer
Test: everything builds
Change-Id: Ie954186877c1a6b585c4918be0c4e3b2fae7ff9b
parent 86d29dfd
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -19,9 +19,11 @@ package com.android.systemui.bouncer.ui.viewmodel
import android.content.pm.UserInfo
import android.content.pm.UserInfo
import android.hardware.biometrics.BiometricFaceConstants
import android.hardware.biometrics.BiometricFaceConstants
import android.hardware.fingerprint.FingerprintManager
import android.hardware.fingerprint.FingerprintManager
import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.internal.widget.LockPatternUtils
import com.android.internal.widget.LockPatternUtils
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.authentication.data.repository.FakeAuthenticationRepository
import com.android.systemui.authentication.data.repository.FakeAuthenticationRepository
import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository
import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository
@@ -35,7 +37,6 @@ import com.android.systemui.biometrics.data.repository.fakeFacePropertyRepositor
import com.android.systemui.biometrics.data.repository.fakeFingerprintPropertyRepository
import com.android.systemui.biometrics.data.repository.fakeFingerprintPropertyRepository
import com.android.systemui.biometrics.shared.model.SensorStrength
import com.android.systemui.biometrics.shared.model.SensorStrength
import com.android.systemui.bouncer.domain.interactor.bouncerInteractor
import com.android.systemui.bouncer.domain.interactor.bouncerInteractor
import com.android.systemui.bouncer.shared.flag.fakeComposeBouncerFlags
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus
import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus
@@ -71,6 +72,7 @@ import org.junit.runner.RunWith
@OptIn(ExperimentalCoroutinesApi::class)
@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWith(AndroidJUnit4::class)
@EnableFlags(Flags.FLAG_COMPOSE_BOUNCER)
class BouncerMessageViewModelTest : SysuiTestCase() {
class BouncerMessageViewModelTest : SysuiTestCase() {
    private val kosmos = testKosmos()
    private val kosmos = testKosmos()
    private val testScope = kosmos.testScope
    private val testScope = kosmos.testScope
@@ -82,7 +84,6 @@ class BouncerMessageViewModelTest : SysuiTestCase() {
    @Before
    @Before
    fun setUp() {
    fun setUp() {
        kosmos.fakeUserRepository.setUserInfos(listOf(PRIMARY_USER))
        kosmos.fakeUserRepository.setUserInfos(listOf(PRIMARY_USER))
        kosmos.fakeComposeBouncerFlags.composeBouncerEnabled = true
        overrideResource(
        overrideResource(
            R.array.config_face_acquire_device_entry_ignorelist,
            R.array.config_face_acquire_device_entry_ignorelist,
            intArrayOf(ignoreHelpMessageId)
            intArrayOf(ignoreHelpMessageId)
+2 −2
Original line number Original line Diff line number Diff line
@@ -32,11 +32,11 @@ import com.android.systemui.authentication.shared.model.AuthenticationMethodMode
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel.Pin
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel.Pin
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel.Sim
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel.Sim
import com.android.systemui.authentication.shared.model.AuthenticationResultModel
import com.android.systemui.authentication.shared.model.AuthenticationResultModel
import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlags
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository
import com.android.systemui.user.data.repository.UserRepository
import com.android.systemui.user.data.repository.UserRepository
import com.android.systemui.util.kotlin.onSubscriberAdded
import com.android.systemui.util.kotlin.onSubscriberAdded
@@ -254,7 +254,7 @@ constructor(
    override val hasLockoutOccurred: StateFlow<Boolean> = _hasLockoutOccurred.asStateFlow()
    override val hasLockoutOccurred: StateFlow<Boolean> = _hasLockoutOccurred.asStateFlow()


    init {
    init {
        if (SceneContainerFlag.isEnabled) {
        if (ComposeBouncerFlags.isComposeBouncerOrSceneContainerEnabled()) {
            // Hydrate failedAuthenticationAttempts initially and whenever the selected user
            // Hydrate failedAuthenticationAttempts initially and whenever the selected user
            // changes.
            // changes.
            applicationScope.launch {
            applicationScope.launch {
+5 −29
Original line number Original line Diff line number Diff line
@@ -17,18 +17,17 @@
package com.android.systemui.bouncer.shared.flag
package com.android.systemui.bouncer.shared.flag


import com.android.systemui.Flags
import com.android.systemui.Flags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import dagger.Module
import dagger.Provides


interface ComposeBouncerFlags {
object ComposeBouncerFlags {


    /**
    /**
     * Returns `true` if the Compose bouncer is enabled or if the scene container framework is
     * Returns `true` if the Compose bouncer is enabled or if the scene container framework is
     * enabled; `false` otherwise.
     * enabled; `false` otherwise.
     */
     */
    fun isComposeBouncerOrSceneContainerEnabled(): Boolean
    fun isComposeBouncerOrSceneContainerEnabled(): Boolean {
        return SceneContainerFlag.isEnabled || Flags.composeBouncer()
    }


    /**
    /**
     * Returns `true` if only compose bouncer is enabled and scene container framework is not
     * Returns `true` if only compose bouncer is enabled and scene container framework is not
@@ -39,30 +38,7 @@ interface ComposeBouncerFlags {
            "that includes compose bouncer in legacy keyguard.",
            "that includes compose bouncer in legacy keyguard.",
        replaceWith = ReplaceWith("isComposeBouncerOrSceneContainerEnabled()")
        replaceWith = ReplaceWith("isComposeBouncerOrSceneContainerEnabled()")
    )
    )
    fun isOnlyComposeBouncerEnabled(): Boolean
    fun isOnlyComposeBouncerEnabled(): Boolean {
}

class ComposeBouncerFlagsImpl() : ComposeBouncerFlags {

    override fun isComposeBouncerOrSceneContainerEnabled(): Boolean {
        return SceneContainerFlag.isEnabled || Flags.composeBouncer()
    }

    @Deprecated(
        "Avoid using this, this is meant to be used only by the glue code " +
            "that includes compose bouncer in legacy keyguard.",
        replaceWith = ReplaceWith("isComposeBouncerOrSceneContainerEnabled()")
    )
    override fun isOnlyComposeBouncerEnabled(): Boolean {
        return !SceneContainerFlag.isEnabled && Flags.composeBouncer()
        return !SceneContainerFlag.isEnabled && Flags.composeBouncer()
    }
    }
}
}

@Module
object ComposeBouncerFlagsModule {
    @Provides
    @SysUISingleton
    fun impl(): ComposeBouncerFlags {
        return ComposeBouncerFlagsImpl()
    }
}
+1 −2
Original line number Original line Diff line number Diff line
@@ -55,12 +55,11 @@ constructor(
class BouncerViewBinder
class BouncerViewBinder
@Inject
@Inject
constructor(
constructor(
    private val composeBouncerFlags: ComposeBouncerFlags,
    private val legacyBouncerDependencies: Lazy<LegacyBouncerDependencies>,
    private val legacyBouncerDependencies: Lazy<LegacyBouncerDependencies>,
    private val composeBouncerDependencies: Lazy<ComposeBouncerDependencies>,
    private val composeBouncerDependencies: Lazy<ComposeBouncerDependencies>,
) {
) {
    fun bind(view: ViewGroup) {
    fun bind(view: ViewGroup) {
        if (composeBouncerFlags.isOnlyComposeBouncerEnabled()) {
        if (ComposeBouncerFlags.isOnlyComposeBouncerEnabled()) {
            val deps = composeBouncerDependencies.get()
            val deps = composeBouncerDependencies.get()
            ComposeBouncerViewBinder.bind(
            ComposeBouncerViewBinder.bind(
                view,
                view,
+1 −2
Original line number Original line Diff line number Diff line
@@ -78,7 +78,6 @@ constructor(
    private val faceAuthInteractor: DeviceEntryFaceAuthInteractor,
    private val faceAuthInteractor: DeviceEntryFaceAuthInteractor,
    private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
    private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
    private val deviceEntryBiometricsAllowedInteractor: DeviceEntryBiometricsAllowedInteractor,
    private val deviceEntryBiometricsAllowedInteractor: DeviceEntryBiometricsAllowedInteractor,
    private val flags: ComposeBouncerFlags,
) : ExclusiveActivatable() {
) : ExclusiveActivatable() {
    /**
    /**
     * A message shown when the user has attempted the wrong credential too many times and now must
     * A message shown when the user has attempted the wrong credential too many times and now must
@@ -96,7 +95,7 @@ constructor(
    val message: MutableStateFlow<MessageViewModel?> = MutableStateFlow(null)
    val message: MutableStateFlow<MessageViewModel?> = MutableStateFlow(null)


    override suspend fun onActivated(): Nothing {
    override suspend fun onActivated(): Nothing {
        if (!flags.isComposeBouncerOrSceneContainerEnabled()) {
        if (!ComposeBouncerFlags.isComposeBouncerOrSceneContainerEnabled()) {
            return awaitCancellation()
            return awaitCancellation()
        }
        }


Loading