From 538fb34027858cf30b5d2052d9316ddb6b3cb06c Mon Sep 17 00:00:00 2001 From: songferngwang Date: Thu, 13 Feb 2025 12:04:07 +0000 Subject: [PATCH] Check if ECBMode when activate SIM card If in ECBMode, start ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS to show a dialog instead. This align with the deactivate sim case Bug: 393298086 Test: atest SubscriptionActivationRepositoryTest Test: adb shell cmd phone emergency-callback-mode Flag: EXEMPT bugfix Change-Id: Id40d087b7d2d3ca99504ec75bac1c5e29c67258d --- .../SubscriptionActivationRepository.kt | 2 +- .../SubscriptionActivationRepositoryTest.kt | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/telephony/SubscriptionActivationRepository.kt b/src/com/android/settings/network/telephony/SubscriptionActivationRepository.kt index 185af0c3d09..a7f6a0b5dcb 100644 --- a/src/com/android/settings/network/telephony/SubscriptionActivationRepository.kt +++ b/src/com/android/settings/network/telephony/SubscriptionActivationRepository.kt @@ -52,7 +52,7 @@ class SubscriptionActivationRepository( Log.i(TAG, "Unable to toggle subscription due to unusable subscription ID.") return } - if (!active && isEmergencyCallbackMode(subId)) { + if (isEmergencyCallbackMode(subId)) { val intent = Intent(ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS).apply { setPackage(Utils.PHONE_PACKAGE_NAME) } diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionActivationRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionActivationRepositoryTest.kt index 427ab7b1685..01015be7730 100644 --- a/tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionActivationRepositoryTest.kt +++ b/tests/spa_unit/src/com/android/settings/network/telephony/SubscriptionActivationRepositoryTest.kt @@ -17,12 +17,15 @@ package com.android.settings.network.telephony import android.content.Context +import android.content.Intent +import android.os.UserHandle import android.telephony.SubscriptionManager import android.telephony.TelephonyManager import android.telephony.TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.network.SatelliteRepository +import com.android.settings.network.SimOnboardingActivity import com.android.settingslib.spa.testutils.firstWithTimeoutOrNull import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.flowOf @@ -33,6 +36,7 @@ import org.mockito.kotlin.any import org.mockito.kotlin.argThat import org.mockito.kotlin.doNothing import org.mockito.kotlin.doReturn +import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.never import org.mockito.kotlin.spy @@ -107,6 +111,17 @@ class SubscriptionActivationRepositoryTest { verify(context, never()).startActivity(any()) } + @Test + fun setActive_turnOnAndIsEmergencyCallbackMode() = runBlocking { + mockTelephonyManager.stub { + on { emergencyCallbackMode } doReturn true + } + + repository.setActive(subId = SUB_ID, active = true) + + verify(context).startActivity(argThat { action == ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS }) + } + @Test fun setActive_turnOffAndIsEmergencyCallbackMode() = runBlocking { mockTelephonyManager.stub { @@ -131,6 +146,19 @@ class SubscriptionActivationRepositoryTest { }) } + @Test + fun setActive_turnOnAndNotEmergencyCallbackMode() = runBlocking { + mockTelephonyManager.stub { + on { emergencyCallbackMode } doReturn false + } + + repository.setActive(subId = SUB_ID, active = true) + + verify(context).startActivityAsUser(argThat { + component?.className == SimOnboardingActivity::class.qualifiedName + }, eq(UserHandle.CURRENT)) + } + private companion object { const val SUB_ID = 1 }