Loading src/com/android/settings/network/telephony/CallStateRepository.kt +9 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.network.telephony import android.content.Context import android.telecom.TelecomManager import android.telephony.TelephonyCallback import android.telephony.TelephonyManager import android.util.Log Loading Loading @@ -66,6 +67,14 @@ class CallStateRepository( .onEach { Log.d(TAG, "isInCallFlow: $it") } .flowOn(Dispatchers.Default) fun isInEmergencyCallFlow(): Flow<Boolean> { val telecomManager = context.getSystemService(TelecomManager::class.java) return if (telecomManager == null) flowOf(false) else flowOf(telecomManager.isInEmergencyCall) } private companion object { private const val TAG = "CallStateRepository" } Loading src/com/android/settings/network/telephony/SubscriptionActivationRepository.kt +3 −2 Original line number Diff line number Diff line Loading @@ -37,9 +37,10 @@ class SubscriptionActivationRepository( ) { fun isActivationChangeableFlow(): Flow<Boolean> = combine( callStateRepository.isInCallFlow(), callStateRepository.isInEmergencyCallFlow(), satelliteRepository.getIsSessionStartedFlow() ) { isInCall, isSatelliteModemEnabled -> !isInCall && !isSatelliteModemEnabled ) { isInCall, isInEmergencyCallFlow, isSatelliteModemEnabled -> !isInCall && !isInEmergencyCallFlow && !isSatelliteModemEnabled } /** Loading tests/spa_unit/src/com/android/settings/network/telephony/CallStateRepositoryTest.kt +23 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.network.telephony import android.content.Context import android.telecom.TelecomManager import android.telephony.TelephonyCallback import android.telephony.TelephonyManager import androidx.test.core.app.ApplicationProvider Loading @@ -26,6 +27,7 @@ import com.android.settingslib.spa.testutils.toListWithTimeout import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.async import kotlinx.coroutines.delay import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.runBlocking import org.junit.Test Loading @@ -36,6 +38,7 @@ import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock import org.mockito.kotlin.spy import org.mockito.kotlin.stub import org.mockito.kotlin.whenever @RunWith(AndroidJUnit4::class) class CallStateRepositoryTest { Loading @@ -49,12 +52,15 @@ class CallStateRepositoryTest { } } private val mockTelecomManager = mock<TelecomManager>{} private val mockSubscriptionRepository = mock<SubscriptionRepository> { on { activeSubscriptionIdListFlow() } doReturn flowOf(listOf(SUB_ID)) } private val context: Context = spy(ApplicationProvider.getApplicationContext()) { on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager on { getSystemService(TelecomManager::class.java) } doReturn mockTelecomManager } private val repository = CallStateRepository(context, mockSubscriptionRepository) Loading Loading @@ -114,6 +120,23 @@ class CallStateRepositoryTest { .inOrder() } @Test fun isInEmergencyCall_inCall_returnTrue() = runBlocking { whenever(mockTelecomManager.isInEmergencyCall).thenReturn(true) val result = repository.isInEmergencyCallFlow().first() assertThat(result).isEqualTo(true) } @Test fun isInEmergencyCall_notInCall_returnFalse() = runBlocking { whenever(mockTelecomManager.isInEmergencyCall).thenReturn(false) val result = repository.isInEmergencyCallFlow().first() assertThat(result).isEqualTo(false) } private companion object { const val SUB_ID = 1 } Loading tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionActivationRepositoryTest.kt +18 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.settings.network.telephony import android.content.Context import android.content.pm.PackageManager import android.content.Intent import android.os.UserHandle import android.telephony.SubscriptionManager import android.telephony.TelephonyManager Loading Loading @@ -72,6 +71,7 @@ class SubscriptionActivationRepositoryTest { fun isActivationChangeableFlow_changeable() = runBlocking { mockCallStateRepository.stub { on { isInCallFlow() } doReturn flowOf(false) on { isInEmergencyCallFlow() } doReturn flowOf(false) } mockSatelliteRepository.stub { on { getIsSessionStartedFlow() } doReturn flowOf(false) Loading @@ -86,6 +86,7 @@ class SubscriptionActivationRepositoryTest { fun isActivationChangeableFlow_inCall_notChangeable() = runBlocking { mockCallStateRepository.stub { on { isInCallFlow() } doReturn flowOf(true) on { isInEmergencyCallFlow() } doReturn flowOf(false) } mockSatelliteRepository.stub { on { getIsSessionStartedFlow() } doReturn flowOf(false) Loading @@ -100,6 +101,7 @@ class SubscriptionActivationRepositoryTest { fun isActivationChangeableFlow_satelliteSessionStarted_notChangeable() = runBlocking { mockCallStateRepository.stub { on { isInCallFlow() } doReturn flowOf(false) on { isInEmergencyCallFlow() } doReturn flowOf(false) } mockSatelliteRepository.stub { on { getIsSessionStartedFlow() } doReturn flowOf(true) Loading @@ -110,6 +112,21 @@ class SubscriptionActivationRepositoryTest { assertThat(changeable).isFalse() } @Test fun isActivationChangeableFlow_inEmergencyCall_notChangeable() = runBlocking { mockCallStateRepository.stub { on { isInCallFlow() } doReturn flowOf(false) on { isInEmergencyCallFlow() } doReturn flowOf(true) } mockSatelliteRepository.stub { on { getIsSessionStartedFlow() } doReturn flowOf(false) } val changeable = repository.isActivationChangeableFlow().firstWithTimeoutOrNull() assertThat(changeable).isFalse() } @Test fun setActive_defaultSubId_doNothing() = runBlocking { repository.setActive(subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, active = true) Loading Loading
src/com/android/settings/network/telephony/CallStateRepository.kt +9 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.network.telephony import android.content.Context import android.telecom.TelecomManager import android.telephony.TelephonyCallback import android.telephony.TelephonyManager import android.util.Log Loading Loading @@ -66,6 +67,14 @@ class CallStateRepository( .onEach { Log.d(TAG, "isInCallFlow: $it") } .flowOn(Dispatchers.Default) fun isInEmergencyCallFlow(): Flow<Boolean> { val telecomManager = context.getSystemService(TelecomManager::class.java) return if (telecomManager == null) flowOf(false) else flowOf(telecomManager.isInEmergencyCall) } private companion object { private const val TAG = "CallStateRepository" } Loading
src/com/android/settings/network/telephony/SubscriptionActivationRepository.kt +3 −2 Original line number Diff line number Diff line Loading @@ -37,9 +37,10 @@ class SubscriptionActivationRepository( ) { fun isActivationChangeableFlow(): Flow<Boolean> = combine( callStateRepository.isInCallFlow(), callStateRepository.isInEmergencyCallFlow(), satelliteRepository.getIsSessionStartedFlow() ) { isInCall, isSatelliteModemEnabled -> !isInCall && !isSatelliteModemEnabled ) { isInCall, isInEmergencyCallFlow, isSatelliteModemEnabled -> !isInCall && !isInEmergencyCallFlow && !isSatelliteModemEnabled } /** Loading
tests/spa_unit/src/com/android/settings/network/telephony/CallStateRepositoryTest.kt +23 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.network.telephony import android.content.Context import android.telecom.TelecomManager import android.telephony.TelephonyCallback import android.telephony.TelephonyManager import androidx.test.core.app.ApplicationProvider Loading @@ -26,6 +27,7 @@ import com.android.settingslib.spa.testutils.toListWithTimeout import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.async import kotlinx.coroutines.delay import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.runBlocking import org.junit.Test Loading @@ -36,6 +38,7 @@ import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock import org.mockito.kotlin.spy import org.mockito.kotlin.stub import org.mockito.kotlin.whenever @RunWith(AndroidJUnit4::class) class CallStateRepositoryTest { Loading @@ -49,12 +52,15 @@ class CallStateRepositoryTest { } } private val mockTelecomManager = mock<TelecomManager>{} private val mockSubscriptionRepository = mock<SubscriptionRepository> { on { activeSubscriptionIdListFlow() } doReturn flowOf(listOf(SUB_ID)) } private val context: Context = spy(ApplicationProvider.getApplicationContext()) { on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager on { getSystemService(TelecomManager::class.java) } doReturn mockTelecomManager } private val repository = CallStateRepository(context, mockSubscriptionRepository) Loading Loading @@ -114,6 +120,23 @@ class CallStateRepositoryTest { .inOrder() } @Test fun isInEmergencyCall_inCall_returnTrue() = runBlocking { whenever(mockTelecomManager.isInEmergencyCall).thenReturn(true) val result = repository.isInEmergencyCallFlow().first() assertThat(result).isEqualTo(true) } @Test fun isInEmergencyCall_notInCall_returnFalse() = runBlocking { whenever(mockTelecomManager.isInEmergencyCall).thenReturn(false) val result = repository.isInEmergencyCallFlow().first() assertThat(result).isEqualTo(false) } private companion object { const val SUB_ID = 1 } Loading
tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionActivationRepositoryTest.kt +18 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.settings.network.telephony import android.content.Context import android.content.pm.PackageManager import android.content.Intent import android.os.UserHandle import android.telephony.SubscriptionManager import android.telephony.TelephonyManager Loading Loading @@ -72,6 +71,7 @@ class SubscriptionActivationRepositoryTest { fun isActivationChangeableFlow_changeable() = runBlocking { mockCallStateRepository.stub { on { isInCallFlow() } doReturn flowOf(false) on { isInEmergencyCallFlow() } doReturn flowOf(false) } mockSatelliteRepository.stub { on { getIsSessionStartedFlow() } doReturn flowOf(false) Loading @@ -86,6 +86,7 @@ class SubscriptionActivationRepositoryTest { fun isActivationChangeableFlow_inCall_notChangeable() = runBlocking { mockCallStateRepository.stub { on { isInCallFlow() } doReturn flowOf(true) on { isInEmergencyCallFlow() } doReturn flowOf(false) } mockSatelliteRepository.stub { on { getIsSessionStartedFlow() } doReturn flowOf(false) Loading @@ -100,6 +101,7 @@ class SubscriptionActivationRepositoryTest { fun isActivationChangeableFlow_satelliteSessionStarted_notChangeable() = runBlocking { mockCallStateRepository.stub { on { isInCallFlow() } doReturn flowOf(false) on { isInEmergencyCallFlow() } doReturn flowOf(false) } mockSatelliteRepository.stub { on { getIsSessionStartedFlow() } doReturn flowOf(true) Loading @@ -110,6 +112,21 @@ class SubscriptionActivationRepositoryTest { assertThat(changeable).isFalse() } @Test fun isActivationChangeableFlow_inEmergencyCall_notChangeable() = runBlocking { mockCallStateRepository.stub { on { isInCallFlow() } doReturn flowOf(false) on { isInEmergencyCallFlow() } doReturn flowOf(true) } mockSatelliteRepository.stub { on { getIsSessionStartedFlow() } doReturn flowOf(false) } val changeable = repository.isActivationChangeableFlow().firstWithTimeoutOrNull() assertThat(changeable).isFalse() } @Test fun setActive_defaultSubId_doNothing() = runBlocking { repository.setActive(subId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, active = true) Loading