Loading packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModel.kt +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -73,5 +75,6 @@ constructor( fun onBackRequested() { statusBarKeyguardViewManager.hideAlternateBouncer(false) dismissCallbackRegistry.notifyDismissCancelled() primaryBouncerInteractor.setDismissAction(null, null) } } packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +8 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -437,6 +441,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mSceneInteractorLazy = sceneInteractorLazy; mStatusBarKeyguardViewManagerInteractor = statusBarKeyguardViewManagerInteractor; mDeviceEntryInteractorLazy = deviceEntryInteractorLazy; mDismissCallbackRegistry = dismissCallbackRegistry; } KeyguardTransitionInteractor mKeyguardTransitionInteractor; Loading Loading @@ -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(); Loading packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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) Loading @@ -76,6 +84,7 @@ class AlternateBouncerViewModelTest : SysuiTestCase() { kosmos.fakeExecutor.runAllReady() verify(statusBarKeyguardViewManager).hideAlternateBouncer(any()) verify(dismissCallback).onDismissCancelled() assertThat(kosmos.primaryBouncerInteractor.bouncerDismissAction).isNull() } @Test Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +13 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -242,7 +244,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { () -> mSceneInteractor, mock(StatusBarKeyguardViewManagerInteractor.class), mExecutor, () -> mDeviceEntryInteractor) { () -> mDeviceEntryInteractor, mDismissCallbackRegistry) { @Override public ViewRootImpl getViewRootImpl() { return mViewRootImpl; Loading Loading @@ -765,7 +768,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { () -> mSceneInteractor, mock(StatusBarKeyguardViewManagerInteractor.class), mExecutor, () -> mDeviceEntryInteractor) { () -> mDeviceEntryInteractor, mDismissCallbackRegistry) { @Override public ViewRootImpl getViewRootImpl() { return mViewRootImpl; Loading @@ -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); Loading @@ -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 Loading packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -32,5 +33,6 @@ val Kosmos.alternateBouncerViewModel by Fixture { keyguardTransitionInteractor = keyguardTransitionInteractor, dismissCallbackRegistry = dismissCallbackRegistry, alternateBouncerInteractor = { alternateBouncerInteractor }, primaryBouncerInteractor = primaryBouncerInteractor, ) } Loading
packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModel.kt +3 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -73,5 +75,6 @@ constructor( fun onBackRequested() { statusBarKeyguardViewManager.hideAlternateBouncer(false) dismissCallbackRegistry.notifyDismissCancelled() primaryBouncerInteractor.setDismissAction(null, null) } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +8 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -437,6 +441,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mSceneInteractorLazy = sceneInteractorLazy; mStatusBarKeyguardViewManagerInteractor = statusBarKeyguardViewManagerInteractor; mDeviceEntryInteractorLazy = deviceEntryInteractorLazy; mDismissCallbackRegistry = dismissCallbackRegistry; } KeyguardTransitionInteractor mKeyguardTransitionInteractor; Loading Loading @@ -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(); Loading
packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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) Loading @@ -76,6 +84,7 @@ class AlternateBouncerViewModelTest : SysuiTestCase() { kosmos.fakeExecutor.runAllReady() verify(statusBarKeyguardViewManager).hideAlternateBouncer(any()) verify(dismissCallback).onDismissCancelled() assertThat(kosmos.primaryBouncerInteractor.bouncerDismissAction).isNull() } @Test Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +13 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -242,7 +244,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { () -> mSceneInteractor, mock(StatusBarKeyguardViewManagerInteractor.class), mExecutor, () -> mDeviceEntryInteractor) { () -> mDeviceEntryInteractor, mDismissCallbackRegistry) { @Override public ViewRootImpl getViewRootImpl() { return mViewRootImpl; Loading Loading @@ -765,7 +768,8 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { () -> mSceneInteractor, mock(StatusBarKeyguardViewManagerInteractor.class), mExecutor, () -> mDeviceEntryInteractor) { () -> mDeviceEntryInteractor, mDismissCallbackRegistry) { @Override public ViewRootImpl getViewRootImpl() { return mViewRootImpl; Loading @@ -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); Loading @@ -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 Loading
packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -32,5 +33,6 @@ val Kosmos.alternateBouncerViewModel by Fixture { keyguardTransitionInteractor = keyguardTransitionInteractor, dismissCallbackRegistry = dismissCallbackRegistry, alternateBouncerInteractor = { alternateBouncerInteractor }, primaryBouncerInteractor = primaryBouncerInteractor, ) }