Merge "Do not separate flow into two." into tm-qpr-dev am: 4f5270a46f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22187446
Change-Id: I702a3ebbaf8e14f1acfb60986127f7e44638a814
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
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 ae5b799..64e2a2c 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.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 @@
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 @@
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 0a3b3d3..e9184ae 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 @@
}
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 5fcf105..468a6b5 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 @@
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 0656c9b..9602888 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 @@
/** 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 @@
/** 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 2ab1b99..9cd2220 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 @@
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()
+ }
}