diff options
| author | 2023-03-24 17:19:29 +0000 | |
|---|---|---|
| committer | 2023-03-24 17:19:29 +0000 | |
| commit | 4f5270a46f60247c4e6c7ed93b933542a813bb84 (patch) | |
| tree | 9c8a17045c573cab34d3728b32f2aaaa45fedf25 | |
| parent | e455bc8e0a3afd8e11d470ac2a83c1eaf9c4710a (diff) | |
| parent | 1834a6bd7342e77d5f4b4e6d2e4850cd00d6688e (diff) | |
Merge "Do not separate flow into two." into tm-qpr-dev
5 files changed, 53 insertions, 31 deletions
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 ae5b79947006..64e2a2cbd396 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 @@ -17,6 +17,7 @@ package com.android.systemui.keyguard.data.repository import android.os.Build +import android.util.Log import com.android.keyguard.ViewMediatorCallback import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application @@ -34,6 +35,7 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.onEach /** * Encapsulates app state for the lock screen primary and alternate bouncer. @@ -231,6 +233,7 @@ constructor( primaryBouncerShow .logDiffsForTable(buffer, "", "PrimaryBouncerShow", false) + .onEach { Log.d(TAG, "Keyguard Bouncer is ${if (it) "showing" else "hiding."}") } .launchIn(applicationScope) primaryBouncerShowingSoon .logDiffsForTable(buffer, "", "PrimaryBouncerShowingSoon", false) @@ -274,5 +277,6 @@ constructor( companion object { private const val NOT_VISIBLE = -1L + private const val TAG = "KeyguardBouncerRepositoryImpl" } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractor.kt index 0a3b3d3796cc..e9184aeeb29e 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractor.kt @@ -95,8 +95,7 @@ constructor( } val keyguardAuthenticated: Flow<Boolean> = repository.keyguardAuthenticated.filterNotNull() - val show: Flow<Unit> = repository.primaryBouncerShow.filter { it }.map {} - val hide: Flow<Unit> = repository.primaryBouncerShow.filter { !it }.map {} + val isShowing: Flow<Boolean> = repository.primaryBouncerShow val startingToHide: Flow<Unit> = repository.primaryBouncerStartingToHide.filter { it }.map {} val isBackButtonEnabled: Flow<Boolean> = repository.isBackButtonEnabled.filterNotNull() val showMessage: Flow<BouncerShowMessageModel> = repository.showMessage.filterNotNull() 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 5fcf1052d949..468a6b52c5e5 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 @@ -109,36 +109,36 @@ object KeyguardBouncerViewBinder { try { viewModel.setBouncerViewDelegate(delegate) launch { - viewModel.show.collect { - // Reset Security Container entirely. - securityContainerController.reinflateViewFlipper { + viewModel.isShowing.collect { isShowing -> + if (isShowing) { // Reset Security Container entirely. - view.visibility = View.VISIBLE + securityContainerController.reinflateViewFlipper { + // Reset Security Container entirely. + view.visibility = View.VISIBLE + securityContainerController.onBouncerVisibilityChanged( + /* isVisible= */ true + ) + securityContainerController.showPrimarySecurityScreen( + /* turningOff= */ false + ) + securityContainerController.appear() + securityContainerController.onResume( + KeyguardSecurityView.SCREEN_ON + ) + } + } else { + view.visibility = View.INVISIBLE securityContainerController.onBouncerVisibilityChanged( - /* isVisible= */ true + /* isVisible= */ false ) - securityContainerController.showPrimarySecurityScreen( - /* turningOff= */ false - ) - securityContainerController.appear() - securityContainerController.onResume(KeyguardSecurityView.SCREEN_ON) + securityContainerController.cancelDismissAction() + securityContainerController.reset() + securityContainerController.onPause() } } } launch { - viewModel.hide.collect { - view.visibility = View.INVISIBLE - securityContainerController.onBouncerVisibilityChanged( - /* isVisible= */ false - ) - securityContainerController.cancelDismissAction() - securityContainerController.reset() - securityContainerController.onPause() - } - } - - launch { viewModel.startingToHide.collect { securityContainerController.onStartingToHide() } 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 0656c9baa921..9602888ced58 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 @@ -40,11 +40,8 @@ constructor( /** Can the user interact with the view? */ val isInteractable: Flow<Boolean> = interactor.isInteractable - /** Observe whether bouncer is showing. */ - val show: Flow<Unit> = interactor.show - - /** Observe whether bouncer is hiding. */ - val hide: Flow<Unit> = interactor.hide + /** Observe whether bouncer is showing or not. */ + val isShowing: Flow<Boolean> = interactor.isShowing /** Observe whether bouncer is starting to hide. */ val startingToHide: Flow<Unit> = interactor.startingToHide @@ -70,8 +67,8 @@ constructor( /** Observe whether we should update fps is showing. */ val shouldUpdateSideFps: Flow<Unit> = merge( - interactor.hide, - interactor.show, + interactor.isShowing.map {}, + interactor.startingToHide, interactor.startingDisappearAnimation.filterNotNull().map {} ) diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBouncerViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBouncerViewModelTest.kt index 2ab1b99b7fee..9cd2220f56de 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBouncerViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBouncerViewModelTest.kt @@ -125,4 +125,26 @@ class KeyguardBouncerViewModelTest : SysuiTestCase() { assertThat(sideFpsIsShowing).isEqualTo(true) job.cancel() } + + @Test + fun isShowing() = runTest { + var isShowing: Boolean? = null + val job = underTest.isShowing.onEach { isShowing = it }.launchIn(this) + repository.setPrimaryShow(true) + // Run the tasks that are pending at this point of virtual time. + runCurrent() + assertThat(isShowing).isEqualTo(true) + job.cancel() + } + + @Test + fun isNotShowing() = runTest { + var isShowing: Boolean? = null + val job = underTest.isShowing.onEach { isShowing = it }.launchIn(this) + repository.setPrimaryShow(false) + // Run the tasks that are pending at this point of virtual time. + runCurrent() + assertThat(isShowing).isEqualTo(false) + job.cancel() + } } |