InternetPreferenceController V2 (6/n)

Treat carrier merged Wi-Fi as cellular.

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

View File

@@ -18,6 +18,7 @@ package com.android.settings.network
import android.content.Context import android.content.Context
import android.net.NetworkCapabilities import android.net.NetworkCapabilities
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager import android.net.wifi.WifiManager
import android.provider.Settings import android.provider.Settings
import android.util.Log import android.util.Log
@@ -68,6 +69,11 @@ class InternetPreferenceRepository(
hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) &&
hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
) { ) {
val transportInfo = transportInfo
if (transportInfo is WifiInfo && transportInfo.isCarrierMerged) {
Log.i(TAG, "Detect a merged carrier Wi-Fi connected.")
return cellularDisplayInfoFlow()
}
for (transportType in transportTypes) { for (transportType in transportTypes) {
when (transportType) { when (transportType) {
NetworkCapabilities.TRANSPORT_WIFI -> return wifiDisplayInfoFlow() NetworkCapabilities.TRANSPORT_WIFI -> return wifiDisplayInfoFlow()

View File

@@ -18,6 +18,7 @@ package com.android.settings.network
import android.content.Context import android.content.Context
import android.net.NetworkCapabilities import android.net.NetworkCapabilities
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager import android.net.wifi.WifiManager
import androidx.test.core.app.ApplicationProvider import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -32,6 +33,7 @@ import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock import org.mockito.kotlin.mock
import org.mockito.kotlin.stub import org.mockito.kotlin.stub
@@ -81,6 +83,36 @@ class InternetPreferenceRepositoryTest {
) )
} }
@Test
fun displayInfoFlow_carrierMergedWifi_asCellular() = runBlocking {
val wifiInfo =
mock<WifiInfo> {
on { isCarrierMerged } doReturn true
on { makeCopy(any()) } doReturn mock
}
val wifiNetworkCapabilities =
NetworkCapabilities.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
.setTransportInfo(wifiInfo)
.build()
mockConnectivityRepository.stub {
on { networkCapabilitiesFlow() } doReturn flowOf(wifiNetworkCapabilities)
}
mockDataSubscriptionRepository.stub { on { dataSummaryFlow() } doReturn flowOf(SUMMARY) }
val displayInfo = repository.displayInfoFlow().firstWithTimeoutOrNull()
assertThat(displayInfo)
.isEqualTo(
InternetPreferenceRepository.DisplayInfo(
summary = SUMMARY,
iconResId = R.drawable.ic_network_cell,
)
)
}
@Test @Test
fun displayInfoFlow_cellular() = runBlocking { fun displayInfoFlow_cellular() = runBlocking {
val wifiNetworkCapabilities = val wifiNetworkCapabilities =