Merge changes Ib0a75bcb,I0169622c into udc-dev
* changes: [Status bar] Expose a #isWifiConnected API on WifiRepository. [SB Refactor] Move WifiRepositoryImplTest to TestScope.
This commit is contained in:
committed by
Android (Google) Code Review
commit
1ee0fb9a5f
@@ -33,6 +33,15 @@ interface WifiRepository {
|
||||
|
||||
/** Observable for the current wifi network activity. */
|
||||
val wifiActivity: StateFlow<DataActivityModel>
|
||||
|
||||
/**
|
||||
* Returns true if the device is currently connected to a wifi network with a valid SSID and
|
||||
* false otherwise.
|
||||
*/
|
||||
fun isWifiConnectedWithValidSsid(): Boolean {
|
||||
val currentNetwork = wifiNetwork.value
|
||||
return currentNetwork is WifiNetworkModel.Active && currentNetwork.hasValidSsid()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.systemui.statusbar.pipeline.wifi.domain.interactor
|
||||
|
||||
import android.net.wifi.WifiManager
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.statusbar.pipeline.shared.data.model.ConnectivitySlot
|
||||
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
|
||||
@@ -76,7 +75,7 @@ constructor(
|
||||
when {
|
||||
info.isPasspointAccessPoint || info.isOnlineSignUpForPasspointAccessPoint ->
|
||||
info.passpointProviderFriendlyName
|
||||
info.ssid != WifiManager.UNKNOWN_SSID -> info.ssid
|
||||
info.hasValidSsid() -> info.ssid
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.statusbar.pipeline.wifi.shared.model
|
||||
|
||||
import android.net.wifi.WifiManager.UNKNOWN_SSID
|
||||
import android.telephony.SubscriptionManager
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import com.android.systemui.log.table.Diffable
|
||||
@@ -223,6 +224,11 @@ sealed class WifiNetworkModel : Diffable<WifiNetworkModel> {
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns true if this network has a valid SSID and false otherwise. */
|
||||
fun hasValidSsid(): Boolean {
|
||||
return ssid != null && ssid != UNKNOWN_SSID
|
||||
}
|
||||
|
||||
override fun logDiffs(prevVal: WifiNetworkModel, row: TableRowLogger) {
|
||||
if (prevVal !is Active) {
|
||||
logFull(row)
|
||||
|
||||
@@ -29,6 +29,7 @@ import android.net.vcn.VcnTransportInfo
|
||||
import android.net.wifi.WifiInfo
|
||||
import android.net.wifi.WifiManager
|
||||
import android.net.wifi.WifiManager.TrafficStateCallback
|
||||
import android.net.wifi.WifiManager.UNKNOWN_SSID
|
||||
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.SysuiTestCase
|
||||
@@ -49,16 +50,14 @@ import com.android.systemui.util.mockito.nullable
|
||||
import com.android.systemui.util.time.FakeSystemClock
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import java.util.concurrent.Executor
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.cancel
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.junit.After
|
||||
import kotlinx.coroutines.test.TestScope
|
||||
import kotlinx.coroutines.test.UnconfinedTestDispatcher
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.ArgumentMatchers.anyInt
|
||||
@@ -80,9 +79,10 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
@Mock private lateinit var connectivityManager: ConnectivityManager
|
||||
@Mock private lateinit var wifiManager: WifiManager
|
||||
private lateinit var executor: Executor
|
||||
private lateinit var scope: CoroutineScope
|
||||
private lateinit var connectivityRepository: ConnectivityRepository
|
||||
|
||||
private val testScope = TestScope(UnconfinedTestDispatcher())
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
@@ -96,7 +96,6 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
)
|
||||
.thenReturn(flowOf(Unit))
|
||||
executor = FakeExecutor(FakeSystemClock())
|
||||
scope = CoroutineScope(IMMEDIATE)
|
||||
|
||||
connectivityRepository =
|
||||
ConnectivityRepositoryImpl(
|
||||
@@ -105,21 +104,16 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
context,
|
||||
mock(),
|
||||
mock(),
|
||||
scope,
|
||||
testScope.backgroundScope,
|
||||
mock(),
|
||||
)
|
||||
|
||||
underTest = createRepo()
|
||||
}
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
scope.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isWifiEnabled_initiallyGetsWifiManagerValue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
whenever(wifiManager.isWifiEnabled).thenReturn(true)
|
||||
|
||||
underTest = createRepo()
|
||||
@@ -129,7 +123,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiEnabled_networkCapabilitiesChanged_valueUpdated() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
// We need to call launch on the flows so that they start updating
|
||||
val networkJob = underTest.wifiNetwork.launchIn(this)
|
||||
val enabledJob = underTest.isWifiEnabled.launchIn(this)
|
||||
@@ -152,7 +146,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiEnabled_networkLost_valueUpdated() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
// We need to call launch on the flows so that they start updating
|
||||
val networkJob = underTest.wifiNetwork.launchIn(this)
|
||||
val enabledJob = underTest.isWifiEnabled.launchIn(this)
|
||||
@@ -173,7 +167,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiEnabled_intentsReceived_valueUpdated() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val intentFlow = MutableSharedFlow<Unit>()
|
||||
whenever(
|
||||
broadcastDispatcher.broadcastFlow(
|
||||
@@ -203,7 +197,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiEnabled_bothIntentAndNetworkUpdates_valueAlwaysUpdated() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val intentFlow = MutableSharedFlow<Unit>()
|
||||
whenever(
|
||||
broadcastDispatcher.broadcastFlow(
|
||||
@@ -242,7 +236,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_initiallyGetsDefault() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
assertThat(underTest.isWifiDefault.value).isFalse()
|
||||
@@ -252,7 +246,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_wifiNetwork_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val wifiInfo = mock<WifiInfo>().apply { whenever(this.ssid).thenReturn(SSID) }
|
||||
@@ -268,7 +262,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
/** Regression test for b/266628069. */
|
||||
@Test
|
||||
fun isWifiDefault_transportInfoIsNotWifi_andNoWifiTransport_false() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val transportInfo =
|
||||
@@ -294,7 +288,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
/** Regression test for b/266628069. */
|
||||
@Test
|
||||
fun isWifiDefault_transportInfoIsNotWifi_butHasWifiTransport_true() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val transportInfo =
|
||||
@@ -319,7 +313,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_carrierMergedViaCellular_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val carrierMergedInfo =
|
||||
@@ -341,7 +335,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_carrierMergedViaCellular_withVcnTransport_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val capabilities =
|
||||
@@ -360,7 +354,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_carrierMergedViaWifi_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val carrierMergedInfo =
|
||||
@@ -382,7 +376,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_carrierMergedViaWifi_withVcnTransport_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val capabilities =
|
||||
@@ -401,7 +395,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_cellularAndWifiTransports_usesCellular_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val capabilities =
|
||||
@@ -420,7 +414,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_cellularNotVcnNetwork_isFalse() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val capabilities =
|
||||
@@ -438,7 +432,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_isCarrierMergedViaUnderlyingWifi_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val underlyingNetwork = mock<Network>()
|
||||
@@ -473,7 +467,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_isCarrierMergedViaUnderlyingCellular_isTrue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
val underlyingCarrierMergedNetwork = mock<Network>()
|
||||
@@ -507,7 +501,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun isWifiDefault_wifiNetworkLost_isFalse() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
val job = underTest.isWifiDefault.launchIn(this)
|
||||
|
||||
// First, add a network
|
||||
@@ -526,7 +520,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_initiallyGetsDefault() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -537,7 +531,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_primaryWifiNetworkAdded_flowHasNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -561,7 +555,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_isCarrierMerged_flowHasCarrierMerged() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -581,7 +575,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_isCarrierMergedViaUnderlyingWifi_flowHasCarrierMerged() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -618,7 +612,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_isCarrierMergedViaUnderlyingCellular_flowHasCarrierMerged() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -656,7 +650,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_carrierMergedButInvalidSubId_flowHasInvalid() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -680,7 +674,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_isCarrierMerged_getsCorrectValues() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -715,7 +709,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_notValidated_networkNotValidated() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -732,7 +726,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_validated_networkValidated() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -749,7 +743,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_nonPrimaryWifiNetworkAdded_flowHasNoNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -770,7 +764,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
/** Regression test for b/266628069. */
|
||||
@Test
|
||||
fun wifiNetwork_transportInfoIsNotWifi_flowHasNoNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -789,7 +783,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_cellularVcnNetworkAdded_flowHasNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -811,7 +805,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_nonPrimaryCellularVcnNetworkAdded_flowHasNoNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -835,7 +829,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_cellularNotVcnNetworkAdded_flowHasNoNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -854,7 +848,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_cellularAndWifiTransports_usesCellular() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -877,7 +871,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_newPrimaryWifiNetwork_flowHasNewNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -910,7 +904,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_newNonPrimaryWifiNetwork_flowHasOldNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -943,7 +937,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_newNetworkCapabilities_flowHasNewData() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -986,7 +980,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_noCurrentNetwork_networkLost_flowHasNoNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -1001,7 +995,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_currentNetworkLost_flowHasNoNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -1020,7 +1014,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_unknownNetworkLost_flowHasPreviousNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -1043,7 +1037,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiNetwork_notCurrentNetworkLost_flowHasCurrentNetwork() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: WifiNetworkModel? = null
|
||||
val job = underTest.wifiNetwork.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -1069,7 +1063,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
/** Regression test for b/244173280. */
|
||||
@Test
|
||||
fun wifiNetwork_multipleSubscribers_newSubscribersGetCurrentValue() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest1: WifiNetworkModel? = null
|
||||
val job1 = underTest.wifiNetwork.onEach { latest1 = it }.launchIn(this)
|
||||
|
||||
@@ -1095,9 +1089,152 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
job2.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isWifiConnectedWithValidSsid_inactiveNetwork_false() =
|
||||
testScope.runTest {
|
||||
val job = underTest.wifiNetwork.launchIn(this)
|
||||
|
||||
val wifiInfo =
|
||||
mock<WifiInfo>().apply {
|
||||
whenever(this.ssid).thenReturn(SSID)
|
||||
// A non-primary network is inactive
|
||||
whenever(this.isPrimary).thenReturn(false)
|
||||
}
|
||||
|
||||
getNetworkCallback()
|
||||
.onCapabilitiesChanged(NETWORK, createWifiNetworkCapabilities(wifiInfo))
|
||||
|
||||
assertThat(underTest.isWifiConnectedWithValidSsid()).isFalse()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isWifiConnectedWithValidSsid_carrierMergedNetwork_false() =
|
||||
testScope.runTest {
|
||||
val job = underTest.wifiNetwork.launchIn(this)
|
||||
|
||||
val wifiInfo =
|
||||
mock<WifiInfo>().apply {
|
||||
whenever(this.isPrimary).thenReturn(true)
|
||||
whenever(this.isCarrierMerged).thenReturn(true)
|
||||
}
|
||||
|
||||
getNetworkCallback()
|
||||
.onCapabilitiesChanged(NETWORK, createWifiNetworkCapabilities(wifiInfo))
|
||||
|
||||
assertThat(underTest.isWifiConnectedWithValidSsid()).isFalse()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isWifiConnectedWithValidSsid_invalidNetwork_false() =
|
||||
testScope.runTest {
|
||||
val job = underTest.wifiNetwork.launchIn(this)
|
||||
|
||||
val wifiInfo =
|
||||
mock<WifiInfo>().apply {
|
||||
whenever(this.isPrimary).thenReturn(true)
|
||||
whenever(this.isCarrierMerged).thenReturn(true)
|
||||
whenever(this.subscriptionId).thenReturn(INVALID_SUBSCRIPTION_ID)
|
||||
}
|
||||
|
||||
getNetworkCallback()
|
||||
.onCapabilitiesChanged(
|
||||
NETWORK,
|
||||
createWifiNetworkCapabilities(wifiInfo),
|
||||
)
|
||||
|
||||
assertThat(underTest.isWifiConnectedWithValidSsid()).isFalse()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isWifiConnectedWithValidSsid_activeNetwork_nullSsid_false() =
|
||||
testScope.runTest {
|
||||
val job = underTest.wifiNetwork.launchIn(this)
|
||||
|
||||
val wifiInfo =
|
||||
mock<WifiInfo>().apply {
|
||||
whenever(this.isPrimary).thenReturn(true)
|
||||
whenever(this.ssid).thenReturn(null)
|
||||
}
|
||||
|
||||
getNetworkCallback()
|
||||
.onCapabilitiesChanged(NETWORK, createWifiNetworkCapabilities(wifiInfo))
|
||||
|
||||
assertThat(underTest.isWifiConnectedWithValidSsid()).isFalse()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isWifiConnectedWithValidSsid_activeNetwork_unknownSsid_false() =
|
||||
testScope.runTest {
|
||||
val job = underTest.wifiNetwork.launchIn(this)
|
||||
|
||||
val wifiInfo =
|
||||
mock<WifiInfo>().apply {
|
||||
whenever(this.isPrimary).thenReturn(true)
|
||||
whenever(this.ssid).thenReturn(UNKNOWN_SSID)
|
||||
}
|
||||
|
||||
getNetworkCallback()
|
||||
.onCapabilitiesChanged(NETWORK, createWifiNetworkCapabilities(wifiInfo))
|
||||
|
||||
assertThat(underTest.isWifiConnectedWithValidSsid()).isFalse()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isWifiConnectedWithValidSsid_activeNetwork_validSsid_true() =
|
||||
testScope.runTest {
|
||||
val job = underTest.wifiNetwork.launchIn(this)
|
||||
|
||||
val wifiInfo =
|
||||
mock<WifiInfo>().apply {
|
||||
whenever(this.isPrimary).thenReturn(true)
|
||||
whenever(this.ssid).thenReturn("FakeSsid")
|
||||
}
|
||||
|
||||
getNetworkCallback()
|
||||
.onCapabilitiesChanged(NETWORK, createWifiNetworkCapabilities(wifiInfo))
|
||||
|
||||
assertThat(underTest.isWifiConnectedWithValidSsid()).isTrue()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isWifiConnectedWithValidSsid_activeToInactive_trueToFalse() =
|
||||
testScope.runTest {
|
||||
val job = underTest.wifiNetwork.launchIn(this)
|
||||
|
||||
// Start with active
|
||||
val wifiInfo =
|
||||
mock<WifiInfo>().apply {
|
||||
whenever(this.isPrimary).thenReturn(true)
|
||||
whenever(this.ssid).thenReturn("FakeSsid")
|
||||
}
|
||||
getNetworkCallback()
|
||||
.onCapabilitiesChanged(NETWORK, createWifiNetworkCapabilities(wifiInfo))
|
||||
assertThat(underTest.isWifiConnectedWithValidSsid()).isTrue()
|
||||
|
||||
// WHEN the network is lost
|
||||
getNetworkCallback().onLost(NETWORK)
|
||||
|
||||
// THEN the isWifiConnected updates
|
||||
assertThat(underTest.isWifiConnectedWithValidSsid()).isFalse()
|
||||
|
||||
job.cancel()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun wifiActivity_callbackGivesNone_activityFlowHasNone() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: DataActivityModel? = null
|
||||
val job = underTest.wifiActivity.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -1111,7 +1248,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiActivity_callbackGivesIn_activityFlowHasIn() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: DataActivityModel? = null
|
||||
val job = underTest.wifiActivity.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -1125,7 +1262,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiActivity_callbackGivesOut_activityFlowHasOut() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: DataActivityModel? = null
|
||||
val job = underTest.wifiActivity.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -1139,7 +1276,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
|
||||
@Test
|
||||
fun wifiActivity_callbackGivesInout_activityFlowHasInAndOut() =
|
||||
runBlocking(IMMEDIATE) {
|
||||
testScope.runTest {
|
||||
var latest: DataActivityModel? = null
|
||||
val job = underTest.wifiActivity.onEach { latest = it }.launchIn(this)
|
||||
|
||||
@@ -1159,7 +1296,7 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
logger,
|
||||
tableLogger,
|
||||
executor,
|
||||
scope,
|
||||
testScope.backgroundScope,
|
||||
wifiManager,
|
||||
)
|
||||
}
|
||||
@@ -1204,5 +1341,3 @@ class WifiRepositoryImplTest : SysuiTestCase() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val IMMEDIATE = Dispatchers.Main.immediate
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.statusbar.pipeline.wifi.shared.model
|
||||
|
||||
import android.net.wifi.WifiManager.UNKNOWN_SSID
|
||||
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.SysuiTestCase
|
||||
@@ -50,6 +51,42 @@ class WifiNetworkModelTest : SysuiTestCase() {
|
||||
WifiNetworkModel.CarrierMerged(NETWORK_ID, INVALID_SUBSCRIPTION_ID, 1)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun active_hasValidSsid_nullSsid_false() {
|
||||
val network =
|
||||
WifiNetworkModel.Active(
|
||||
NETWORK_ID,
|
||||
level = MAX_VALID_LEVEL,
|
||||
ssid = null,
|
||||
)
|
||||
|
||||
assertThat(network.hasValidSsid()).isFalse()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun active_hasValidSsid_unknownSsid_false() {
|
||||
val network =
|
||||
WifiNetworkModel.Active(
|
||||
NETWORK_ID,
|
||||
level = MAX_VALID_LEVEL,
|
||||
ssid = UNKNOWN_SSID,
|
||||
)
|
||||
|
||||
assertThat(network.hasValidSsid()).isFalse()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun active_hasValidSsid_validSsid_true() {
|
||||
val network =
|
||||
WifiNetworkModel.Active(
|
||||
NETWORK_ID,
|
||||
level = MAX_VALID_LEVEL,
|
||||
ssid = "FakeSsid",
|
||||
)
|
||||
|
||||
assertThat(network.hasValidSsid()).isTrue()
|
||||
}
|
||||
|
||||
// Non-exhaustive logDiffs test -- just want to make sure the logging logic isn't totally broken
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user