Loading packages/SystemUI/multivalentTests/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModelTest.kt +27 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.testKosmos import com.android.systemui.window.data.repository.fakeWindowRootViewBlurRepository import com.android.systemui.window.data.repository.windowRootViewBlurRepository import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest Loading @@ -34,7 +36,7 @@ import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) @EnableFlags(Flags.FLAG_BOUNCER_UI_REVAMP) @EnableFlags(Flags.FLAG_BOUNCER_UI_REVAMP, Flags.FLAG_GLANCEABLE_HUB_BLURRED_BACKGROUND) class WindowRootViewModelTest : SysuiTestCase() { val kosmos = testKosmos() val testScope = kosmos.testScope Loading @@ -49,6 +51,7 @@ class WindowRootViewModelTest : SysuiTestCase() { @Test fun bouncerTransitionChangesWindowBlurRadius() = testScope.runTest { kosmos.fakeWindowRootViewBlurRepository.isBlurSupported.value = true val blurRadius by collectLastValue(underTest.blurRadius) val isBlurOpaque by collectLastValue(underTest.isBlurOpaque) runCurrent() Loading @@ -59,4 +62,27 @@ class WindowRootViewModelTest : SysuiTestCase() { assertThat(blurRadius).isEqualTo(30) assertThat(isBlurOpaque).isEqualTo(false) } @Test fun blurRadiusDoesNotChangeWhenBlurIsNotSupported() = testScope.runTest { kosmos.fakeWindowRootViewBlurRepository.isBlurSupported.value = false val blurRadius by collectLastValue(underTest.blurRadius) runCurrent() kosmos.fakeBouncerTransitions.first().windowBlurRadius.value = 30.0f runCurrent() assertThat(blurRadius).isEqualTo(0f) kosmos.fakeGlanceableHubTransitions.first().windowBlurRadius.value = 50.0f runCurrent() assertThat(blurRadius).isEqualTo(0f) kosmos.windowRootViewBlurRepository.blurRadius.value = 60 runCurrent() assertThat(blurRadius).isEqualTo(0f) } } packages/SystemUI/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModel.kt +21 −2 Original line number Diff line number Diff line Loading @@ -26,11 +26,14 @@ import com.android.systemui.lifecycle.ExclusiveActivatable import com.android.systemui.window.domain.interactor.WindowRootViewBlurInteractor import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach Loading @@ -38,6 +41,7 @@ import kotlinx.coroutines.flow.onEach typealias BlurAppliedUiEvent = Int /** View model for window root view. */ @OptIn(ExperimentalCoroutinesApi::class) class WindowRootViewModel @AssistedInject constructor( Loading @@ -58,7 +62,7 @@ constructor( glanceableHubTransitions.map { it.windowBlurRadius.logIfPossible(it.javaClass.name) } else emptyList() val blurRadius: Flow<Float> = private val _blurRadius = listOf( *bouncerBlurRadiusFlows.toTypedArray(), *glanceableHubBlurRadiusFlows.toTypedArray(), Loading @@ -66,8 +70,23 @@ constructor( ) .merge() val blurRadius: Flow<Float> = blurInteractor.isBlurCurrentlySupported.flatMapLatest { blurSupported -> if (blurSupported) { _blurRadius } else { flowOf(0f) } } val isBlurOpaque = blurInteractor.isBlurCurrentlySupported.flatMapLatest { blurSupported -> if (blurSupported) { blurInteractor.isBlurOpaque.distinctUntilChanged().logIfPossible("isBlurOpaque") } else { flowOf(false) } } override suspend fun onActivated(): Nothing { coroutineScope { Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModelTest.kt +27 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.testKosmos import com.android.systemui.window.data.repository.fakeWindowRootViewBlurRepository import com.android.systemui.window.data.repository.windowRootViewBlurRepository import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest Loading @@ -34,7 +36,7 @@ import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) @EnableFlags(Flags.FLAG_BOUNCER_UI_REVAMP) @EnableFlags(Flags.FLAG_BOUNCER_UI_REVAMP, Flags.FLAG_GLANCEABLE_HUB_BLURRED_BACKGROUND) class WindowRootViewModelTest : SysuiTestCase() { val kosmos = testKosmos() val testScope = kosmos.testScope Loading @@ -49,6 +51,7 @@ class WindowRootViewModelTest : SysuiTestCase() { @Test fun bouncerTransitionChangesWindowBlurRadius() = testScope.runTest { kosmos.fakeWindowRootViewBlurRepository.isBlurSupported.value = true val blurRadius by collectLastValue(underTest.blurRadius) val isBlurOpaque by collectLastValue(underTest.isBlurOpaque) runCurrent() Loading @@ -59,4 +62,27 @@ class WindowRootViewModelTest : SysuiTestCase() { assertThat(blurRadius).isEqualTo(30) assertThat(isBlurOpaque).isEqualTo(false) } @Test fun blurRadiusDoesNotChangeWhenBlurIsNotSupported() = testScope.runTest { kosmos.fakeWindowRootViewBlurRepository.isBlurSupported.value = false val blurRadius by collectLastValue(underTest.blurRadius) runCurrent() kosmos.fakeBouncerTransitions.first().windowBlurRadius.value = 30.0f runCurrent() assertThat(blurRadius).isEqualTo(0f) kosmos.fakeGlanceableHubTransitions.first().windowBlurRadius.value = 50.0f runCurrent() assertThat(blurRadius).isEqualTo(0f) kosmos.windowRootViewBlurRepository.blurRadius.value = 60 runCurrent() assertThat(blurRadius).isEqualTo(0f) } }
packages/SystemUI/src/com/android/systemui/window/ui/viewmodel/WindowRootViewModel.kt +21 −2 Original line number Diff line number Diff line Loading @@ -26,11 +26,14 @@ import com.android.systemui.lifecycle.ExclusiveActivatable import com.android.systemui.window.domain.interactor.WindowRootViewBlurInteractor import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach Loading @@ -38,6 +41,7 @@ import kotlinx.coroutines.flow.onEach typealias BlurAppliedUiEvent = Int /** View model for window root view. */ @OptIn(ExperimentalCoroutinesApi::class) class WindowRootViewModel @AssistedInject constructor( Loading @@ -58,7 +62,7 @@ constructor( glanceableHubTransitions.map { it.windowBlurRadius.logIfPossible(it.javaClass.name) } else emptyList() val blurRadius: Flow<Float> = private val _blurRadius = listOf( *bouncerBlurRadiusFlows.toTypedArray(), *glanceableHubBlurRadiusFlows.toTypedArray(), Loading @@ -66,8 +70,23 @@ constructor( ) .merge() val blurRadius: Flow<Float> = blurInteractor.isBlurCurrentlySupported.flatMapLatest { blurSupported -> if (blurSupported) { _blurRadius } else { flowOf(0f) } } val isBlurOpaque = blurInteractor.isBlurCurrentlySupported.flatMapLatest { blurSupported -> if (blurSupported) { blurInteractor.isBlurOpaque.distinctUntilChanged().logIfPossible("isBlurOpaque") } else { flowOf(false) } } override suspend fun onActivated(): Nothing { coroutineScope { Loading