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

Commit 1c3f361a authored by Chandru S's avatar Chandru S
Browse files

Skip pulsing while showing the face scanning animation

Bug: 295245429
Test: verified manually
  1. Run face auth
  2. Scanning animation should not pulse while it is running
Change-Id: Id574a328c0e4e2a318688d3e631b1d021774d537
parent 1f6a24b2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -40,4 +40,7 @@

    <!-- Whether face auth will immediately stop when the display state is OFF -->
    <bool name="flag_stop_face_auth_on_display_off">false</bool>

    <!-- Whether we want to stop pulsing while running the face scanning animation -->
    <bool name="flag_stop_pulsing_face_scanning_animation">true</bool>
</resources>
+12 −0
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@ import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitorCallback
import com.android.settingslib.Utils
import com.android.systemui.biometrics.AuthController
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.log.ScreenDecorationsLogger
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.util.asIndenting
@@ -54,6 +56,7 @@ class FaceScanningOverlay(
    val mainExecutor: Executor,
    val logger: ScreenDecorationsLogger,
    val authController: AuthController,
    val featureFlags: FeatureFlags,
) : ScreenDecorations.DisplayCutoutView(context, pos) {
    private var showScanningAnim = false
    private val rimPaint = Paint()
@@ -294,6 +297,15 @@ class FaceScanningOverlay(
    }

    private fun createFaceScanningRimAnimator(): AnimatorSet {
        val dontPulse = featureFlags.isEnabled(Flags.STOP_PULSING_FACE_SCANNING_ANIMATION)
        if (dontPulse) {
            return AnimatorSet().apply {
                playSequentially(
                        cameraProtectionAnimator,
                        createRimAppearAnimator(),
                )
            }
        }
        return AnimatorSet().apply {
            playSequentially(
                cameraProtectionAnimator,
+5 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.systemui.FaceScanningOverlay
import com.android.systemui.biometrics.AuthController
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.log.ScreenDecorationsLogger
import com.android.systemui.plugins.statusbar.StatusBarStateController
import java.util.concurrent.Executor
@@ -47,6 +48,7 @@ class FaceScanningProviderFactory @Inject constructor(
    private val keyguardUpdateMonitor: KeyguardUpdateMonitor,
    @Main private val mainExecutor: Executor,
    private val logger: ScreenDecorationsLogger,
    private val featureFlags: FeatureFlags,
) : DecorProviderFactory() {
    private val display = context.display
    private val displayInfo = DisplayInfo()
@@ -86,6 +88,7 @@ class FaceScanningProviderFactory @Inject constructor(
                                        keyguardUpdateMonitor,
                                        mainExecutor,
                                        logger,
                                        featureFlags,
                                )
                        )
                    }
@@ -110,6 +113,7 @@ class FaceScanningOverlayProviderImpl(
    private val keyguardUpdateMonitor: KeyguardUpdateMonitor,
    private val mainExecutor: Executor,
    private val logger: ScreenDecorationsLogger,
    private val featureFlags: FeatureFlags,
) : BoundDecorProvider() {
    override val viewId: Int = com.android.systemui.R.id.face_scanning_anim

@@ -144,6 +148,7 @@ class FaceScanningOverlayProviderImpl(
                mainExecutor,
                logger,
                authController,
                featureFlags
        )
        view.id = viewId
        view.setColor(tintColor)
+6 −0
Original line number Diff line number Diff line
@@ -297,6 +297,12 @@ object Flags {
    @JvmField val STOP_FACE_AUTH_ON_DISPLAY_OFF = resourceBooleanFlag(
            R.bool.flag_stop_face_auth_on_display_off, "stop_face_auth_on_display_off")

    /** Flag to disable the face scanning animation pulsing. */
    // TODO(b/295245791): Tracking bug.
    @JvmField val STOP_PULSING_FACE_SCANNING_ANIMATION = resourceBooleanFlag(
            R.bool.flag_stop_pulsing_face_scanning_animation,
            "stop_pulsing_face_scanning_animation")

    // 300 - power menu
    // TODO(b/254512600): Tracking Bug
    @JvmField val POWER_MENU_LITE = releasedFlag("power_menu_lite")
+6 −1
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.biometrics.AuthController
import com.android.systemui.decor.FaceScanningProviderFactory
import com.android.systemui.dump.logcatLogBuffer
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.log.ScreenDecorationsLogger
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.util.mockito.whenever
@@ -80,6 +82,8 @@ class FaceScanningProviderFactoryTest : SysuiTestCase() {
            R.bool.config_fillMainBuiltInDisplayCutout,
            true
        )
        val featureFlags = FakeFeatureFlags()
        featureFlags.set(Flags.STOP_PULSING_FACE_SCANNING_ANIMATION, true)
        underTest =
            FaceScanningProviderFactory(
                authController,
@@ -87,7 +91,8 @@ class FaceScanningProviderFactoryTest : SysuiTestCase() {
                statusBarStateController,
                keyguardUpdateMonitor,
                mock(Executor::class.java),
                ScreenDecorationsLogger(logcatLogBuffer("FaceScanningProviderFactoryTest"))
                ScreenDecorationsLogger(logcatLogBuffer("FaceScanningProviderFactoryTest")),
                featureFlags,
            )

        whenever(authController.faceSensorLocation).thenReturn(Point(10, 10))
Loading