Merge "Add the condition to hide the MMS messages preference" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
bca26d6151
@@ -224,7 +224,10 @@ class CarrierConfigRepository(private val context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val BooleanKeysWhichNotFollowingsNamingConventions =
|
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) {
|
private fun checkBooleanKey(key: String) {
|
||||||
check(key.endsWith("_bool") || key in BooleanKeysWhichNotFollowingsNamingConventions) {
|
check(key.endsWith("_bool") || key in BooleanKeysWhichNotFollowingsNamingConventions) {
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.network.telephony
|
package com.android.settings.network.telephony
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.telephony.CarrierConfigManager
|
||||||
import android.telephony.SubscriptionManager
|
import android.telephony.SubscriptionManager
|
||||||
import android.telephony.TelephonyManager
|
import android.telephony.TelephonyManager
|
||||||
import android.telephony.data.ApnSetting
|
import android.telephony.data.ApnSetting
|
||||||
@@ -45,7 +46,7 @@ constructor(
|
|||||||
private var subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
private var subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||||
private var telephonyManager: TelephonyManager =
|
private var telephonyManager: TelephonyManager =
|
||||||
context.getSystemService(TelephonyManager::class.java)!!
|
context.getSystemService(TelephonyManager::class.java)!!
|
||||||
|
private val carrierConfigRepository = CarrierConfigRepository(context)
|
||||||
private var preferenceScreen: PreferenceScreen? = null
|
private var preferenceScreen: PreferenceScreen? = null
|
||||||
|
|
||||||
fun init(subId: Int) {
|
fun init(subId: Int) {
|
||||||
@@ -54,7 +55,13 @@ constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getAvailabilityStatus() =
|
override fun getAvailabilityStatus() =
|
||||||
if (getAvailabilityStatus(telephonyManager, subId, getDefaultDataSubId)) AVAILABLE
|
if (getAvailabilityStatus(
|
||||||
|
telephonyManager,
|
||||||
|
subId,
|
||||||
|
getDefaultDataSubId,
|
||||||
|
carrierConfigRepository
|
||||||
|
)
|
||||||
|
) AVAILABLE
|
||||||
else CONDITIONALLY_UNAVAILABLE
|
else CONDITIONALLY_UNAVAILABLE
|
||||||
|
|
||||||
override fun displayPreference(screen: PreferenceScreen) {
|
override fun displayPreference(screen: PreferenceScreen) {
|
||||||
@@ -92,11 +99,14 @@ constructor(
|
|||||||
telephonyManager: TelephonyManager,
|
telephonyManager: TelephonyManager,
|
||||||
subId: Int,
|
subId: Int,
|
||||||
getDefaultDataSubId: () -> Int,
|
getDefaultDataSubId: () -> Int,
|
||||||
|
carrierConfigRepository: CarrierConfigRepository,
|
||||||
): Boolean {
|
): Boolean {
|
||||||
return SubscriptionManager.isValidSubscriptionId(subId) &&
|
return SubscriptionManager.isValidSubscriptionId(subId) &&
|
||||||
!telephonyManager.isDataEnabled &&
|
!telephonyManager.isDataEnabled &&
|
||||||
telephonyManager.isApnMetered(ApnSetting.TYPE_MMS) &&
|
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(
|
private fun isFallbackDataEnabled(
|
||||||
@@ -118,11 +128,16 @@ constructor(
|
|||||||
) : MobileNetworkSettingsSearchItem {
|
) : MobileNetworkSettingsSearchItem {
|
||||||
private var telephonyManager: TelephonyManager =
|
private var telephonyManager: TelephonyManager =
|
||||||
context.getSystemService(TelephonyManager::class.java)!!
|
context.getSystemService(TelephonyManager::class.java)!!
|
||||||
|
private val carrierConfigRepository = CarrierConfigRepository(context)
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
fun isAvailable(subId: Int): Boolean =
|
fun isAvailable(subId: Int): Boolean =
|
||||||
getAvailabilityStatus(
|
getAvailabilityStatus(
|
||||||
telephonyManager.createForSubscriptionId(subId), subId, getDefaultDataSubId)
|
telephonyManager.createForSubscriptionId(subId),
|
||||||
|
subId,
|
||||||
|
getDefaultDataSubId,
|
||||||
|
carrierConfigRepository
|
||||||
|
)
|
||||||
|
|
||||||
override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? {
|
override fun getSearchResult(subId: Int): MobileNetworkSettingsSearchResult? {
|
||||||
if (!isAvailable(subId)) return null
|
if (!isAvailable(subId)) return null
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.network.telephony
|
package com.android.settings.network.telephony
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.telephony.CarrierConfigManager
|
||||||
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
import android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||||
import android.telephony.TelephonyManager
|
import android.telephony.TelephonyManager
|
||||||
import android.telephony.data.ApnSetting
|
import android.telephony.data.ApnSetting
|
||||||
@@ -26,6 +27,7 @@ import com.android.settings.core.BasePreferenceController.AVAILABLE
|
|||||||
import com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE
|
import com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE
|
||||||
import com.android.settings.network.telephony.MmsMessagePreferenceController.Companion.MmsMessageSearchItem
|
import com.android.settings.network.telephony.MmsMessagePreferenceController.Companion.MmsMessageSearchItem
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import org.junit.Before
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.kotlin.doReturn
|
import org.mockito.kotlin.doReturn
|
||||||
@@ -63,6 +65,21 @@ class MmsMessagePreferenceControllerTest {
|
|||||||
getDefaultDataSubId = { defaultDataSubId },
|
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
|
@Test
|
||||||
fun getAvailabilityStatus_invalidSubscription_unavailable() {
|
fun getAvailabilityStatus_invalidSubscription_unavailable() {
|
||||||
controller.init(INVALID_SUBSCRIPTION_ID)
|
controller.init(INVALID_SUBSCRIPTION_ID)
|
||||||
@@ -164,6 +181,27 @@ class MmsMessagePreferenceControllerTest {
|
|||||||
assertThat(availabilityStatus).isEqualTo(AVAILABLE)
|
assertThat(availabilityStatus).isEqualTo(AVAILABLE)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Test
|
||||||
fun searchIsAvailable_notDefaultDataAndDataOnAndAutoDataSwitchOn_unavailable() {
|
fun searchIsAvailable_notDefaultDataAndDataOnAndAutoDataSwitchOn_unavailable() {
|
||||||
mockTelephonyManager1.stub {
|
mockTelephonyManager1.stub {
|
||||||
@@ -200,6 +238,27 @@ class MmsMessagePreferenceControllerTest {
|
|||||||
assertThat(isAvailable).isTrue()
|
assertThat(isAvailable).isTrue()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Test
|
||||||
fun isChecked_whenMmsNotAlwaysAllowed_returnFalse() {
|
fun isChecked_whenMmsNotAlwaysAllowed_returnFalse() {
|
||||||
mockTelephonyManager2.stub {
|
mockTelephonyManager2.stub {
|
||||||
|
Reference in New Issue
Block a user