Merge "Send initial status for wifiStateFlow" into main

This commit is contained in:
Chaohui Wang
2024-12-23 19:02:54 -08:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 14 deletions

View File

@@ -25,6 +25,7 @@ import com.android.settingslib.spaprivileged.framework.common.broadcastReceiverF
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.onStart
class WifiRepository(
private val context: Context,
@@ -32,10 +33,12 @@ class WifiRepository(
context.broadcastReceiverFlow(IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)),
) {
fun wifiStateFlow() = wifiStateChangedActionFlow
fun wifiStateFlow(): Flow<Int> =
wifiStateChangedActionFlow
.map { intent ->
intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN)
}
.onStart { emit(WifiManager.WIFI_STATE_UNKNOWN) }
.onEach { Log.d(TAG, "wifiStateFlow: $it") }
private companion object {

View File

@@ -21,8 +21,9 @@ import android.content.Intent
import android.net.wifi.WifiManager
import androidx.test.core.app.ApplicationProvider
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 kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking
import org.junit.Test
@@ -33,16 +34,25 @@ class WifiRepositoryTest {
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
fun wifiStateFlow() = runBlocking {
val wifiState = repository.wifiStateFlow().firstWithTimeoutOrNull()
fun wifiStateFlow_enabled() = runBlocking {
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)
}
@Test
fun wifiStateFlow_unknown() = runBlocking {
val repository = WifiRepository(context, emptyFlow())
val wifiState = repository.wifiStateFlow().lastWithTimeoutOrNull()
assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_UNKNOWN)
}
}