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

Commit 8c0b1ef2 authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "Send initial status for wifiStateFlow" into main

parents a4e7f063 d830acf6
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -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 {
+18 −8
Original line number Diff line number Diff line
@@ -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 {
    @Test
    fun wifiStateFlow_enabled() = runBlocking {
        val wifiStateChangedIntent =
            Intent().apply {
                putExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_ENABLED)
    })
            }
        val repository = WifiRepository(context, flowOf(wifiStateChangedIntent))

    private val repository = WifiRepository(context, mockWifiStateChangedActionFlow)
        val wifiState = repository.wifiStateFlow().lastWithTimeoutOrNull()

        assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_ENABLED)
    }

    @Test
    fun wifiStateFlow() = runBlocking {
        val wifiState = repository.wifiStateFlow().firstWithTimeoutOrNull()
    fun wifiStateFlow_unknown() = runBlocking {
        val repository = WifiRepository(context, emptyFlow())

        assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_ENABLED)
        val wifiState = repository.wifiStateFlow().lastWithTimeoutOrNull()

        assertThat(wifiState).isEqualTo(WifiManager.WIFI_STATE_UNKNOWN)
    }
}