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

Commit fe57ea49 authored by Josh Tsuji's avatar Josh Tsuji Committed by Android (Google) Code Review
Browse files

Merge "Fix boot issues with keyguard_wm_state_refactor." into main

parents ef23ee9e d3454243
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.launch
@@ -287,7 +288,7 @@ constructor(
        if (KeyguardWmStateRefactor.isEnabled) {
            // When the refactor is enabled, we no longer use isKeyguardGoingAway.
            scope.launch {
                swipeToDismissInteractor.dismissFling.collect { _ ->
                swipeToDismissInteractor.dismissFling.filterNotNull().collect { _ ->
                    startTransitionTo(KeyguardState.GONE)
                }
            }
+7 −4
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import static com.android.systemui.bouncer.shared.constants.KeyguardBouncerConst
import static com.android.systemui.plugins.ActivityStarter.OnDismissAction;
import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK;
import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK_PULSING;
import static com.android.systemui.util.kotlin.JavaAdapterKt.collectFlow;
import static com.android.systemui.util.kotlin.JavaAdapterKt.combineFlows;

import android.content.Context;
@@ -98,6 +97,7 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.unfold.FoldAodAnimationController;
import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;
import com.android.systemui.util.kotlin.JavaAdapter;

import dagger.Lazy;

@@ -348,6 +348,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
    private Lazy<KeyguardSurfaceBehindInteractor> mSurfaceBehindInteractor;
    private Lazy<KeyguardDismissActionInteractor> mKeyguardDismissActionInteractor;

    private final JavaAdapter mJavaAdapter;

    @Inject
    public StatusBarKeyguardViewManager(
            Context context,
@@ -378,7 +380,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
            Lazy<WindowManagerLockscreenVisibilityInteractor> wmLockscreenVisibilityInteractor,
            Lazy<KeyguardDismissActionInteractor> keyguardDismissActionInteractorLazy,
            SelectedUserInteractor selectedUserInteractor,
            Lazy<KeyguardSurfaceBehindInteractor> surfaceBehindInteractor
            Lazy<KeyguardSurfaceBehindInteractor> surfaceBehindInteractor,
            JavaAdapter javaAdapter
    ) {
        mContext = context;
        mViewMediatorCallback = callback;
@@ -411,6 +414,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
        mKeyguardDismissActionInteractor = keyguardDismissActionInteractorLazy;
        mSelectedUserInteractor = selectedUserInteractor;
        mSurfaceBehindInteractor = surfaceBehindInteractor;
        mJavaAdapter = javaAdapter;
    }

    KeyguardTransitionInteractor mKeyguardTransitionInteractor;
@@ -481,8 +485,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb

        if (KeyguardWmStateRefactor.isEnabled()) {
            // Show the keyguard views whenever we've told WM that the lockscreen is visible.
            collectFlow(
                    getViewRootImpl().getView(),
            mJavaAdapter.alwaysCollectFlow(
                    combineFlows(
                            mWmLockscreenVisibilityInteractor.get().getLockscreenVisibility(),
                            mSurfaceBehindInteractor.get().isAnimatingSurface(),
+19 −1
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ class FromLockscreenTransitionInteractorTest : SysuiTestCase() {
            keyguardRepository.setKeyguardDismissible(true)
            runCurrent()
            shadeRepository.setCurrentFling(
                FlingInfo(expand = true) // Not a dismiss fling (expand = true).
                FlingInfo(expand = false) // Is a dismiss fling upward (expand = false).
            )
            runCurrent()

@@ -151,6 +151,24 @@ class FromLockscreenTransitionInteractorTest : SysuiTestCase() {
            )
            runCurrent()

            assertThatRepository(transitionRepository).noTransitionsStarted()
        }

    @Test
    @DisableFlags(Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR)
    fun testDoesNotTransitionToGone_whenDismissFling_emitsNull() =
        testScope.runTest {
            underTest.start()
            verify(transitionRepository, never()).startTransition(any())

            keyguardRepository.setKeyguardDismissible(true)
            runCurrent()

            // The fling is null when it a) initializes b) ends and in either case we should not
            // swipe to unlock.
            shadeRepository.setCurrentFling(null)
            runCurrent()

            assertThatRepository(transitionRepository).noTransitionsStarted()
        }
}
+5 −2
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.unfold.SysUIUnfoldComponent;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;
import com.android.systemui.util.kotlin.JavaAdapter;

import com.google.common.truth.Truth;

@@ -222,7 +223,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
                        () -> mock(WindowManagerLockscreenVisibilityInteractor.class),
                        () -> mock(KeyguardDismissActionInteractor.class),
                        mSelectedUserInteractor,
                        () -> mock(KeyguardSurfaceBehindInteractor.class)) {
                        () -> mock(KeyguardSurfaceBehindInteractor.class),
                        mock(JavaAdapter.class)) {
                    @Override
                    public ViewRootImpl getViewRootImpl() {
                        return mViewRootImpl;
@@ -730,7 +732,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
                        () -> mock(WindowManagerLockscreenVisibilityInteractor.class),
                        () -> mock(KeyguardDismissActionInteractor.class),
                        mSelectedUserInteractor,
                        () -> mock(KeyguardSurfaceBehindInteractor.class)) {
                        () -> mock(KeyguardSurfaceBehindInteractor.class),
                        mock(JavaAdapter.class)) {
                    @Override
                    public ViewRootImpl getViewRootImpl() {
                        return mViewRootImpl;