InternetPreferenceController V2 (5/n)

Support ethernet.

Bug: 339884322
Flag: com.android.settings.flags.internet_preference_controller_v2
Test: manual - on Internet
Test: unit test
Change-Id: I73fc9334379daa979f736fc9ff31c3d576a3381b
This commit is contained in:
Chaohui Wang
2024-06-12 18:04:18 +08:00
parent 0d758dfdb9
commit c5cc30f0c3
2 changed files with 33 additions and 0 deletions

View File

@@ -33,6 +33,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.conflate
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
@@ -71,6 +72,7 @@ class InternetPreferenceRepository(
when (transportType) {
NetworkCapabilities.TRANSPORT_WIFI -> return wifiDisplayInfoFlow()
NetworkCapabilities.TRANSPORT_CELLULAR -> return cellularDisplayInfoFlow()
NetworkCapabilities.TRANSPORT_ETHERNET -> return ethernetDisplayInfoFlow()
}
}
}
@@ -93,6 +95,14 @@ class InternetPreferenceRepository(
)
}
private fun ethernetDisplayInfoFlow() =
flowOf(
DisplayInfo(
summary = context.getString(R.string.to_switch_networks_disconnect_ethernet),
iconResId = R.drawable.ic_settings_ethernet,
)
)
private fun defaultDisplayInfoFlow(): Flow<DisplayInfo> =
combine(
airplaneModeOnFlow,

View File

@@ -105,6 +105,29 @@ class InternetPreferenceRepositoryTest {
)
}
@Test
fun displayInfoFlow_ethernet() = runBlocking {
val wifiNetworkCapabilities =
NetworkCapabilities.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
.build()
mockConnectivityRepository.stub {
on { networkCapabilitiesFlow() } doReturn flowOf(wifiNetworkCapabilities)
}
val displayInfo = repository.displayInfoFlow().firstWithTimeoutOrNull()
assertThat(displayInfo)
.isEqualTo(
InternetPreferenceRepository.DisplayInfo(
summary = context.getString(R.string.to_switch_networks_disconnect_ethernet),
iconResId = R.drawable.ic_settings_ethernet,
)
)
}
@Test
fun displayInfoFlow_airplaneModeOnAndWifiOn() = runBlocking {
mockConnectivityRepository.stub {