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

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

Check with CameraGestureHelper before updating powerButtonLaunchGestureTriggered.

Fixes: 332904163
Test: reboot device and try to launch camera
Test: unlock device, lock then successfully launch camera
Flag: com.android.systemui.keyguard_wm_state_refactor
Change-Id: I2028e829860800fbc27bd61fcd858dfa9e3261bf
parent 4ce43367
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ constructor(
    @FalsingCollectorActual private val falsingCollector: FalsingCollector,
    private val screenOffAnimationController: ScreenOffAnimationController,
    private val statusBarStateController: StatusBarStateController,
    private val cameraGestureHelper: Provider<CameraGestureHelper>,
    private val cameraGestureHelper: Provider<CameraGestureHelper?>,
) {
    /** Whether the screen is on or off. */
    val isInteractive: Flow<Boolean> = repository.isInteractive
@@ -154,8 +154,9 @@ constructor(
        // or onFinishedGoingToSleep(), carry that state forward. It will be reset by the next
        // onStartedGoingToSleep.
        val powerButtonLaunchGestureTriggered =
            powerButtonLaunchGestureTriggeredOnWakeUp ||
                repository.wakefulness.value.powerButtonLaunchGestureTriggered
            !isPowerButtonGestureSuppressed() &&
                (powerButtonLaunchGestureTriggeredOnWakeUp ||
                    repository.wakefulness.value.powerButtonLaunchGestureTriggered)

        repository.updateWakefulness(
            rawState = WakefulnessState.STARTING_TO_WAKE,
@@ -204,8 +205,9 @@ constructor(
        // If the launch gesture was previously detected via onCameraLaunchGestureDetected, carry
        // that state forward. It will be reset by the next onStartedGoingToSleep.
        val powerButtonLaunchGestureTriggered =
            powerButtonLaunchGestureTriggeredDuringSleep ||
                repository.wakefulness.value.powerButtonLaunchGestureTriggered
            !isPowerButtonGestureSuppressed() &&
                (powerButtonLaunchGestureTriggeredDuringSleep ||
                    repository.wakefulness.value.powerButtonLaunchGestureTriggered)

        repository.updateWakefulness(
            rawState = WakefulnessState.ASLEEP,
@@ -218,11 +220,7 @@ constructor(
    }

    fun onCameraLaunchGestureDetected() {
        if (
            cameraGestureHelper
                .get()
                .canCameraGestureBeLaunched(statusBarStateController.getState())
        ) {
        if (!isPowerButtonGestureSuppressed()) {
            repository.updateWakefulness(powerButtonLaunchGestureTriggered = true)
        }
    }
@@ -240,6 +238,16 @@ constructor(
            .collect()
    }

    /**
     * Whether the power button gesture isn't allowed to launch anything even if a double tap is
     * detected.
     */
    private fun isPowerButtonGestureSuppressed(): Boolean {
        return cameraGestureHelper
            .get()
            ?.canCameraGestureBeLaunched(statusBarStateController.state) == false
    }

    companion object {
        private const val FSI_WAKE_WHY = "full_screen_intent"