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

Commit e2b92673 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[Sat] Use new TelephonyCallback instead of ServiceState" into main

parents a76e512b 7940c14e
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -102,6 +102,15 @@ constructor(
        )
    }

    fun logOnCarrierRoamingNtnModeChanged(active: Boolean) {
        buffer.log(
            TAG,
            LogLevel.INFO,
            { bool1 = active },
            { "onCarrierRoamingNtnModeChanged: $bool1" }
        )
    }

    fun logOnDisplayInfoChanged(displayInfo: TelephonyDisplayInfo, subId: Int) {
        buffer.log(
            TAG,
+39 −26
Original line number Diff line number Diff line
@@ -142,29 +142,23 @@ class MobileConnectionRepositoryImpl(
                val callback =
                    object :
                        TelephonyCallback(),
                        TelephonyCallback.ServiceStateListener,
                        TelephonyCallback.SignalStrengthsListener,
                        TelephonyCallback.DataConnectionStateListener,
                        TelephonyCallback.DataActivityListener,
                        TelephonyCallback.CarrierNetworkListener,
                        TelephonyCallback.CarrierRoamingNtnModeListener,
                        TelephonyCallback.DataActivityListener,
                        TelephonyCallback.DataConnectionStateListener,
                        TelephonyCallback.DataEnabledListener,
                        TelephonyCallback.DisplayInfoListener,
                        TelephonyCallback.DataEnabledListener {
                        override fun onServiceStateChanged(serviceState: ServiceState) {
                            logger.logOnServiceStateChanged(serviceState, subId)
                            trySend(CallbackEvent.OnServiceStateChanged(serviceState))
                        }
                        TelephonyCallback.ServiceStateListener,
                        TelephonyCallback.SignalStrengthsListener {

                        override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
                            logger.logOnSignalStrengthsChanged(signalStrength, subId)
                            trySend(CallbackEvent.OnSignalStrengthChanged(signalStrength))
                        override fun onCarrierNetworkChange(active: Boolean) {
                            logger.logOnCarrierNetworkChange(active, subId)
                            trySend(CallbackEvent.OnCarrierNetworkChange(active))
                        }

                        override fun onDataConnectionStateChanged(
                            dataState: Int,
                            networkType: Int
                        ) {
                            logger.logOnDataConnectionStateChanged(dataState, networkType, subId)
                            trySend(CallbackEvent.OnDataConnectionStateChanged(dataState))
                        override fun onCarrierRoamingNtnModeChanged(active: Boolean) {
                            logger.logOnCarrierRoamingNtnModeChanged(active)
                            trySend(CallbackEvent.OnCarrierRoamingNtnModeChanged(active))
                        }

                        override fun onDataActivity(direction: Int) {
@@ -172,9 +166,17 @@ class MobileConnectionRepositoryImpl(
                            trySend(CallbackEvent.OnDataActivity(direction))
                        }

                        override fun onCarrierNetworkChange(active: Boolean) {
                            logger.logOnCarrierNetworkChange(active, subId)
                            trySend(CallbackEvent.OnCarrierNetworkChange(active))
                        override fun onDataEnabledChanged(enabled: Boolean, reason: Int) {
                            logger.logOnDataEnabledChanged(enabled, subId)
                            trySend(CallbackEvent.OnDataEnabledChanged(enabled))
                        }

                        override fun onDataConnectionStateChanged(
                            dataState: Int,
                            networkType: Int
                        ) {
                            logger.logOnDataConnectionStateChanged(dataState, networkType, subId)
                            trySend(CallbackEvent.OnDataConnectionStateChanged(dataState))
                        }

                        override fun onDisplayInfoChanged(
@@ -184,9 +186,14 @@ class MobileConnectionRepositoryImpl(
                            trySend(CallbackEvent.OnDisplayInfoChanged(telephonyDisplayInfo))
                        }

                        override fun onDataEnabledChanged(enabled: Boolean, reason: Int) {
                            logger.logOnDataEnabledChanged(enabled, subId)
                            trySend(CallbackEvent.OnDataEnabledChanged(enabled))
                        override fun onServiceStateChanged(serviceState: ServiceState) {
                            logger.logOnServiceStateChanged(serviceState, subId)
                            trySend(CallbackEvent.OnServiceStateChanged(serviceState))
                        }

                        override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
                            logger.logOnSignalStrengthsChanged(signalStrength, subId)
                            trySend(CallbackEvent.OnSignalStrengthChanged(signalStrength))
                        }
                    }
                telephonyManager.registerTelephonyCallback(bgDispatcher.asExecutor(), callback)
@@ -229,8 +236,8 @@ class MobileConnectionRepositoryImpl(

    override val isNonTerrestrial =
        callbackEvents
            .mapNotNull { it.onServiceStateChanged }
            .map { it.serviceState.isUsingNonTerrestrialNetwork }
            .mapNotNull { it.onCarrierRoamingNtnModeChanged }
            .map { it.active }
            .stateIn(scope, SharingStarted.WhileSubscribed(), false)

    override val isGsm =
@@ -502,6 +509,8 @@ private fun Intent.carrierId(): Int =
sealed interface CallbackEvent {
    data class OnCarrierNetworkChange(val active: Boolean) : CallbackEvent

    data class OnCarrierRoamingNtnModeChanged(val active: Boolean) : CallbackEvent

    data class OnDataActivity(val direction: Int) : CallbackEvent

    data class OnDataConnectionStateChanged(val dataState: Int) : CallbackEvent
@@ -522,6 +531,7 @@ sealed interface CallbackEvent {
data class TelephonyCallbackState(
    val onDataActivity: CallbackEvent.OnDataActivity? = null,
    val onCarrierNetworkChange: CallbackEvent.OnCarrierNetworkChange? = null,
    val onCarrierRoamingNtnModeChanged: CallbackEvent.OnCarrierRoamingNtnModeChanged? = null,
    val onDataConnectionStateChanged: CallbackEvent.OnDataConnectionStateChanged? = null,
    val onDataEnabledChanged: CallbackEvent.OnDataEnabledChanged? = null,
    val onDisplayInfoChanged: CallbackEvent.OnDisplayInfoChanged? = null,
@@ -531,6 +541,9 @@ data class TelephonyCallbackState(
    fun applyEvent(event: CallbackEvent): TelephonyCallbackState {
        return when (event) {
            is CallbackEvent.OnCarrierNetworkChange -> copy(onCarrierNetworkChange = event)
            is CallbackEvent.OnCarrierRoamingNtnModeChanged -> {
                copy(onCarrierRoamingNtnModeChanged = event)
            }
            is CallbackEvent.OnDataActivity -> copy(onDataActivity = event)
            is CallbackEvent.OnDataConnectionStateChanged ->
                copy(onDataConnectionStateChanged = event)
+6 −12
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.telephony.ServiceState.STATE_OUT_OF_SERVICE
import android.telephony.SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX
import android.telephony.SubscriptionManager.PROFILE_CLASS_UNSET
import android.telephony.TelephonyCallback
import android.telephony.TelephonyCallback.CarrierRoamingNtnModeListener
import android.telephony.TelephonyCallback.DataActivityListener
import android.telephony.TelephonyCallback.DisplayInfoListener
import android.telephony.TelephonyCallback.ServiceStateListener
@@ -983,26 +984,19 @@ class MobileConnectionRepositoryTest : SysuiTestCase() {

    @Test
    @EnableFlags(com.android.internal.telephony.flags.Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
    fun isNonTerrestrial_updatesFromServiceState() =
    fun isNonTerrestrial_updatesFromCallback0() =
        testScope.runTest {
            val latest by collectLastValue(underTest.isNonTerrestrial)

            // Lambda makes it a little clearer what we are testing IMO
            val serviceStateCreator = { ntn: Boolean ->
                mock<ServiceState>().also {
                    whenever(it.isUsingNonTerrestrialNetwork).thenReturn(ntn)
                }
            }

            // Starts out false
            assertThat(latest).isFalse()

            getTelephonyCallbackForType<ServiceStateListener>()
                .onServiceStateChanged(serviceStateCreator(true))
            val callback = getTelephonyCallbackForType<CarrierRoamingNtnModeListener>()

            callback.onCarrierRoamingNtnModeChanged(true)
            assertThat(latest).isTrue()

            getTelephonyCallbackForType<ServiceStateListener>()
                .onServiceStateChanged(serviceStateCreator(false))
            callback.onCarrierRoamingNtnModeChanged(false)
            assertThat(latest).isFalse()
        }