diff options
| author | 2023-01-31 19:48:32 +0000 | |
|---|---|---|
| committer | 2023-01-31 19:48:32 +0000 | |
| commit | a3462cecdccc27c7dcbe5c3cd5d353105e4fd431 (patch) | |
| tree | 9be42b46b9c38d00d71f5aae48b46a1fbbbe97fd | |
| parent | 41125ee819b912c6ef6fba6f8aee8afcb19b96e0 (diff) | |
[SB Refactor] Support all possible data connection ints.
Fixes: 267230741
Bug: 238425913
Test: atest MobileConnectionRepositoryTest
Test: manual: dumped log and verified logging is still correct
Change-Id: I465ddb1bfc784c321816a4e6ae0cdfd45b2bb027
3 files changed, 64 insertions, 9 deletions
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 5479b92edd22..85729c12cd4c 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,16 +20,21 @@ 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_HANDOVER_IN_PROGRESS +import android.telephony.TelephonyManager.DATA_SUSPENDED import android.telephony.TelephonyManager.DATA_UNKNOWN import android.telephony.TelephonyManager.DataState /** Internal enum representation of the telephony data connection states */ -enum class DataConnectionState(@DataState val dataState: Int) { - Connected(DATA_CONNECTED), - Connecting(DATA_CONNECTING), - Disconnected(DATA_DISCONNECTED), - Disconnecting(DATA_DISCONNECTING), - Unknown(DATA_UNKNOWN), +enum class DataConnectionState { + Connected, + Connecting, + Disconnected, + Disconnecting, + Suspended, + HandoverInProgress, + Unknown, + Invalid, } fun @receiver:DataState Int.toDataConnectionType(): DataConnectionState = @@ -38,6 +43,8 @@ fun @receiver:DataState Int.toDataConnectionType(): DataConnectionState = DATA_CONNECTING -> DataConnectionState.Connecting DATA_DISCONNECTED -> DataConnectionState.Disconnected DATA_DISCONNECTING -> DataConnectionState.Disconnecting + DATA_SUSPENDED -> DataConnectionState.Suspended + DATA_HANDOVER_IN_PROGRESS -> DataConnectionState.HandoverInProgress DATA_UNKNOWN -> DataConnectionState.Unknown - else -> throw IllegalArgumentException("unknown data state received $this") + else -> DataConnectionState.Invalid } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/MobileConnectionModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/MobileConnectionModel.kt index 012b9ec09e7a..fdf5ffd44384 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/MobileConnectionModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/MobileConnectionModel.kt @@ -94,7 +94,7 @@ data class MobileConnectionModel( ) : Diffable<MobileConnectionModel> { override fun logDiffs(prevVal: MobileConnectionModel, row: TableRowLogger) { if (prevVal.dataConnectionState != dataConnectionState) { - row.logChange(COL_CONNECTION_STATE, dataConnectionState.toString()) + row.logChange(COL_CONNECTION_STATE, dataConnectionState.name) } if (prevVal.isEmergencyOnly != isEmergencyOnly) { @@ -139,7 +139,7 @@ data class MobileConnectionModel( } override fun logFull(row: TableRowLogger) { - row.logChange(COL_CONNECTION_STATE, dataConnectionState.toString()) + row.logChange(COL_CONNECTION_STATE, dataConnectionState.name) row.logChange(COL_EMERGENCY, isEmergencyOnly) row.logChange(COL_ROAMING, isRoaming) row.logChange(COL_OPERATOR, operatorAlphaShort) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt index d6b8c0dbc59d..314e250cc30e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt @@ -41,6 +41,8 @@ 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_HANDOVER_IN_PROGRESS +import android.telephony.TelephonyManager.DATA_SUSPENDED import android.telephony.TelephonyManager.DATA_UNKNOWN import android.telephony.TelephonyManager.ERI_OFF import android.telephony.TelephonyManager.ERI_ON @@ -255,6 +257,37 @@ class MobileConnectionRepositoryTest : SysuiTestCase() { } @Test + fun testFlowForSubId_dataConnectionState_suspended() = + runBlocking(IMMEDIATE) { + var latest: MobileConnectionModel? = null + val job = underTest.connectionInfo.onEach { latest = it }.launchIn(this) + + val callback = + getTelephonyCallbackForType<TelephonyCallback.DataConnectionStateListener>() + callback.onDataConnectionStateChanged(DATA_SUSPENDED, 200 /* unused */) + + assertThat(latest?.dataConnectionState).isEqualTo(DataConnectionState.Suspended) + + job.cancel() + } + + @Test + fun testFlowForSubId_dataConnectionState_handoverInProgress() = + runBlocking(IMMEDIATE) { + var latest: MobileConnectionModel? = null + val job = underTest.connectionInfo.onEach { latest = it }.launchIn(this) + + val callback = + getTelephonyCallbackForType<TelephonyCallback.DataConnectionStateListener>() + callback.onDataConnectionStateChanged(DATA_HANDOVER_IN_PROGRESS, 200 /* unused */) + + assertThat(latest?.dataConnectionState) + .isEqualTo(DataConnectionState.HandoverInProgress) + + job.cancel() + } + + @Test fun testFlowForSubId_dataConnectionState_unknown() = runBlocking(IMMEDIATE) { var latest: MobileConnectionModel? = null @@ -270,6 +303,21 @@ class MobileConnectionRepositoryTest : SysuiTestCase() { } @Test + fun testFlowForSubId_dataConnectionState_invalid() = + runBlocking(IMMEDIATE) { + var latest: MobileConnectionModel? = null + val job = underTest.connectionInfo.onEach { latest = it }.launchIn(this) + + val callback = + getTelephonyCallbackForType<TelephonyCallback.DataConnectionStateListener>() + callback.onDataConnectionStateChanged(45, 200 /* unused */) + + assertThat(latest?.dataConnectionState).isEqualTo(DataConnectionState.Invalid) + + job.cancel() + } + + @Test fun testFlowForSubId_dataActivity() = runBlocking(IMMEDIATE) { var latest: MobileConnectionModel? = null |