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 Diff line number Diff line
@@ -19,9 +19,11 @@ package com.android.systemui.bouncer.ui.viewmodel
import android.content.pm.UserInfo
import android.hardware.biometrics.BiometricFaceConstants
import android.hardware.fingerprint.FingerprintManager
import android.platform.test.annotations.EnableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.widget.LockPatternUtils
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
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.shared.model.SensorStrength
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.deviceentry.domain.interactor.DeviceUnlockedInteractor
import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus
@@ -71,6 +72,7 @@ import org.junit.runner.RunWith
@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
@EnableFlags(Flags.FLAG_COMPOSE_BOUNCER)
class BouncerMessageViewModelTest : SysuiTestCase() {
    private val kosmos = testKosmos()
    private val testScope = kosmos.testScope
@@ -82,7 +84,6 @@ class BouncerMessageViewModelTest : SysuiTestCase() {
    @Before
    fun setUp() {
        kosmos.fakeUserRepository.setUserInfos(listOf(PRIMARY_USER))
        kosmos.fakeComposeBouncerFlags.composeBouncerEnabled = true
        overrideResource(
            R.array.config_face_acquire_device_entry_ignorelist,
            intArrayOf(ignoreHelpMessageId)
+2 −2
Original line number 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.Sim
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.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
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.user.data.repository.UserRepository
import com.android.systemui.util.kotlin.onSubscriberAdded
@@ -254,7 +254,7 @@ constructor(
    override val hasLockoutOccurred: StateFlow<Boolean> = _hasLockoutOccurred.asStateFlow()

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

import com.android.systemui.Flags
import com.android.systemui.dagger.SysUISingleton
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
     * 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
@@ -39,30 +38,7 @@ interface ComposeBouncerFlags {
            "that includes compose bouncer in legacy keyguard.",
        replaceWith = ReplaceWith("isComposeBouncerOrSceneContainerEnabled()")
    )
    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 {
    fun isOnlyComposeBouncerEnabled(): Boolean {
        return !SceneContainerFlag.isEnabled && Flags.composeBouncer()
    }
}

@Module
object ComposeBouncerFlagsModule {
    @Provides
    @SysUISingleton
    fun impl(): ComposeBouncerFlags {
        return ComposeBouncerFlagsImpl()
    }
}
+1 −2
Original line number Diff line number Diff line
@@ -55,12 +55,11 @@ constructor(
class BouncerViewBinder
@Inject
constructor(
    private val composeBouncerFlags: ComposeBouncerFlags,
    private val legacyBouncerDependencies: Lazy<LegacyBouncerDependencies>,
    private val composeBouncerDependencies: Lazy<ComposeBouncerDependencies>,
) {
    fun bind(view: ViewGroup) {
        if (composeBouncerFlags.isOnlyComposeBouncerEnabled()) {
        if (ComposeBouncerFlags.isOnlyComposeBouncerEnabled()) {
            val deps = composeBouncerDependencies.get()
            ComposeBouncerViewBinder.bind(
                view,
+1 −2
Original line number Diff line number Diff line
@@ -78,7 +78,6 @@ constructor(
    private val faceAuthInteractor: DeviceEntryFaceAuthInteractor,
    private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
    private val deviceEntryBiometricsAllowedInteractor: DeviceEntryBiometricsAllowedInteractor,
    private val flags: ComposeBouncerFlags,
) : ExclusiveActivatable() {
    /**
     * 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)

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

Loading