Merge "Reafactor DataProcessManager Callback Function Logic" into main
diff --git a/src/com/android/settings/network/telephony/CarrierConfigRepository.kt b/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
index 99683a8..77f4e1c 100644
--- a/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
+++ b/src/com/android/settings/network/telephony/CarrierConfigRepository.kt
@@ -224,7 +224,10 @@
}
private val BooleanKeysWhichNotFollowingsNamingConventions =
- listOf(CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)
+ listOf(
+ CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS,
+ CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ )
private fun checkBooleanKey(key: String) {
check(key.endsWith("_bool") || key in BooleanKeysWhichNotFollowingsNamingConventions) {
diff --git a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
index 220218c..a37a12b 100644
--- a/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
+++ b/src/com/android/settings/network/telephony/MmsMessagePreferenceController.kt
@@ -17,6 +17,7 @@
package com.android.settings.network.telephony
import android.content.Context
+import android.telephony.CarrierConfigManager
import android.telephony.SubscriptionManager
import android.telephony.TelephonyManager
import android.telephony.data.ApnSetting
@@ -45,7 +46,7 @@
private var subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID
private var telephonyManager: TelephonyManager =
context.getSystemService(TelephonyManager::class.java)!!
-
+ private val carrierConfigRepository = CarrierConfigRepository(context)
private var preferenceScreen: PreferenceScreen? = null
fun init(subId: Int) {
@@ -54,7 +55,13 @@
}
override fun getAvailabilityStatus() =
- if (getAvailabilityStatus(telephonyManager, subId, getDefaultDataSubId)) AVAILABLE
+ if (getAvailabilityStatus(
+ telephonyManager,
+ subId,
+ getDefaultDataSubId,
+ carrierConfigRepository
+ )
+ ) AVAILABLE
else CONDITIONALLY_UNAVAILABLE
override fun displayPreference(screen: PreferenceScreen) {
@@ -92,11 +99,14 @@
telephonyManager: TelephonyManager,
subId: Int,
getDefaultDataSubId: () -> Int,
+ carrierConfigRepository: CarrierConfigRepository,
): Boolean {
return SubscriptionManager.isValidSubscriptionId(subId) &&
!telephonyManager.isDataEnabled &&
telephonyManager.isApnMetered(ApnSetting.TYPE_MMS) &&
- !isFallbackDataEnabled(telephonyManager, subId, getDefaultDataSubId())
+ !isFallbackDataEnabled(telephonyManager, subId, getDefaultDataSubId()) &&
+ carrierConfigRepository.getBoolean(
+ subId, CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL)
}
private fun isFallbackDataEnabled(
@@ -118,11 +128,16 @@
) : MobileNetworkSettingsSearchItem {
private var telephonyManager: TelephonyManager =
context.getSystemService(TelephonyManager::class.java)!!
+ private val carrierConfigRepository = CarrierConfigRepository(context)
@VisibleForTesting
fun isAvailable(subId: Int): Boolean =
getAvailabilityStatus(
- telephonyManager.createForSubscriptionId(subId), subId, getDefaultDataSubId)
+ telephonyManager.createForSubscriptionId(subId),
+ subId,
+ getDefaultDataSubId,
+ carrierConfigRepository
+ )
override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? {
if (!isAvailable(subId)) return null
diff --git a/tests/Enable16KbTests/Android.bp b/tests/Enable16KbTests/Android.bp
index 7e1d32c..72826bb 100644
--- a/tests/Enable16KbTests/Android.bp
+++ b/tests/Enable16KbTests/Android.bp
@@ -53,7 +53,7 @@
"compatibility-host-util",
"compatibility-tradefed",
],
- data: [
+ device_common_data: [
":test_16kb_app",
],
test_suites: ["general-tests"],
diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt
index 4d53260..75c1913 100644
--- a/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt
+++ b/tests/spa_unit/src/com/android/settings/network/telephony/MmsMessagePreferenceControllerTest.kt
@@ -17,6 +17,7 @@
package com.android.settings.network.telephony
import android.content.Context
+import android.telephony.CarrierConfigManager
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
import android.telephony.TelephonyManager
import android.telephony.data.ApnSetting
@@ -26,6 +27,7 @@
import com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE
import com.android.settings.network.telephony.MmsMessagePreferenceController.Companion.MmsMessageSearchItem
import com.google.common.truth.Truth.assertThat
+import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.doReturn
@@ -63,6 +65,21 @@
getDefaultDataSubId = { defaultDataSubId },
)
+ @Before
+ fun setUp() {
+ CarrierConfigRepository.resetForTest()
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_1_ID,
+ key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ value = true,
+ )
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_2_ID,
+ key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ value = true,
+ )
+ }
+
@Test
fun getAvailabilityStatus_invalidSubscription_unavailable() {
controller.init(INVALID_SUBSCRIPTION_ID)
@@ -165,6 +182,27 @@
}
@Test
+ fun getAvailabilityStatus_carrierConfigEnabledMmsFalse_unavailable() {
+ defaultDataSubId = SUB_2_ID
+ mockTelephonyManager2.stub {
+ on { isDataEnabled } doReturn false
+ on {
+ isMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)
+ } doReturn true
+ }
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_2_ID,
+ key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ value = false,
+ )
+ controller.init(SUB_2_ID)
+
+ val availabilityStatus = controller.getAvailabilityStatus()
+
+ assertThat(availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE)
+ }
+
+ @Test
fun searchIsAvailable_notDefaultDataAndDataOnAndAutoDataSwitchOn_unavailable() {
mockTelephonyManager1.stub {
on { isDataEnabled } doReturn true
@@ -201,6 +239,27 @@
}
@Test
+ fun searchIsAvailable_carrierConfigEnabledMmsFalse_unavailable() {
+ defaultDataSubId = SUB_2_ID
+ mockTelephonyManager2.stub {
+ on { isDataEnabled } doReturn false
+ on {
+ isMobileDataPolicyEnabled(TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH)
+ } doReturn true
+ }
+ CarrierConfigRepository.setBooleanForTest(
+ subId = SUB_2_ID,
+ key = CarrierConfigManager.KEY_MMS_MMS_ENABLED_BOOL,
+ value = false,
+ )
+ controller.init(SUB_2_ID)
+
+ val availabilityStatus = controller.getAvailabilityStatus()
+
+ assertThat(availabilityStatus).isEqualTo(CONDITIONALLY_UNAVAILABLE)
+ }
+
+ @Test
fun isChecked_whenMmsNotAlwaysAllowed_returnFalse() {
mockTelephonyManager2.stub {
on {