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

Commit 6e91e825 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Reset the dismiss action on keyguard reset" into main

parents 61b164ea faf687b2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.keyguard.ui.viewmodel

import android.graphics.Color
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.keyguard.DismissCallbackRegistry
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCER
@@ -41,6 +42,7 @@ constructor(
    keyguardTransitionInteractor: KeyguardTransitionInteractor,
    private val dismissCallbackRegistry: DismissCallbackRegistry,
    alternateBouncerInteractor: Lazy<AlternateBouncerInteractor>,
    private val primaryBouncerInteractor: PrimaryBouncerInteractor,
) {
    // When we're fully transitioned to the AlternateBouncer, the alpha of the scrim should be:
    private val alternateBouncerScrimAlpha = .66f
@@ -73,5 +75,6 @@ constructor(
    fun onBackRequested() {
        statusBarKeyguardViewManager.hideAlternateBouncer(false)
        dismissCallbackRegistry.notifyDismissCancelled()
        primaryBouncerInteractor.setDismissAction(null, null)
    }
}
+8 −1
Original line number Diff line number Diff line
@@ -68,6 +68,8 @@ import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor;
import com.android.systemui.deviceentry.shared.DeviceEntryUdfpsRefactor;
import com.android.systemui.dock.DockManager;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.keyguard.KeyguardWmStateRefactor;
import com.android.systemui.keyguard.domain.interactor.KeyguardDismissActionInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardSurfaceBehindInteractor;
@@ -170,6 +172,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
    private final Lazy<ShadeController> mShadeController;
    private final Lazy<SceneInteractor> mSceneInteractorLazy;
    private final Lazy<DeviceEntryInteractor> mDeviceEntryInteractorLazy;
    private final DismissCallbackRegistry mDismissCallbackRegistry;

    private Job mListenForAlternateBouncerTransitionSteps = null;
    private Job mListenForKeyguardAuthenticatedBiometricsHandled = null;
@@ -400,7 +403,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
            Lazy<SceneInteractor> sceneInteractorLazy,
            StatusBarKeyguardViewManagerInteractor statusBarKeyguardViewManagerInteractor,
            @Main DelayableExecutor executor,
            Lazy<DeviceEntryInteractor> deviceEntryInteractorLazy
            Lazy<DeviceEntryInteractor> deviceEntryInteractorLazy,
            DismissCallbackRegistry dismissCallbackRegistry
    ) {
        mContext = context;
        mExecutor = executor;
@@ -437,6 +441,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
        mSceneInteractorLazy = sceneInteractorLazy;
        mStatusBarKeyguardViewManagerInteractor = statusBarKeyguardViewManagerInteractor;
        mDeviceEntryInteractorLazy = deviceEntryInteractorLazy;
        mDismissCallbackRegistry = dismissCallbackRegistry;
    }

    KeyguardTransitionInteractor mKeyguardTransitionInteractor;
@@ -994,6 +999,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
            }
            if (!SceneContainerFlag.isEnabled() && hideBouncerWhenShowing) {
                hideAlternateBouncer(true);
                mDismissCallbackRegistry.notifyDismissCancelled();
                mPrimaryBouncerInteractor.setDismissAction(null, null);
            }
            mKeyguardUpdateManager.sendKeyguardReset();
            updateStates();
+9 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.policy.IKeyguardDismissCallback
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.domain.interactor.primaryBouncerInteractor
import com.android.systemui.concurrency.fakeExecutor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectValues
@@ -30,6 +31,7 @@ import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.phone.statusBarKeyguardViewManager
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
@@ -69,6 +71,12 @@ class AlternateBouncerViewModelTest : SysuiTestCase() {
    @Test
    fun onBackRequested() =
        testScope.runTest {
            kosmos.primaryBouncerInteractor.setDismissAction(
                mock(ActivityStarter.OnDismissAction::class.java),
                {},
            )
            assertThat(kosmos.primaryBouncerInteractor.bouncerDismissAction).isNotNull()

            val dismissCallback = mock(IKeyguardDismissCallback::class.java)
            kosmos.dismissCallbackRegistry.addCallback(dismissCallback)

@@ -76,6 +84,7 @@ class AlternateBouncerViewModelTest : SysuiTestCase() {
            kosmos.fakeExecutor.runAllReady()
            verify(statusBarKeyguardViewManager).hideAlternateBouncer(any())
            verify(dismissCallback).onDismissCancelled()
            assertThat(kosmos.primaryBouncerInteractor.bouncerDismissAction).isNull()
        }

    @Test
+13 −3
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ import com.android.systemui.dock.DockManager;
import com.android.systemui.dreams.DreamOverlayStateController;
import com.android.systemui.flags.DisableSceneContainer;
import com.android.systemui.flags.EnableSceneContainer;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.keyguard.domain.interactor.KeyguardDismissActionInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardSurfaceBehindInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
@@ -171,6 +172,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
    @Mock private SelectedUserInteractor mSelectedUserInteractor;
    @Mock private DeviceEntryInteractor mDeviceEntryInteractor;
    @Mock private SceneInteractor mSceneInteractor;
    @Mock private DismissCallbackRegistry mDismissCallbackRegistry;

    private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
    private PrimaryBouncerCallbackInteractor.PrimaryBouncerExpansionCallback
@@ -242,7 +244,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
                        () -> mSceneInteractor,
                        mock(StatusBarKeyguardViewManagerInteractor.class),
                        mExecutor,
                        () -> mDeviceEntryInteractor) {
                        () -> mDeviceEntryInteractor,
                        mDismissCallbackRegistry) {
                    @Override
                    public ViewRootImpl getViewRootImpl() {
                        return mViewRootImpl;
@@ -765,7 +768,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
                        () -> mSceneInteractor,
                        mock(StatusBarKeyguardViewManagerInteractor.class),
                        mExecutor,
                        () -> mDeviceEntryInteractor) {
                        () -> mDeviceEntryInteractor,
                        mDismissCallbackRegistry) {
                    @Override
                    public ViewRootImpl getViewRootImpl() {
                        return mViewRootImpl;
@@ -777,7 +781,11 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
    }

    @Test
    @DisableSceneContainer
    public void testResetHideBouncerWhenShowing_alternateBouncerHides() {
        reset(mDismissCallbackRegistry);
        reset(mPrimaryBouncerInteractor);

        // GIVEN the keyguard is showing
        reset(mAlternateBouncerInteractor);
        when(mKeyguardStateController.isShowing()).thenReturn(true);
@@ -785,8 +793,10 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
        // WHEN SBKV is reset with hideBouncerWhenShowing=true
        mStatusBarKeyguardViewManager.reset(true);

        // THEN alternate bouncer is hidden
        // THEN alternate bouncer is hidden and dismiss actions reset
        verify(mAlternateBouncerInteractor).hide();
        verify(mDismissCallbackRegistry).notifyDismissCancelled();
        verify(mPrimaryBouncerInteractor).setDismissAction(eq(null), eq(null));
    }

    @Test
+2 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
package com.android.systemui.keyguard.ui.viewmodel

import com.android.systemui.bouncer.domain.interactor.alternateBouncerInteractor
import com.android.systemui.bouncer.domain.interactor.primaryBouncerInteractor
import com.android.systemui.keyguard.dismissCallbackRegistry
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.kosmos.Kosmos
@@ -32,5 +33,6 @@ val Kosmos.alternateBouncerViewModel by Fixture {
        keyguardTransitionInteractor = keyguardTransitionInteractor,
        dismissCallbackRegistry = dismissCallbackRegistry,
        alternateBouncerInteractor = { alternateBouncerInteractor },
        primaryBouncerInteractor = primaryBouncerInteractor,
    )
}