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

Commit 1ebbaf4b authored by Matt Pietal's avatar Matt Pietal
Browse files

Ensure secure camera reset when GONE

After going to GONE, make sure the secure camera gets reset as
the normal camera activity should now be used.

Fixes: 400328384
Test: atest KeyguardInteractorTest
Flag: EXEMPT bugfix
Change-Id: Icdca18c84ee0f23b446921fed159a48934486d9d
parent 03b40c59
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -39,7 +39,9 @@ import com.android.systemui.keyguard.shared.model.DozeTransitionModel
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING
import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
import com.android.systemui.keyguard.shared.model.KeyguardState.OCCLUDED
import com.android.systemui.keyguard.shared.model.StatusBarState
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionState.FINISHED
@@ -164,6 +166,23 @@ class KeyguardInteractorTest : SysuiTestCase() {
            assertThat(secureCameraActive()).isFalse()
        }

    @Test
    @DisableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
    fun testGoneStateResetsCameraActive() =
        testScope.runTest {
            val secureCameraActive = collectLastValue(underTest.isSecureCameraActive)
            runCurrent()

            underTest.onCameraLaunchDetected(
                StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP,
                isSecureCamera = true,
            )
            assertThat(secureCameraActive()).isTrue()

            keyguardTransitionRepository.sendTransitionSteps(from = OCCLUDED, to = GONE, testScope)
            assertThat(secureCameraActive()).isFalse()
        }

    /** Regression test for b/373700726. */
    @Test
    @DisableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
+6 −0
Original line number Diff line number Diff line
@@ -288,6 +288,7 @@ constructor(
        KeyguardBecameVisible,
        PrimaryBouncerBecameVisible,
        SecureCameraLaunched,
        InGoneState,
    }

    /** Whether camera is launched over keyguard. */
@@ -302,6 +303,10 @@ constructor(
                primaryBouncerShowing
                    .filter { it }
                    .map { SecureCameraRelatedEventType.PrimaryBouncerBecameVisible },
                keyguardTransitionInteractor
                    .transitionValue(GONE)
                    .filter { it == 1f }
                    .map { SecureCameraRelatedEventType.InGoneState },
            )
            .map {
                when (it) {
@@ -310,6 +315,7 @@ constructor(
                    // have to show, so those events tell us that secure camera is no longer active.
                    SecureCameraRelatedEventType.KeyguardBecameVisible -> false
                    SecureCameraRelatedEventType.PrimaryBouncerBecameVisible -> false
                    SecureCameraRelatedEventType.InGoneState -> false
                }
            }
            .onStart { emit(false) }