Merge "[SB Refactor] Make some wifi pipeline classes into interfaces." into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1322828e59
@@ -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
|
||||
|
||||
@@ -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 ->
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
@@ -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
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user