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

Commit a3462cec authored by Caitlin Shkuratov's avatar Caitlin Shkuratov
Browse files

[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
parent 41125ee8
Loading
Loading
Loading
Loading
+14 −7
Original line number Original line Diff line number Diff line
@@ -20,16 +20,21 @@ import android.telephony.TelephonyManager.DATA_CONNECTED
import android.telephony.TelephonyManager.DATA_CONNECTING
import android.telephony.TelephonyManager.DATA_CONNECTING
import android.telephony.TelephonyManager.DATA_DISCONNECTED
import android.telephony.TelephonyManager.DATA_DISCONNECTED
import android.telephony.TelephonyManager.DATA_DISCONNECTING
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.DATA_UNKNOWN
import android.telephony.TelephonyManager.DataState
import android.telephony.TelephonyManager.DataState


/** Internal enum representation of the telephony data connection states */
/** Internal enum representation of the telephony data connection states */
enum class DataConnectionState(@DataState val dataState: Int) {
enum class DataConnectionState {
    Connected(DATA_CONNECTED),
    Connected,
    Connecting(DATA_CONNECTING),
    Connecting,
    Disconnected(DATA_DISCONNECTED),
    Disconnected,
    Disconnecting(DATA_DISCONNECTING),
    Disconnecting,
    Unknown(DATA_UNKNOWN),
    Suspended,
    HandoverInProgress,
    Unknown,
    Invalid,
}
}


fun @receiver:DataState Int.toDataConnectionType(): DataConnectionState =
fun @receiver:DataState Int.toDataConnectionType(): DataConnectionState =
@@ -38,6 +43,8 @@ fun @receiver:DataState Int.toDataConnectionType(): DataConnectionState =
        DATA_CONNECTING -> DataConnectionState.Connecting
        DATA_CONNECTING -> DataConnectionState.Connecting
        DATA_DISCONNECTED -> DataConnectionState.Disconnected
        DATA_DISCONNECTED -> DataConnectionState.Disconnected
        DATA_DISCONNECTING -> DataConnectionState.Disconnecting
        DATA_DISCONNECTING -> DataConnectionState.Disconnecting
        DATA_SUSPENDED -> DataConnectionState.Suspended
        DATA_HANDOVER_IN_PROGRESS -> DataConnectionState.HandoverInProgress
        DATA_UNKNOWN -> DataConnectionState.Unknown
        DATA_UNKNOWN -> DataConnectionState.Unknown
        else -> throw IllegalArgumentException("unknown data state received $this")
        else -> DataConnectionState.Invalid
    }
    }
+2 −2
Original line number Original line Diff line number Diff line
@@ -94,7 +94,7 @@ data class MobileConnectionModel(
) : Diffable<MobileConnectionModel> {
) : Diffable<MobileConnectionModel> {
    override fun logDiffs(prevVal: MobileConnectionModel, row: TableRowLogger) {
    override fun logDiffs(prevVal: MobileConnectionModel, row: TableRowLogger) {
        if (prevVal.dataConnectionState != dataConnectionState) {
        if (prevVal.dataConnectionState != dataConnectionState) {
            row.logChange(COL_CONNECTION_STATE, dataConnectionState.toString())
            row.logChange(COL_CONNECTION_STATE, dataConnectionState.name)
        }
        }


        if (prevVal.isEmergencyOnly != isEmergencyOnly) {
        if (prevVal.isEmergencyOnly != isEmergencyOnly) {
@@ -139,7 +139,7 @@ data class MobileConnectionModel(
    }
    }


    override fun logFull(row: TableRowLogger) {
    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_EMERGENCY, isEmergencyOnly)
        row.logChange(COL_ROAMING, isRoaming)
        row.logChange(COL_ROAMING, isRoaming)
        row.logChange(COL_OPERATOR, operatorAlphaShort)
        row.logChange(COL_OPERATOR, operatorAlphaShort)
+48 −0
Original line number Original line Diff line number Diff line
@@ -41,6 +41,8 @@ import android.telephony.TelephonyManager.DATA_CONNECTED
import android.telephony.TelephonyManager.DATA_CONNECTING
import android.telephony.TelephonyManager.DATA_CONNECTING
import android.telephony.TelephonyManager.DATA_DISCONNECTED
import android.telephony.TelephonyManager.DATA_DISCONNECTED
import android.telephony.TelephonyManager.DATA_DISCONNECTING
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.DATA_UNKNOWN
import android.telephony.TelephonyManager.ERI_OFF
import android.telephony.TelephonyManager.ERI_OFF
import android.telephony.TelephonyManager.ERI_ON
import android.telephony.TelephonyManager.ERI_ON
@@ -254,6 +256,37 @@ class MobileConnectionRepositoryTest : SysuiTestCase() {
            job.cancel()
            job.cancel()
        }
        }


    @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
    @Test
    fun testFlowForSubId_dataConnectionState_unknown() =
    fun testFlowForSubId_dataConnectionState_unknown() =
        runBlocking(IMMEDIATE) {
        runBlocking(IMMEDIATE) {
@@ -269,6 +302,21 @@ class MobileConnectionRepositoryTest : SysuiTestCase() {
            job.cancel()
            job.cancel()
        }
        }


    @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
    @Test
    fun testFlowForSubId_dataActivity() =
    fun testFlowForSubId_dataActivity() =
        runBlocking(IMMEDIATE) {
        runBlocking(IMMEDIATE) {