diff options
7 files changed, 26 insertions, 35 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/BouncerView.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/BouncerView.kt index 99ae85d7a548..80c6130955c5 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/data/BouncerView.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/BouncerView.kt @@ -18,6 +18,7 @@ package com.android.systemui.keyguard.data import android.view.KeyEvent import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.plugins.ActivityStarter import java.lang.ref.WeakReference import javax.inject.Inject @@ -45,4 +46,9 @@ interface BouncerViewDelegate { fun dispatchBackKeyEventPreIme(): Boolean fun showNextSecurityScreenOrFinish(): Boolean fun resume() + fun setDismissAction( + onDismissAction: ActivityStarter.OnDismissAction?, + cancelAction: Runnable?, + ) + fun willDismissWithActions(): Boolean } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBouncerRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBouncerRepository.kt index 76b8f26ea92c..0046256c677b 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBouncerRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBouncerRepository.kt @@ -21,7 +21,6 @@ import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitorCallback import com.android.keyguard.ViewMediatorCallback import com.android.systemui.dagger.SysUISingleton -import com.android.systemui.keyguard.shared.model.BouncerCallbackActionsModel import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel import com.android.systemui.keyguard.shared.model.KeyguardBouncerModel import com.android.systemui.statusbar.phone.KeyguardBouncer @@ -60,8 +59,6 @@ constructor( val hide = _hide.asStateFlow() private val _startingToHide = MutableStateFlow(false) val startingToHide = _startingToHide.asStateFlow() - private val _onDismissAction = MutableStateFlow<BouncerCallbackActionsModel?>(null) - val onDismissAction = _onDismissAction.asStateFlow() private val _disappearAnimation = MutableStateFlow<Runnable?>(null) val startingDisappearAnimation = _disappearAnimation.asStateFlow() private val _keyguardPosition = MutableStateFlow(0f) @@ -126,10 +123,6 @@ constructor( _startingToHide.value = startingToHide } - fun setOnDismissAction(bouncerCallbackActionsModel: BouncerCallbackActionsModel?) { - _onDismissAction.value = bouncerCallbackActionsModel - } - fun setStartDisappearAnimation(runnable: Runnable?) { _disappearAnimation.value = runnable } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BouncerInteractor.kt index e644347f5577..dbb0352c2187 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BouncerInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BouncerInteractor.kt @@ -30,7 +30,6 @@ import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.DismissCallbackRegistry import com.android.systemui.keyguard.data.BouncerView import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository -import com.android.systemui.keyguard.shared.model.BouncerCallbackActionsModel import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel import com.android.systemui.keyguard.shared.model.KeyguardBouncerModel import com.android.systemui.plugins.ActivityStarter @@ -94,8 +93,6 @@ constructor( val showMessage: Flow<BouncerShowMessageModel> = repository.showMessage.filterNotNull() val startingDisappearAnimation: Flow<Runnable> = repository.startingDisappearAnimation.filterNotNull() - val onDismissAction: Flow<BouncerCallbackActionsModel> = - repository.onDismissAction.filterNotNull() val resourceUpdateRequests: Flow<Boolean> = repository.resourceUpdateRequests.filter { it } val keyguardPosition: Flow<Float> = repository.keyguardPosition val panelExpansionAmount: Flow<Float> = repository.panelExpansionAmount @@ -160,7 +157,6 @@ constructor( } keyguardStateController.notifyBouncerShowing(true) callbackInteractor.dispatchStartingToShow() - Trace.endSection() } @@ -179,7 +175,6 @@ constructor( keyguardStateController.notifyBouncerShowing(false /* showing */) cancelShowRunnable() repository.setShowingSoon(false) - repository.setOnDismissAction(null) repository.setVisible(false) repository.setHide(true) repository.setShow(null) @@ -241,7 +236,7 @@ constructor( onDismissAction: ActivityStarter.OnDismissAction?, cancelAction: Runnable? ) { - repository.setOnDismissAction(BouncerCallbackActionsModel(onDismissAction, cancelAction)) + bouncerView.delegate?.setDismissAction(onDismissAction, cancelAction) } /** Update the resources of the views. */ @@ -319,7 +314,7 @@ constructor( /** Return whether bouncer will dismiss with actions */ fun willDismissWithAction(): Boolean { - return repository.onDismissAction.value?.onDismissAction != null + return bouncerView.delegate?.willDismissWithActions() == true } /** Returns whether the bouncer should be full screen. */ diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt index df260148751c..a22958b74bb9 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt @@ -29,6 +29,7 @@ import com.android.keyguard.dagger.KeyguardBouncerComponent import com.android.systemui.keyguard.data.BouncerViewDelegate import com.android.systemui.keyguard.ui.viewmodel.KeyguardBouncerViewModel import com.android.systemui.lifecycle.repeatWhenAttached +import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.phone.KeyguardBouncer.EXPANSION_VISIBLE import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.flow.collect @@ -75,6 +76,17 @@ object KeyguardBouncerViewBinder { hostViewController.showPrimarySecurityScreen() hostViewController.onResume() } + + override fun setDismissAction( + onDismissAction: ActivityStarter.OnDismissAction?, + cancelAction: Runnable? + ) { + hostViewController.setOnDismissAction(onDismissAction, cancelAction) + } + + override fun willDismissWithActions(): Boolean { + return hostViewController.hasDismissActions() + } } view.repeatWhenAttached { repeatOnLifecycle(Lifecycle.State.STARTED) { @@ -122,15 +134,6 @@ object KeyguardBouncerViewBinder { } launch { - viewModel.setDismissAction.collect { - hostViewController.setOnDismissAction( - it.onDismissAction, - it.cancelAction - ) - } - } - - launch { viewModel.startDisappearAnimation.collect { hostViewController.startDisappearAnimation(it) } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBouncerViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBouncerViewModel.kt index 9b76a2c9b073..9a9284371074 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBouncerViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBouncerViewModel.kt @@ -20,7 +20,6 @@ import android.view.View import com.android.systemui.keyguard.data.BouncerView import com.android.systemui.keyguard.data.BouncerViewDelegate import com.android.systemui.keyguard.domain.interactor.BouncerInteractor -import com.android.systemui.keyguard.shared.model.BouncerCallbackActionsModel import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel import com.android.systemui.keyguard.shared.model.KeyguardBouncerModel import com.android.systemui.statusbar.phone.KeyguardBouncer.EXPANSION_VISIBLE @@ -63,9 +62,6 @@ constructor( /** Observe whether bouncer is starting to hide. */ val startingToHide: Flow<Unit> = interactor.startingToHide - /** Observe whether we want to set the dismiss action to the bouncer. */ - val setDismissAction: Flow<BouncerCallbackActionsModel> = interactor.onDismissAction - /** Observe whether we want to start the disappear animation. */ val startDisappearAnimation: Flow<Runnable> = interactor.startingDisappearAnimation diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index f2d603ff0ca4..ba7a363502f1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -171,7 +171,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb if (mBouncerAnimating) { mCentralSurfaces.setBouncerHiddenFraction(expansion); } - updateStates(); } @Override diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/BouncerInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/BouncerInteractorTest.kt index c4e7dd241eb9..5743b2f03d3a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/BouncerInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/BouncerInteractorTest.kt @@ -27,8 +27,8 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingCollector import com.android.systemui.keyguard.DismissCallbackRegistry import com.android.systemui.keyguard.data.BouncerView +import com.android.systemui.keyguard.data.BouncerViewDelegate import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository -import com.android.systemui.keyguard.shared.model.BouncerCallbackActionsModel import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel import com.android.systemui.keyguard.shared.model.KeyguardBouncerModel import com.android.systemui.plugins.ActivityStarter @@ -57,6 +57,7 @@ class BouncerInteractorTest : SysuiTestCase() { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private lateinit var repository: KeyguardBouncerRepository @Mock(answer = Answers.RETURNS_DEEP_STUBS) private lateinit var bouncerView: BouncerView + @Mock private lateinit var bouncerViewDelegate: BouncerViewDelegate @Mock private lateinit var keyguardStateController: KeyguardStateController @Mock private lateinit var keyguardSecurityModel: KeyguardSecurityModel @Mock private lateinit var bouncerCallbackInteractor: BouncerCallbackInteractor @@ -86,6 +87,7 @@ class BouncerInteractorTest : SysuiTestCase() { ) `when`(repository.startingDisappearAnimation.value).thenReturn(null) `when`(repository.show.value).thenReturn(null) + `when`(bouncerView.delegate).thenReturn(bouncerViewDelegate) } @Test @@ -124,7 +126,6 @@ class BouncerInteractorTest : SysuiTestCase() { verify(falsingCollector).onBouncerHidden() verify(keyguardStateController).notifyBouncerShowing(false) verify(repository).setShowingSoon(false) - verify(repository).setOnDismissAction(null) verify(repository).setVisible(false) verify(repository).setHide(true) verify(repository).setShow(null) @@ -178,8 +179,7 @@ class BouncerInteractorTest : SysuiTestCase() { val onDismissAction = mock(ActivityStarter.OnDismissAction::class.java) val cancelAction = mock(Runnable::class.java) bouncerInteractor.setDismissAction(onDismissAction, cancelAction) - verify(repository) - .setOnDismissAction(BouncerCallbackActionsModel(onDismissAction, cancelAction)) + verify(bouncerViewDelegate).setDismissAction(onDismissAction, cancelAction) } @Test @@ -269,10 +269,9 @@ class BouncerInteractorTest : SysuiTestCase() { @Test fun testWillDismissWithAction() { - `when`(repository.onDismissAction.value?.onDismissAction) - .thenReturn(mock(ActivityStarter.OnDismissAction::class.java)) + `when`(bouncerViewDelegate.willDismissWithActions()).thenReturn(true) assertThat(bouncerInteractor.willDismissWithAction()).isTrue() - `when`(repository.onDismissAction.value?.onDismissAction).thenReturn(null) + `when`(bouncerViewDelegate.willDismissWithActions()).thenReturn(false) assertThat(bouncerInteractor.willDismissWithAction()).isFalse() } } |