diff options
12 files changed, 119 insertions, 258 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/common/domain/CommonDomainLayerModule.kt b/packages/SystemUI/src/com/android/systemui/common/domain/CommonDomainLayerModule.kt deleted file mode 100644 index 7be2eaf7b105..000000000000 --- a/packages/SystemUI/src/com/android/systemui/common/domain/CommonDomainLayerModule.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.common.domain - -import com.android.systemui.common.domain.interactor.ConfigurationInteractor -import com.android.systemui.common.domain.interactor.ConfigurationInteractorImpl -import dagger.Binds -import dagger.Module - -@Module -abstract class CommonDomainLayerModule { - @Binds abstract fun bindInteractor(impl: ConfigurationInteractorImpl): ConfigurationInteractor -} diff --git a/packages/SystemUI/src/com/android/systemui/common/domain/interactor/ConfigurationInteractor.kt b/packages/SystemUI/src/com/android/systemui/common/domain/interactor/ConfigurationInteractor.kt deleted file mode 100644 index 89053d1d05fa..000000000000 --- a/packages/SystemUI/src/com/android/systemui/common/domain/interactor/ConfigurationInteractor.kt +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ -package com.android.systemui.common.domain.interactor - -import android.content.res.Configuration -import android.graphics.Rect -import android.view.Surface -import com.android.systemui.common.ui.data.repository.ConfigurationRepository -import javax.inject.Inject -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.distinctUntilChanged -import kotlinx.coroutines.flow.map - -interface ConfigurationInteractor { - /** - * Returns screen size adjusted to rotation, so returned screen sizes are stable across all - * rotations, could be useful if you need to react to screen resize (e.g. fold/unfold on - * foldable devices) - */ - val naturalMaxBounds: Flow<Rect> -} - -class ConfigurationInteractorImpl -@Inject -constructor(private val repository: ConfigurationRepository) : ConfigurationInteractor { - - override val naturalMaxBounds: Flow<Rect> - get() = repository.configurationValues.map { it.naturalScreenBounds }.distinctUntilChanged() - - /** - * Returns screen size adjusted to rotation, so returned screen size is stable across all - * rotations - */ - private val Configuration.naturalScreenBounds: Rect - get() { - val rotation = windowConfiguration.displayRotation - val maxBounds = windowConfiguration.maxBounds - return if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) { - Rect(0, 0, maxBounds.width(), maxBounds.height()) - } else { - Rect(0, 0, maxBounds.height(), maxBounds.width()) - } - } -} diff --git a/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt b/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt index 3648f3b2c3b9..2008c1be4ce3 100644 --- a/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt @@ -17,17 +17,45 @@ package com.android.systemui.common.ui.domain.interactor +import android.content.res.Configuration +import android.graphics.Rect +import android.view.Surface import com.android.systemui.common.ui.data.repository.ConfigurationRepository import com.android.systemui.dagger.SysUISingleton import javax.inject.Inject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.onStart /** Business logic related to configuration changes. */ @SysUISingleton class ConfigurationInteractor @Inject constructor(private val repository: ConfigurationRepository) { + /** + * Returns screen size adjusted to rotation, so returned screen size is stable across all + * rotations + */ + private val Configuration.naturalScreenBounds: Rect + get() { + val rotation = windowConfiguration.displayRotation + val maxBounds = windowConfiguration.maxBounds + return if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) { + Rect(0, 0, maxBounds.width(), maxBounds.height()) + } else { + Rect(0, 0, maxBounds.height(), maxBounds.width()) + } + } + + /** + * Returns screen size adjusted to rotation, so returned screen sizes are stable across all + * rotations, could be useful if you need to react to screen resize (e.g. fold/unfold on + * foldable devices) + */ + val naturalMaxBounds: Flow<Rect> = + repository.configurationValues.map { it.naturalScreenBounds }.distinctUntilChanged() + /** Given [resourceId], emit the dimension pixel size on config change */ fun dimensionPixelSize(resourceId: Int): Flow<Int> { return onAnyConfigurationChange.mapLatest { repository.getDimensionPixelSize(resourceId) } diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java index ca8268dc89a3..a25c78871115 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java @@ -43,7 +43,6 @@ import com.android.systemui.bouncer.ui.BouncerViewModule; import com.android.systemui.classifier.FalsingModule; import com.android.systemui.clipboardoverlay.dagger.ClipboardOverlayModule; import com.android.systemui.common.data.CommonDataLayerModule; -import com.android.systemui.common.domain.CommonDomainLayerModule; import com.android.systemui.communal.dagger.CommunalModule; import com.android.systemui.complication.dagger.ComplicationComponent; import com.android.systemui.controls.dagger.ControlsModule; @@ -179,7 +178,6 @@ import javax.inject.Named; ClockRegistryModule.class, CommunalModule.class, CommonDataLayerModule.class, - CommonDomainLayerModule.class, ConnectivityModule.class, ControlsModule.class, CoroutinesModule.class, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractor.kt index 4de3a7fd9ff1..3a650aa19eb0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractor.kt @@ -18,7 +18,7 @@ package com.android.systemui.statusbar.notification.stack.domain.interactor import android.graphics.Rect import android.util.Log import com.android.app.tracing.FlowTracing.traceEach -import com.android.systemui.common.domain.interactor.ConfigurationInteractor +import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.power.shared.model.ScreenPowerState.SCREEN_ON @@ -28,6 +28,7 @@ import com.android.systemui.util.kotlin.WithPrev import com.android.systemui.util.kotlin.area import com.android.systemui.util.kotlin.pairwise import com.android.systemui.util.kotlin.race +import javax.inject.Inject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.TimeoutCancellationException import kotlinx.coroutines.flow.Flow @@ -38,7 +39,6 @@ import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flow import kotlinx.coroutines.withTimeout -import javax.inject.Inject @OptIn(ExperimentalCoroutinesApi::class) @SysUISingleton diff --git a/packages/SystemUI/tests/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorTest.kt deleted file mode 100644 index bfa36412ceb5..000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorTest.kt +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ -package com.android.systemui.common.domain.interactor - -import android.content.res.Configuration -import android.graphics.Rect -import android.testing.AndroidTestingRunner -import android.view.Surface.ROTATION_0 -import android.view.Surface.ROTATION_90 -import android.view.Surface.Rotation -import androidx.test.filters.SmallTest -import com.android.systemui.SysuiTestCase -import com.android.systemui.common.ui.data.repository.ConfigurationRepositoryImpl -import com.android.systemui.coroutines.collectValues -import com.android.systemui.statusbar.policy.FakeConfigurationController -import com.android.systemui.util.mockito.mock -import com.google.common.truth.Truth.assertThat -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestScope -import kotlinx.coroutines.test.runCurrent -import kotlinx.coroutines.test.runTest -import org.junit.Before -import org.junit.Test -import org.junit.runner.RunWith - -@OptIn(ExperimentalCoroutinesApi::class) -@SmallTest -@RunWith(AndroidTestingRunner::class) -open class ConfigurationInteractorTest : SysuiTestCase() { - - private val testScope = TestScope() - - private val configurationController = FakeConfigurationController() - private val configurationRepository = - ConfigurationRepositoryImpl( - configurationController, - context, - testScope.backgroundScope, - mock() - ) - - private lateinit var configuration: Configuration - private lateinit var underTest: ConfigurationInteractor - - @Before - fun setUp() { - configuration = context.resources.configuration - - val testableResources = context.getOrCreateTestableResources() - testableResources.overrideConfiguration(configuration) - - underTest = ConfigurationInteractorImpl(configurationRepository) - } - - @Test - fun maxBoundsChange_emitsMaxBoundsChange() = - testScope.runTest { - val values by collectValues(underTest.naturalMaxBounds) - - updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) - runCurrent() - updateDisplay(width = DISPLAY_WIDTH * 2, height = DISPLAY_HEIGHT * 3) - runCurrent() - - assertThat(values) - .containsExactly( - Rect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT), - Rect(0, 0, DISPLAY_WIDTH * 2, DISPLAY_HEIGHT * 3), - ) - .inOrder() - } - - @Test - fun maxBoundsSameOnConfigChange_doesNotEmitMaxBoundsChange() = - testScope.runTest { - val values by collectValues(underTest.naturalMaxBounds) - - updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) - runCurrent() - updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) - runCurrent() - - assertThat(values).containsExactly(Rect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT)) - } - - @Test - fun firstMaxBoundsChange_emitsMaxBoundsChange() = - testScope.runTest { - val values by collectValues(underTest.naturalMaxBounds) - - updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) - runCurrent() - - assertThat(values).containsExactly(Rect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT)) - } - - @Test - fun displayRotatedButMaxBoundsTheSame_doesNotEmitNewMaxBoundsChange() = - testScope.runTest { - val values by collectValues(underTest.naturalMaxBounds) - - updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) - runCurrent() - updateDisplay(width = DISPLAY_HEIGHT, height = DISPLAY_WIDTH, rotation = ROTATION_90) - runCurrent() - - assertThat(values).containsExactly(Rect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT)) - } - - private fun updateDisplay( - width: Int = DISPLAY_WIDTH, - height: Int = DISPLAY_HEIGHT, - @Rotation rotation: Int = ROTATION_0 - ) { - configuration.windowConfiguration.maxBounds.set(Rect(0, 0, width, height)) - configuration.windowConfiguration.displayRotation = rotation - - configurationController.onConfigurationChanged(configuration) - } - - private companion object { - private const val DISPLAY_WIDTH = 100 - private const val DISPLAY_HEIGHT = 200 - } -} diff --git a/packages/SystemUI/tests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt index c5c02080fb80..9e007e970a92 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt @@ -16,14 +16,19 @@ package com.android.systemui.common.ui.domain.interactor +import android.content.res.Configuration +import android.graphics.Rect +import android.view.Surface import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository import com.android.systemui.coroutines.collectLastValue +import com.android.systemui.coroutines.collectValues import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test @@ -35,13 +40,16 @@ import org.mockito.MockitoAnnotations @RunWith(AndroidJUnit4::class) class ConfigurationInteractorTest : SysuiTestCase() { private lateinit var testScope: TestScope + private lateinit var configuration: Configuration private lateinit var underTest: ConfigurationInteractor private lateinit var configurationRepository: FakeConfigurationRepository @Before fun setUp() { MockitoAnnotations.initMocks(this) - + configuration = context.resources.configuration + val testableResources = context.getOrCreateTestableResources() + testableResources.overrideConfiguration(configuration) configurationRepository = FakeConfigurationRepository() testScope = TestScope() underTest = ConfigurationInteractor(configurationRepository) @@ -79,4 +87,79 @@ class ConfigurationInteractorTest : SysuiTestCase() { assertThat(dimensionPixelSizes!![resourceId1]).isEqualTo(pixelSize1) assertThat(dimensionPixelSizes!![resourceId2]).isEqualTo(pixelSize2) } + + @Test + fun maxBoundsChange_emitsMaxBoundsChange() = + testScope.runTest { + val values by collectValues(underTest.naturalMaxBounds) + + updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) + runCurrent() + updateDisplay(width = DISPLAY_WIDTH * 2, height = DISPLAY_HEIGHT * 3) + runCurrent() + + assertThat(values) + .containsExactly( + Rect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT), + Rect(0, 0, DISPLAY_WIDTH * 2, DISPLAY_HEIGHT * 3), + ) + .inOrder() + } + + @Test + fun maxBoundsSameOnConfigChange_doesNotEmitMaxBoundsChange() = + testScope.runTest { + val values by collectValues(underTest.naturalMaxBounds) + + updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) + runCurrent() + updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) + runCurrent() + + assertThat(values).containsExactly(Rect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT)) + } + + @Test + fun firstMaxBoundsChange_emitsMaxBoundsChange() = + testScope.runTest { + val values by collectValues(underTest.naturalMaxBounds) + + updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) + runCurrent() + + assertThat(values).containsExactly(Rect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT)) + } + + @Test + fun displayRotatedButMaxBoundsTheSame_doesNotEmitNewMaxBoundsChange() = + testScope.runTest { + val values by collectValues(underTest.naturalMaxBounds) + + updateDisplay(width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT) + runCurrent() + updateDisplay( + width = DISPLAY_HEIGHT, + height = DISPLAY_WIDTH, + rotation = Surface.ROTATION_90 + ) + runCurrent() + + assertThat(values).containsExactly(Rect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT)) + } + + private fun updateDisplay( + width: Int = DISPLAY_WIDTH, + height: Int = DISPLAY_HEIGHT, + @Surface.Rotation rotation: Int = Surface.ROTATION_0 + ) { + configuration.windowConfiguration.maxBounds.set(Rect(0, 0, width, height)) + configuration.windowConfiguration.displayRotation = rotation + + configurationRepository.onConfigurationChange(configuration) + } + + private companion object { + private const val DISPLAY_WIDTH = 100 + private const val DISPLAY_HEIGHT = 200 + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt index ac20683b4f49..4bfd7e3bef83 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorTest.kt @@ -23,8 +23,8 @@ import android.view.Surface.ROTATION_0 import android.view.Surface.ROTATION_90 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase -import com.android.systemui.common.domain.interactor.ConfigurationInteractorImpl import com.android.systemui.common.ui.data.repository.ConfigurationRepositoryImpl +import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor import com.android.systemui.coroutines.collectValues import com.android.systemui.power.data.repository.FakePowerRepository import com.android.systemui.power.domain.interactor.PowerInteractor @@ -81,7 +81,7 @@ open class HideNotificationsInteractorTest : SysuiTestCase() { testScope.backgroundScope, mock() ) - private val configurationInteractor = ConfigurationInteractorImpl(configurationRepository) + private val configurationInteractor = ConfigurationInteractor(configurationRepository) private lateinit var configuration: Configuration private lateinit var underTest: HideNotificationsInteractor diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt index 21774aa2f8d7..c17a8ef62a4b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelTest.kt @@ -28,7 +28,6 @@ import com.android.systemui.SysUITestModule import com.android.systemui.SysuiTestCase import com.android.systemui.TestMocksModule import com.android.systemui.collectLastValue -import com.android.systemui.common.domain.CommonDomainLayerModule import com.android.systemui.dagger.SysUISingleton import com.android.systemui.flags.FakeFeatureFlagsClassicModule import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository @@ -69,7 +68,6 @@ class NotificationListViewModelTest : SysuiTestCase() { [ SysUITestModule::class, ActivatableNotificationViewModelModule::class, - CommonDomainLayerModule::class, FooterViewModelModule::class, HeadlessSystemUserModeModule::class, UnfoldTransitionModule.Bindings::class, diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorKosmos.kt deleted file mode 100644 index 94d9a72f0215..000000000000 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/common/domain/interactor/ConfigurationInteractorKosmos.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.common.domain.interactor - -import com.android.systemui.common.ui.data.repository.configurationRepository -import com.android.systemui.kosmos.Kosmos -import com.android.systemui.kosmos.Kosmos.Fixture - -val Kosmos.configurationInteractor by Fixture { - ConfigurationInteractorImpl(repository = configurationRepository) -} diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/common/ui/data/repository/FakeConfigurationRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/common/ui/data/repository/FakeConfigurationRepository.kt index 6b38d6ea315a..050c2c9793f3 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/common/ui/data/repository/FakeConfigurationRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/common/ui/data/repository/FakeConfigurationRepository.kt @@ -37,7 +37,8 @@ class FakeConfigurationRepository @Inject constructor() : ConfigurationRepositor MutableSharedFlow<Unit>(replay = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST) override val onConfigurationChange: Flow<Unit> = _onConfigurationChange.asSharedFlow() - private val _configurationChangeValues = MutableSharedFlow<Configuration>() + private val _configurationChangeValues = + MutableSharedFlow<Configuration>(replay = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST) override val configurationValues: Flow<Configuration> = _configurationChangeValues.asSharedFlow() diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorKosmos.kt index baca8b2ef476..4232b274f94f 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/domain/interactor/HideNotificationsInteractorKosmos.kt @@ -16,7 +16,7 @@ package com.android.systemui.statusbar.notification.stack.domain.interactor -import com.android.systemui.common.domain.interactor.configurationInteractor +import com.android.systemui.common.ui.domain.interactor.configurationInteractor import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.power.domain.interactor.powerInteractor |