Send initial status for wifiStateFlow
To make sure this flow is never empty, use unknown as default. Fix: 383050153 Flag: EXEMPT bug fix Test: manual - on Network & internet Test: unit test Change-Id: Iaa421749ab917ebc651a95ccdf1a4ab1cb9ba112
This commit is contained in:
@@ -25,6 +25,7 @@ import com.android.settingslib.spaprivileged.framework.common.broadcastReceiverF
|
|||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
|
import kotlinx.coroutines.flow.onStart
|
||||||
|
|
||||||
class WifiRepository(
|
class WifiRepository(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@@ -32,10 +33,12 @@ class WifiRepository(
|
|||||||
context.broadcastReceiverFlow(IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)),
|
context.broadcastReceiverFlow(IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)),
|
||||||
) {
|
) {
|
||||||
|
|
||||||
fun wifiStateFlow() = wifiStateChangedActionFlow
|
fun wifiStateFlow(): Flow<Int> =
|
||||||
|
wifiStateChangedActionFlow
|
||||||
.map { intent ->
|
.map { intent ->
|
||||||
intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN)
|
intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN)
|
||||||
}
|
}
|
||||||
|
.onStart { emit(WifiManager.WIFI_STATE_UNKNOWN) }
|
||||||
.onEach { Log.d(TAG, "wifiStateFlow: $it") }
|
.onEach { Log.d(TAG, "wifiStateFlow: $it") }
|
||||||
|
|
||||||
private companion object {
|
private companion object {
|
||||||
|
@@ -21,8 +21,9 @@ import android.content.Intent
|
|||||||
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
|
||||||
import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull
|
import com.android.settingslib.spa.testutils.lastWithTimeoutOrNull
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import kotlinx.coroutines.flow.emptyFlow
|
||||||
import kotlinx.coroutines.flow.flowOf
|
import kotlinx.coroutines.flow.flowOf
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -33,16 +34,25 @@ class WifiRepositoryTest {
|
|||||||
|
|
||||||
private val context: Context = ApplicationProvider.getApplicationContext()
|
private val context: Context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
private val mockWifiStateChangedActionFlow = flowOf(Intent().apply {
|
|
||||||
putExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_ENABLED)
|
|
||||||
})
|
|
||||||
|
|
||||||
private val repository = WifiRepository(context, mockWifiStateChangedActionFlow)
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun wifiStateFlow() = runBlocking {
|
fun wifiStateFlow_enabled() = runBlocking {
|
||||||
val wifiState = repository.wifiStateFlow().firstWithTimeoutOrNull()
|
val wifiStateChangedIntent =
|
||||||
|
Intent().apply {
|
||||||
|
putExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_ENABLED)
|
||||||
|
}
|
||||||
|
val repository = WifiRepository(context, flowOf(wifiStateChangedIntent))
|
||||||
|
|
||||||
|
val wifiState = repository.wifiStateFlow().lastWithTimeoutOrNull()
|
||||||
|
|
||||||
assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_ENABLED)
|
assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_ENABLED)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun wifiStateFlow_unknown() = runBlocking {
|
||||||
|
val repository = WifiRepository(context, emptyFlow())
|
||||||
|
|
||||||
|
val wifiState = repository.wifiStateFlow().lastWithTimeoutOrNull()
|
||||||
|
|
||||||
|
assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_UNKNOWN)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user