From 5b4748919a97e8a0fd05889a801f0c464b2cc054 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Fri, 30 Aug 2024 11:16:34 +0800 Subject: [PATCH] Use simSpecificCarrierId for new apn Currently in TelephonyProvider, it uses tm.getSimSpecificCarrierId() to get the specific carrier id to retrieve the apns, update Settings to match. Fix: 360917123 Flag: EXEMPT bug fix Test: manual - new apn Test: atest ApnRepositoryTest Change-Id: I982e0026acdf34ccec7508c41f83718894f7da57 --- .../settings/network/apn/ApnRepository.kt | 9 +++-- .../settings/network/apn/ApnRepositoryTest.kt | 34 +++++++------------ 2 files changed, 17 insertions(+), 26 deletions(-) diff --git a/src/com/android/settings/network/apn/ApnRepository.kt b/src/com/android/settings/network/apn/ApnRepository.kt index 843371501b7..7ed0c865127 100644 --- a/src/com/android/settings/network/apn/ApnRepository.kt +++ b/src/com/android/settings/network/apn/ApnRepository.kt @@ -21,10 +21,10 @@ import android.content.Context import android.database.Cursor import android.net.Uri import android.provider.Telephony -import android.telephony.SubscriptionManager import android.telephony.TelephonyManager import android.util.Log import com.android.settings.R +import com.android.settings.network.telephony.telephonyManager import com.android.settingslib.utils.ThreadUtils import java.util.Locale @@ -178,12 +178,11 @@ fun isItemExist(apnData: ApnData, context: Context): String? { } fun Context.getApnIdMap(subId: Int): Map { - val subInfo = getSystemService(SubscriptionManager::class.java)!! - .getActiveSubscriptionInfo(subId) - val carrierId = subInfo.carrierId + val telephonyManager = telephonyManager(subId) + val carrierId = telephonyManager.simSpecificCarrierId return if (carrierId != TelephonyManager.UNKNOWN_CARRIER_ID) { mapOf(Telephony.Carriers.CARRIER_ID to carrierId) } else { - mapOf(Telephony.Carriers.NUMERIC to subInfo.mccString + subInfo.mncString) + mapOf(Telephony.Carriers.NUMERIC to telephonyManager.simOperator) }.also { Log.d(TAG, "[$subId] New APN item with id: $it") } } diff --git a/tests/spa_unit/src/com/android/settings/network/apn/ApnRepositoryTest.kt b/tests/spa_unit/src/com/android/settings/network/apn/ApnRepositoryTest.kt index 415531882a2..d2f16d75bbb 100644 --- a/tests/spa_unit/src/com/android/settings/network/apn/ApnRepositoryTest.kt +++ b/tests/spa_unit/src/com/android/settings/network/apn/ApnRepositoryTest.kt @@ -21,8 +21,6 @@ import android.content.Context import android.database.MatrixCursor import android.net.Uri import android.provider.Telephony -import android.telephony.SubscriptionInfo -import android.telephony.SubscriptionManager import android.telephony.TelephonyManager import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -40,19 +38,15 @@ class ApnRepositoryTest { private val contentResolver = mock() - private val mockSubscriptionInfo = mock { - on { mccString } doReturn MCC - on { mncString } doReturn MNC - } + private val mockTelephonyManager = + mock { on { createForSubscriptionId(SUB_ID) } doReturn mock } - private val mockSubscriptionManager = mock { - on { getActiveSubscriptionInfo(SUB_ID) } doReturn mockSubscriptionInfo - } + private val context: Context = + spy(ApplicationProvider.getApplicationContext()) { + on { contentResolver } doReturn contentResolver + on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager + } - private val context: Context = spy(ApplicationProvider.getApplicationContext()) { - on { contentResolver } doReturn contentResolver - on { getSystemService(SubscriptionManager::class.java) } doReturn mockSubscriptionManager - } private val uri = mock {} @Test @@ -91,9 +85,7 @@ class ApnRepositoryTest { @Test fun getApnIdMap_knownCarrierId() { - mockSubscriptionInfo.stub { - on { carrierId } doReturn CARRIER_ID - } + mockTelephonyManager.stub { on { simSpecificCarrierId } doReturn CARRIER_ID } val idMap = context.getApnIdMap(SUB_ID) @@ -102,19 +94,19 @@ class ApnRepositoryTest { @Test fun getApnIdMap_unknownCarrierId() { - mockSubscriptionInfo.stub { - on { carrierId } doReturn TelephonyManager.UNKNOWN_CARRIER_ID + mockTelephonyManager.stub { + on { simSpecificCarrierId } doReturn TelephonyManager.UNKNOWN_CARRIER_ID + on { simOperator } doReturn SIM_OPERATOR } val idMap = context.getApnIdMap(SUB_ID) - assertThat(idMap).containsExactly(Telephony.Carriers.NUMERIC, MCC + MNC) + assertThat(idMap).containsExactly(Telephony.Carriers.NUMERIC, SIM_OPERATOR) } private companion object { const val SUB_ID = 2 const val CARRIER_ID = 10 - const val MCC = "310" - const val MNC = "101" + const val SIM_OPERATOR = "310101" } }