Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 52d15b6c authored by Chaohui Wang's avatar Chaohui Wang
Browse files

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
parent c5cc30f0
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.network

import android.content.Context
import android.net.NetworkCapabilities
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager
import android.provider.Settings
import android.util.Log
@@ -68,6 +69,11 @@ class InternetPreferenceRepository(
            hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) &&
                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) {
                when (transportType) {
                    NetworkCapabilities.TRANSPORT_WIFI -> return wifiDisplayInfoFlow()
+32 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.network

import android.content.Context
import android.net.NetworkCapabilities
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -32,6 +33,7 @@ import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
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
    fun displayInfoFlow_cellular() = runBlocking {
        val wifiNetworkCapabilities =