diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/DataConnectionState.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/DataConnectionState.kt index da87f7306e601..5479b92edd222 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/DataConnectionState.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/DataConnectionState.kt @@ -20,6 +20,7 @@ import android.telephony.TelephonyManager.DATA_CONNECTED import android.telephony.TelephonyManager.DATA_CONNECTING import android.telephony.TelephonyManager.DATA_DISCONNECTED import android.telephony.TelephonyManager.DATA_DISCONNECTING +import android.telephony.TelephonyManager.DATA_UNKNOWN import android.telephony.TelephonyManager.DataState /** Internal enum representation of the telephony data connection states */ @@ -28,6 +29,7 @@ enum class DataConnectionState(@DataState val dataState: Int) { Connecting(DATA_CONNECTING), Disconnected(DATA_DISCONNECTED), Disconnecting(DATA_DISCONNECTING), + Unknown(DATA_UNKNOWN), } fun @receiver:DataState Int.toDataConnectionType(): DataConnectionState = @@ -36,5 +38,6 @@ fun @receiver:DataState Int.toDataConnectionType(): DataConnectionState = DATA_CONNECTING -> DataConnectionState.Connecting DATA_DISCONNECTED -> DataConnectionState.Disconnected DATA_DISCONNECTING -> DataConnectionState.Disconnecting - else -> throw IllegalArgumentException("unknown data state received") + DATA_UNKNOWN -> DataConnectionState.Unknown + else -> throw IllegalArgumentException("unknown data state received $this") } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepositoryTest.kt index 5ce51bb62c78e..aa7ab0df2ea3d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepositoryTest.kt @@ -31,6 +31,7 @@ import android.telephony.TelephonyManager.DATA_CONNECTED import android.telephony.TelephonyManager.DATA_CONNECTING import android.telephony.TelephonyManager.DATA_DISCONNECTED import android.telephony.TelephonyManager.DATA_DISCONNECTING +import android.telephony.TelephonyManager.DATA_UNKNOWN import android.telephony.TelephonyManager.NETWORK_TYPE_LTE import android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN import androidx.test.filters.SmallTest @@ -220,6 +221,21 @@ class MobileConnectionRepositoryTest : SysuiTestCase() { job.cancel() } + @Test + fun testFlowForSubId_dataConnectionState_unknown() = + runBlocking(IMMEDIATE) { + var latest: MobileSubscriptionModel? = null + val job = underTest.subscriptionModelFlow.onEach { latest = it }.launchIn(this) + + val callback = + getTelephonyCallbackForType() + callback.onDataConnectionStateChanged(DATA_UNKNOWN, 200 /* unused */) + + assertThat(latest?.dataConnectionState).isEqualTo(DataConnectionState.Unknown) + + job.cancel() + } + @Test fun testFlowForSubId_dataActivity() = runBlocking(IMMEDIATE) {