[Status bar] Expose a #isWifiConnected API on WifiRepository.
Bug: 275317488 Test: atest WifiRepositoryImplTest WifiInteractorImplTest WifiNetworkModelTest Change-Id: Ib0a75bcb3b5fc5d6935f58ae681bd436e7da2aa1
This commit is contained in:
@@ -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
|
||||
@@ -1088,6 +1089,149 @@ 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() =
|
||||
testScope.runTest {
|
||||
|
||||
@@ -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