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

Commit b2755cab authored by Josh Tsuji's avatar Josh Tsuji
Browse files

Migrate keyguard+WM refactor flag to aconfig.

It's time.

Test: atest SystemUITests
Bug: 278086361
Flag: NA
Change-Id: I1b9689fa0402e9cd433839ea0b47365e51ae4024
parent 2791d50e
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -357,3 +357,10 @@ flag {
   description: "Enables styled focus states on pin input field if keyboard is connected"
   description: "Enables styled focus states on pin input field if keyboard is connected"
   bug: "316106516"
   bug: "316106516"
}
}

flag {
    name: "keyguard_wm_state_refactor"
    namespace: "systemui"
    description: "Enables refactored logic for SysUI+WM unlock/occlusion code paths"
    bug: "278086361"
}
+8 −3
Original line number Original line Diff line number Diff line
@@ -202,11 +202,17 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
        whenever(deviceProvisionedController.isUserSetup(anyInt())).thenReturn(true)
        whenever(deviceProvisionedController.isUserSetup(anyInt())).thenReturn(true)


        featureFlags = FakeFeatureFlags()
        featureFlags = FakeFeatureFlags()
        featureFlags.set(Flags.KEYGUARD_WM_STATE_REFACTOR, false)
        featureFlags.set(Flags.REFACTOR_KEYGUARD_DISMISS_INTENT, false)
        featureFlags.set(Flags.REFACTOR_KEYGUARD_DISMISS_INTENT, false)
        featureFlags.set(Flags.LOCKSCREEN_ENABLE_LANDSCAPE, false)
        featureFlags.set(Flags.LOCKSCREEN_ENABLE_LANDSCAPE, false)


        mSetFlagsRule.enableFlags(AConfigFlags.FLAG_REVAMPED_BOUNCER_MESSAGES)
        mSetFlagsRule.enableFlags(
            AConfigFlags.FLAG_REVAMPED_BOUNCER_MESSAGES,
        )
        mSetFlagsRule.disableFlags(
            FLAG_SIDEFPS_CONTROLLER_REFACTOR,
            AConfigFlags.FLAG_KEYGUARD_WM_STATE_REFACTOR
        )

        keyguardPasswordViewController =
        keyguardPasswordViewController =
            KeyguardPasswordViewController(
            KeyguardPasswordViewController(
                keyguardPasswordView,
                keyguardPasswordView,
@@ -237,7 +243,6 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
        sceneInteractor.setTransitionState(sceneTransitionStateFlow)
        sceneInteractor.setTransitionState(sceneTransitionStateFlow)
        deviceEntryInteractor = kosmos.deviceEntryInteractor
        deviceEntryInteractor = kosmos.deviceEntryInteractor


        mSetFlagsRule.disableFlags(FLAG_SIDEFPS_CONTROLLER_REFACTOR)
        underTest =
        underTest =
            KeyguardSecurityContainerController(
            KeyguardSecurityContainerController(
                view,
                view,
+6 −3
Original line number Original line Diff line number Diff line
@@ -38,6 +38,7 @@ import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId.fakeInstanceId
import com.android.internal.logging.InstanceId.fakeInstanceId
import com.android.internal.logging.UiEventLogger
import com.android.internal.logging.UiEventLogger
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.Flags as AConfigFlags
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.data.repository.FakeDisplayStateRepository
import com.android.systemui.biometrics.data.repository.FakeDisplayStateRepository
import com.android.systemui.biometrics.data.repository.FakeFacePropertyRepository
import com.android.systemui.biometrics.data.repository.FakeFacePropertyRepository
@@ -62,7 +63,6 @@ import com.android.systemui.display.data.repository.FakeDisplayRepository
import com.android.systemui.display.data.repository.display
import com.android.systemui.display.data.repository.display
import com.android.systemui.dump.DumpManager
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.Flags.KEYGUARD_WM_STATE_REFACTOR
import com.android.systemui.keyguard.data.repository.BiometricType
import com.android.systemui.keyguard.data.repository.BiometricType
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
import com.android.systemui.keyguard.data.repository.FakeCommandQueue
import com.android.systemui.keyguard.data.repository.FakeCommandQueue
@@ -194,7 +194,7 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() {
        biometricSettingsRepository = FakeBiometricSettingsRepository()
        biometricSettingsRepository = FakeBiometricSettingsRepository()
        deviceEntryFingerprintAuthRepository = FakeDeviceEntryFingerprintAuthRepository()
        deviceEntryFingerprintAuthRepository = FakeDeviceEntryFingerprintAuthRepository()
        trustRepository = FakeTrustRepository()
        trustRepository = FakeTrustRepository()
        featureFlags = FakeFeatureFlags().apply { set(KEYGUARD_WM_STATE_REFACTOR, false) }
        featureFlags = FakeFeatureFlags()


        powerRepository = FakePowerRepository()
        powerRepository = FakePowerRepository()
        powerInteractor =
        powerInteractor =
@@ -252,6 +252,10 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() {
            .thenReturn(listOf(createFaceSensorProperties(supportsFaceDetection = true)))
            .thenReturn(listOf(createFaceSensorProperties(supportsFaceDetection = true)))
        whenever(bypassController.bypassEnabled).thenReturn(true)
        whenever(bypassController.bypassEnabled).thenReturn(true)
        underTest = createDeviceEntryFaceAuthRepositoryImpl(faceManager, bypassController)
        underTest = createDeviceEntryFaceAuthRepositoryImpl(faceManager, bypassController)

        mSetFlagsRule.disableFlags(
            AConfigFlags.FLAG_KEYGUARD_WM_STATE_REFACTOR,
        )
    }
    }


    private fun createDeviceEntryFaceAuthRepositoryImpl(
    private fun createDeviceEntryFaceAuthRepositoryImpl(
@@ -301,7 +305,6 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() {
            faceAuthBuffer,
            faceAuthBuffer,
            keyguardTransitionInteractor,
            keyguardTransitionInteractor,
            displayStateInteractor,
            displayStateInteractor,
            featureFlags,
            dumpManager,
            dumpManager,
        )
        )
    }
    }
+4 −4
Original line number Original line Diff line number Diff line
@@ -19,9 +19,9 @@ package com.android.keyguard;
import static android.app.StatusBarManager.SESSION_KEYGUARD;
import static android.app.StatusBarManager.SESSION_KEYGUARD;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;


import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISSIBLE_KEYGUARD;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_BIOMETRIC;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_BIOMETRIC;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_EXTENDED_ACCESS;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_EXTENDED_ACCESS;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISSIBLE_KEYGUARD;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_NONE_SECURITY;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_NONE_SECURITY;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_PASSWORD;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_PASSWORD;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_SIM;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_SIM;
@@ -83,6 +83,7 @@ import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInt
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor;
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.flags.Flags;
import com.android.systemui.keyguard.KeyguardWmStateRefactor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.ActivityStarter;
@@ -99,8 +100,6 @@ import com.android.systemui.util.ViewController;
import com.android.systemui.util.kotlin.JavaAdapter;
import com.android.systemui.util.kotlin.JavaAdapter;
import com.android.systemui.util.settings.GlobalSettings;
import com.android.systemui.util.settings.GlobalSettings;


import dagger.Lazy;

import java.io.File;
import java.io.File;
import java.util.Arrays;
import java.util.Arrays;
import java.util.Optional;
import java.util.Optional;
@@ -108,6 +107,7 @@ import java.util.Optional;
import javax.inject.Inject;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Provider;


import dagger.Lazy;
import kotlinx.coroutines.Job;
import kotlinx.coroutines.Job;


/** Controller for {@link KeyguardSecurityContainer} */
/** Controller for {@link KeyguardSecurityContainer} */
@@ -329,7 +329,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
                }
                }
            }
            }


            if (mFeatureFlags.isEnabled(Flags.KEYGUARD_WM_STATE_REFACTOR)) {
            if (KeyguardWmStateRefactor.isEnabled()) {
                mKeyguardTransitionInteractor.startDismissKeyguardTransition();
                mKeyguardTransitionInteractor.startDismissKeyguardTransition();
            }
            }
        }
        }
+6 −8
Original line number Original line Diff line number Diff line
@@ -40,8 +40,7 @@ import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationSta
import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
import com.android.systemui.deviceentry.shared.model.SuccessFaceAuthenticationStatus
import com.android.systemui.deviceentry.shared.model.SuccessFaceAuthenticationStatus
import com.android.systemui.dump.DumpManager
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.keyguard.KeyguardWmStateRefactor
import com.android.systemui.flags.Flags
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
import com.android.systemui.keyguard.data.repository.BiometricType
import com.android.systemui.keyguard.data.repository.BiometricType
import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository
@@ -63,10 +62,6 @@ import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.user.data.model.SelectionStatus
import com.android.systemui.user.data.model.SelectionStatus
import com.android.systemui.user.data.repository.UserRepository
import com.android.systemui.user.data.repository.UserRepository
import com.google.errorprone.annotations.CompileTimeConstant
import com.google.errorprone.annotations.CompileTimeConstant
import java.io.PrintWriter
import java.util.Arrays
import java.util.stream.Collectors
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.Job
@@ -88,6 +83,10 @@ import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlinx.coroutines.withContext
import java.io.PrintWriter
import java.util.Arrays
import java.util.stream.Collectors
import javax.inject.Inject


/**
/**
 * API to run face authentication and detection for device entry / on keyguard (as opposed to the
 * API to run face authentication and detection for device entry / on keyguard (as opposed to the
@@ -165,7 +164,6 @@ constructor(
    @FaceAuthTableLog private val faceAuthLog: TableLogBuffer,
    @FaceAuthTableLog private val faceAuthLog: TableLogBuffer,
    private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
    private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
    private val displayStateInteractor: DisplayStateInteractor,
    private val displayStateInteractor: DisplayStateInteractor,
    private val featureFlags: FeatureFlags,
    dumpManager: DumpManager,
    dumpManager: DumpManager,
) : DeviceEntryFaceAuthRepository, Dumpable {
) : DeviceEntryFaceAuthRepository, Dumpable {
    private var authCancellationSignal: CancellationSignal? = null
    private var authCancellationSignal: CancellationSignal? = null
@@ -315,7 +313,7 @@ constructor(
        // or device starts going to sleep.
        // or device starts going to sleep.
        merge(
        merge(
                powerInteractor.isAsleep,
                powerInteractor.isAsleep,
                if (featureFlags.isEnabled(Flags.KEYGUARD_WM_STATE_REFACTOR)) {
                if (KeyguardWmStateRefactor.isEnabled) {
                    keyguardTransitionInteractor.isInTransitionToState(KeyguardState.GONE)
                    keyguardTransitionInteractor.isInTransitionToState(KeyguardState.GONE)
                } else {
                } else {
                    keyguardRepository.keyguardDoneAnimationsFinished.map { true }
                    keyguardRepository.keyguardDoneAnimationsFinished.map { true }
Loading