Loading packages/SystemUI/ktfmt_includes.txt +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModel.kt +8 −4 Original line number Diff line number Diff line Loading @@ -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 -> Loading packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt +10 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import com.android.systemui.log.table.TableLogBuffer import com.android.systemui.log.table.TableLogBufferFactory 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 Loading @@ -33,6 +35,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 import dagger.Provides Loading @@ -42,12 +46,18 @@ abstract class StatusBarPipelineModule { @Binds 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 Loading packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt +31 −16 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) } } packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelTest.kt→packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelImplTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -57,7 +57,7 @@ class AirplaneModeViewModelTest : SysuiTestCase() { scope = CoroutineScope(IMMEDIATE) underTest = AirplaneModeViewModel( AirplaneModeViewModelImpl( interactor, logger, scope, Loading Loading
packages/SystemUI/ktfmt_includes.txt +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModel.kt +8 −4 Original line number Diff line number Diff line Loading @@ -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 -> Loading
packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt +10 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import com.android.systemui.log.table.TableLogBuffer import com.android.systemui.log.table.TableLogBufferFactory 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 Loading @@ -33,6 +35,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 import dagger.Provides Loading @@ -42,12 +46,18 @@ abstract class StatusBarPipelineModule { @Binds 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 Loading
packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt +31 −16 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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) } }
packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelTest.kt→packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/airplane/ui/viewmodel/AirplaneModeViewModelImplTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -57,7 +57,7 @@ class AirplaneModeViewModelTest : SysuiTestCase() { scope = CoroutineScope(IMMEDIATE) underTest = AirplaneModeViewModel( AirplaneModeViewModelImpl( interactor, logger, scope, Loading