diff options
| author | 2022-11-18 16:11:02 +0000 | |
|---|---|---|
| committer | 2022-11-30 17:08:54 +0000 | |
| commit | c5cd47b21691bfd05f60c92dd7c1180e76d49d75 (patch) | |
| tree | 8dee9eab0b4f5a19509d860b799b252a0725a3f0 | |
| parent | d41f29df8489719a93d09d420d2ef706b2233234 (diff) | |
[SB Refactor] Make some wifi pipeline classes into interfaces.
This is needed for WifiScreenshotTest so that more of the pipeline can
be faked out.
Bug: 238425913
Test: manual: verified new wifi icon still works
Test: atest WifiScreenshotTest
Test: atest all tests in statusbar.pipeline
Change-Id: I335451e62c5db01143226d7cdc3ee29b93301bf2
9 files changed, 68 insertions, 32 deletions
diff --git a/packages/SystemUI/ktfmt_includes.txt b/packages/SystemUI/ktfmt_includes.txt index 553b86bb833f..0143ac783b95 100644 --- a/packages/SystemUI/ktfmt_includes.txt +++ b/packages/SystemUI/ktfmt_includes.txt @@ -753,7 +753,7 @@ -packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserSwitcherControllerOldImplTest.kt -packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ConnectivityPipelineLoggerTest.kt -packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositoryImplTest.kt --packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorTest.kt +-packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt -packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt -packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt -packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryStateNotifierTest.kt diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModel.kt index fe30c0169021..4a5342e0f765 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModel.kt @@ -36,16 +36,20 @@ import kotlinx.coroutines.flow.stateIn * [com.android.systemui.statusbar.pipeline.airplane.data.repository.AirplaneModeRepository] for * more details. */ +interface AirplaneModeViewModel { + /** True if the airplane mode icon is currently visible in the status bar. */ + val isAirplaneModeIconVisible: StateFlow<Boolean> +} + @SysUISingleton -class AirplaneModeViewModel +class AirplaneModeViewModelImpl @Inject constructor( interactor: AirplaneModeInteractor, logger: ConnectivityPipelineLogger, @Application private val scope: CoroutineScope, -) { - /** True if the airplane mode icon is currently visible in the status bar. */ - val isAirplaneModeIconVisible: StateFlow<Boolean> = +) : AirplaneModeViewModel { + override val isAirplaneModeIconVisible: StateFlow<Boolean> = combine(interactor.isAirplaneMode, interactor.isForceHidden) { isAirplaneMode, isAirplaneIconForceHidden -> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt index fcd1b8abefe4..d8ae1c18343c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt @@ -18,6 +18,8 @@ package com.android.systemui.statusbar.pipeline.dagger import com.android.systemui.statusbar.pipeline.airplane.data.repository.AirplaneModeRepository import com.android.systemui.statusbar.pipeline.airplane.data.repository.AirplaneModeRepositoryImpl +import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel +import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepositoryImpl import com.android.systemui.statusbar.pipeline.mobile.data.repository.UserSetupRepository @@ -30,6 +32,8 @@ import com.android.systemui.statusbar.pipeline.shared.data.repository.Connectivi import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepositoryImpl import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositoryImpl +import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor +import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractorImpl import dagger.Binds import dagger.Module @@ -39,12 +43,18 @@ abstract class StatusBarPipelineModule { abstract fun airplaneModeRepository(impl: AirplaneModeRepositoryImpl): AirplaneModeRepository @Binds + abstract fun airplaneModeViewModel(impl: AirplaneModeViewModelImpl): AirplaneModeViewModel + + @Binds abstract fun connectivityRepository(impl: ConnectivityRepositoryImpl): ConnectivityRepository @Binds abstract fun wifiRepository(impl: WifiRepositoryImpl): WifiRepository @Binds + abstract fun wifiInteractor(impl: WifiInteractorImpl): WifiInteractor + + @Binds abstract fun mobileConnectionsRepository( impl: MobileConnectionsRepositoryImpl ): MobileConnectionsRepository diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt index 3a3e611de96a..ec935fe23d39 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt @@ -34,16 +34,36 @@ import kotlinx.coroutines.flow.map * This interactor processes information from our data layer into information that the UI layer can * use. */ -@SysUISingleton -class WifiInteractor @Inject constructor( - connectivityRepository: ConnectivityRepository, - wifiRepository: WifiRepository, -) { +interface WifiInteractor { /** * The SSID (service set identifier) of the wifi network. Null if we don't have a network, or * have a network but no valid SSID. */ - val ssid: Flow<String?> = wifiRepository.wifiNetwork.map { info -> + val ssid: Flow<String?> + + /** Our current enabled status. */ + val isEnabled: Flow<Boolean> + + /** Our current default status. */ + val isDefault: Flow<Boolean> + + /** Our current wifi network. See [WifiNetworkModel]. */ + val wifiNetwork: Flow<WifiNetworkModel> + + /** Our current wifi activity. See [WifiActivityModel]. */ + val activity: StateFlow<WifiActivityModel> + + /** True if we're configured to force-hide the wifi icon and false otherwise. */ + val isForceHidden: Flow<Boolean> +} + +@SysUISingleton +class WifiInteractorImpl @Inject constructor( + connectivityRepository: ConnectivityRepository, + wifiRepository: WifiRepository, +) : WifiInteractor { + + override val ssid: Flow<String?> = wifiRepository.wifiNetwork.map { info -> when (info) { is WifiNetworkModel.Inactive -> null is WifiNetworkModel.CarrierMerged -> null @@ -56,20 +76,15 @@ class WifiInteractor @Inject constructor( } } - /** Our current enabled status. */ - val isEnabled: Flow<Boolean> = wifiRepository.isWifiEnabled + override val isEnabled: Flow<Boolean> = wifiRepository.isWifiEnabled - /** Our current default status. */ - val isDefault: Flow<Boolean> = wifiRepository.isWifiDefault + override val isDefault: Flow<Boolean> = wifiRepository.isWifiDefault - /** Our current wifi network. See [WifiNetworkModel]. */ - val wifiNetwork: Flow<WifiNetworkModel> = wifiRepository.wifiNetwork + override val wifiNetwork: Flow<WifiNetworkModel> = wifiRepository.wifiNetwork - /** Our current wifi activity. See [WifiActivityModel]. */ - val activity: StateFlow<WifiActivityModel> = wifiRepository.wifiActivity + override val activity: StateFlow<WifiActivityModel> = wifiRepository.wifiActivity - /** True if we're configured to force-hide the wifi icon and false otherwise. */ - val isForceHidden: Flow<Boolean> = connectivityRepository.forceHiddenSlots.map { + override val isForceHidden: Flow<Boolean> = connectivityRepository.forceHiddenSlots.map { it.contains(ConnectivitySlot.WIFI) } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelImplTest.kt index 76016a121e68..5a6bb301743a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelImplTest.kt @@ -38,9 +38,9 @@ import org.mockito.MockitoAnnotations @SmallTest @OptIn(ExperimentalCoroutinesApi::class) @Suppress("EXPERIMENTAL_IS_NOT_ENABLED") -class AirplaneModeViewModelTest : SysuiTestCase() { +class AirplaneModeViewModelImplTest : SysuiTestCase() { - private lateinit var underTest: AirplaneModeViewModel + private lateinit var underTest: AirplaneModeViewModelImpl @Mock private lateinit var logger: ConnectivityPipelineLogger private lateinit var airplaneModeRepository: FakeAirplaneModeRepository @@ -57,7 +57,7 @@ class AirplaneModeViewModelTest : SysuiTestCase() { scope = CoroutineScope(IMMEDIATE) underTest = - AirplaneModeViewModel( + AirplaneModeViewModelImpl( interactor, logger, scope, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt index 71b8bab87d19..b38497a7bbdd 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt @@ -35,8 +35,9 @@ import org.junit.Before import org.junit.Test @OptIn(ExperimentalCoroutinesApi::class) +@Suppress("EXPERIMENTAL_IS_NOT_ENABLED") @SmallTest -class WifiInteractorTest : SysuiTestCase() { +class WifiInteractorImplTest : SysuiTestCase() { private lateinit var underTest: WifiInteractor @@ -47,7 +48,7 @@ class WifiInteractorTest : SysuiTestCase() { fun setUp() { connectivityRepository = FakeConnectivityRepository() wifiRepository = FakeWifiRepository() - underTest = WifiInteractor(connectivityRepository, wifiRepository) + underTest = WifiInteractorImpl(connectivityRepository, wifiRepository) } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt index 37457b308597..5c16e1295b65 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt @@ -32,12 +32,14 @@ import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel +import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor +import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractorImpl import com.android.systemui.statusbar.pipeline.wifi.shared.WifiConstants import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.WifiViewModel @@ -86,9 +88,9 @@ class ModernStatusBarWifiViewTest : SysuiTestCase() { connectivityRepository = FakeConnectivityRepository() wifiRepository = FakeWifiRepository() wifiRepository.setIsWifiEnabled(true) - interactor = WifiInteractor(connectivityRepository, wifiRepository) + interactor = WifiInteractorImpl(connectivityRepository, wifiRepository) scope = CoroutineScope(Dispatchers.Unconfined) - airplaneModeViewModel = AirplaneModeViewModel( + airplaneModeViewModel = AirplaneModeViewModelImpl( AirplaneModeInteractor( airplaneModeRepository, connectivityRepository, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelIconParameterizedTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelIconParameterizedTest.kt index a1afcd71e3c3..3001b8162185 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelIconParameterizedTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelIconParameterizedTest.kt @@ -30,6 +30,7 @@ import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel +import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot @@ -37,6 +38,7 @@ import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnec import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor +import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractorImpl import com.android.systemui.statusbar.pipeline.wifi.shared.WifiConstants import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.WifiViewModel.Companion.NO_INTERNET import com.google.common.truth.Truth.assertThat @@ -81,10 +83,10 @@ internal class WifiViewModelIconParameterizedTest(private val testCase: TestCase connectivityRepository = FakeConnectivityRepository() wifiRepository = FakeWifiRepository() wifiRepository.setIsWifiEnabled(true) - interactor = WifiInteractor(connectivityRepository, wifiRepository) + interactor = WifiInteractorImpl(connectivityRepository, wifiRepository) scope = CoroutineScope(IMMEDIATE) airplaneModeViewModel = - AirplaneModeViewModel( + AirplaneModeViewModelImpl( AirplaneModeInteractor( airplaneModeRepository, connectivityRepository, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt index 7d2c56098584..6a6b2a801ab0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt @@ -23,6 +23,7 @@ import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModel +import com.android.systemui.statusbar.pipeline.airplane.ui.viewmodel.AirplaneModeViewModelImpl import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot @@ -30,6 +31,7 @@ import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnec import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor +import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractorImpl import com.android.systemui.statusbar.pipeline.wifi.shared.WifiConstants import com.android.systemui.statusbar.pipeline.wifi.shared.model.WifiActivityModel import com.google.common.truth.Truth.assertThat @@ -73,9 +75,9 @@ class WifiViewModelTest : SysuiTestCase() { connectivityRepository = FakeConnectivityRepository() wifiRepository = FakeWifiRepository() wifiRepository.setIsWifiEnabled(true) - interactor = WifiInteractor(connectivityRepository, wifiRepository) + interactor = WifiInteractorImpl(connectivityRepository, wifiRepository) scope = CoroutineScope(IMMEDIATE) - airplaneModeViewModel = AirplaneModeViewModel( + airplaneModeViewModel = AirplaneModeViewModelImpl( AirplaneModeInteractor( airplaneModeRepository, connectivityRepository, |