From 731df0fa98d1824c15dc261e354f5e166034a6ec Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 6 Feb 2025 18:14:32 +0000 Subject: [PATCH] Phone number only available if telephony capable The Phone Number field in either the about or network details pages should not be shown if the device does not have telephony capabilities. Bug: 392808943 Flag: EXEMPT bugfix Test: atest PhoneNumberPreferenceControllerTest Test: atest MobileNetworkPhoneNumberPreferenceControllerTest Change-Id: I04f682cc829d5dc7879e6cdacdaebc55a3b6fd2c --- .../PhoneNumberPreferenceController.java | 3 ++- ...ileNetworkPhoneNumberPreferenceController.kt | 4 +++- .../PhoneNumberPreferenceControllerTest.kt | 17 ++++++++++++++--- ...etworkPhoneNumberPreferenceControllerTest.kt | 17 ++++++++++++++--- 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java index 12a45dea79c..b49d62d444f 100644 --- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java @@ -31,6 +31,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.network.SubscriptionUtil; +import com.android.settingslib.Utils; import java.util.ArrayList; import java.util.List; @@ -52,7 +53,7 @@ public class PhoneNumberPreferenceController extends BasePreferenceController { @Override public int getAvailabilityStatus() { - if (!SubscriptionUtil.isSimHardwareVisible(mContext)) { + if (!SubscriptionUtil.isSimHardwareVisible(mContext) || Utils.isWifiOnly(mContext)) { return UNSUPPORTED_ON_DEVICE; } if (!mContext.getSystemService(UserManager.class).isAdminUser()) { diff --git a/src/com/android/settings/network/telephony/MobileNetworkPhoneNumberPreferenceController.kt b/src/com/android/settings/network/telephony/MobileNetworkPhoneNumberPreferenceController.kt index c62599969dc..40cb6f93ace 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkPhoneNumberPreferenceController.kt +++ b/src/com/android/settings/network/telephony/MobileNetworkPhoneNumberPreferenceController.kt @@ -26,6 +26,7 @@ import com.android.settings.flags.Flags import com.android.settings.network.SubscriptionUtil import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle import com.android.settingslib.spaprivileged.framework.common.userManager +import com.android.settingslib.Utils /** Preference controller for "Phone number" */ class MobileNetworkPhoneNumberPreferenceController @@ -45,7 +46,8 @@ constructor( override fun getAvailabilityStatus(subId: Int): Int = when { !Flags.isDualSimOnboardingEnabled() || !SubscriptionManager.isValidSubscriptionId(subId) - || !SubscriptionUtil.isSimHardwareVisible(mContext) -> CONDITIONALLY_UNAVAILABLE + || !SubscriptionUtil.isSimHardwareVisible(mContext) + || Utils.isWifiOnly(mContext) -> CONDITIONALLY_UNAVAILABLE !mContext.userManager.isAdminUser -> DISABLED_FOR_USER else -> AVAILABLE } diff --git a/tests/spa_unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.kt index d9470469401..ed40a8c87ac 100644 --- a/tests/spa_unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.kt +++ b/tests/spa_unit/src/com/android/settings/deviceinfo/PhoneNumberPreferenceControllerTest.kt @@ -30,6 +30,7 @@ import com.android.dx.mockito.inline.extended.ExtendedMockito import com.android.settings.R import com.android.settings.core.BasePreferenceController import com.android.settings.network.SubscriptionUtil +import com.android.settingslib.Utils import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before @@ -73,11 +74,13 @@ class PhoneNumberPreferenceControllerTest { mockSession = ExtendedMockito.mockitoSession() .mockStatic(SubscriptionUtil::class.java) + .mockStatic(Utils::class.java) .strictness(Strictness.LENIENT) .startMocking() // By default, available whenever(SubscriptionUtil.isSimHardwareVisible(context)).thenReturn(true) + whenever(Utils.isWifiOnly(context)).thenReturn(false) mockUserManager.stub { on { isAdminUser } doReturn true } @@ -160,14 +163,14 @@ class PhoneNumberPreferenceControllerTest { } @Test - fun getAvailabilityStatus_simHardwareVisible_userAdmin_displayed() { + fun getAvailabilityStatus_simHardwareVisible_userAdmin_notWifiOnly_displayed() { // Use defaults from setup() val availabilityStatus = controller.availabilityStatus assertThat(availabilityStatus).isEqualTo(BasePreferenceController.AVAILABLE) } @Test - fun getAvailabilityStatus_notSimHardwareVisible_userAdmin_notDisplayed() { + fun getAvailabilityStatus_notSimHardwareVisible_userAdmin_notWifiOnly_notDisplayed() { whenever(SubscriptionUtil.isSimHardwareVisible(context)).thenReturn(false) val availabilityStatus = controller.availabilityStatus @@ -175,7 +178,7 @@ class PhoneNumberPreferenceControllerTest { } @Test - fun getAvailabilityStatus_simHardwareVisible_notUserAdmin_notDisplayed() { + fun getAvailabilityStatus_simHardwareVisible_notUserAdmin_notWifiOnly_notDisplayed() { mockUserManager.stub { on { isAdminUser } doReturn false } @@ -183,4 +186,12 @@ class PhoneNumberPreferenceControllerTest { val availabilityStatus = controller.availabilityStatus assertThat(availabilityStatus).isEqualTo(BasePreferenceController.DISABLED_FOR_USER) } + + @Test + fun getAvailabilityStatus_simHardwareVisible_userAdmin_wifiOnly_notDisplayed() { + whenever(Utils.isWifiOnly(context)).thenReturn(true) + + val availabilityStatus = controller.availabilityStatus + assertThat(availabilityStatus).isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE) + } } diff --git a/tests/spa_unit/src/com/android/settings/network/telephony/MobileNetworkPhoneNumberPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/network/telephony/MobileNetworkPhoneNumberPreferenceControllerTest.kt index c6bd0bdcc85..a46b71033b6 100644 --- a/tests/spa_unit/src/com/android/settings/network/telephony/MobileNetworkPhoneNumberPreferenceControllerTest.kt +++ b/tests/spa_unit/src/com/android/settings/network/telephony/MobileNetworkPhoneNumberPreferenceControllerTest.kt @@ -27,6 +27,7 @@ import com.android.dx.mockito.inline.extended.ExtendedMockito import com.android.settings.R import com.android.settings.core.BasePreferenceController import com.android.settings.network.SubscriptionUtil +import com.android.settingslib.Utils import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.delay import kotlinx.coroutines.flow.flowOf @@ -65,11 +66,13 @@ class MobileNetworkPhoneNumberPreferenceControllerTest { mockSession = ExtendedMockito.mockitoSession() .mockStatic(SubscriptionUtil::class.java) + .mockStatic(Utils::class.java) .strictness(Strictness.LENIENT) .startMocking() // By default, available whenever(SubscriptionUtil.isSimHardwareVisible(context)).thenReturn(true) + whenever(Utils.isWifiOnly(context)).thenReturn(false) mockUserManager.stub { on { isAdminUser } doReturn true } @@ -109,14 +112,14 @@ class MobileNetworkPhoneNumberPreferenceControllerTest { } @Test - fun getAvailabilityStatus_simHardwareVisible_userAdmin_displayed() { + fun getAvailabilityStatus_simHardwareVisible_userAdmin_notWifiOnly_displayed() { // Use defaults from setup() val availabilityStatus = controller.availabilityStatus assertThat(availabilityStatus).isEqualTo(BasePreferenceController.AVAILABLE) } @Test - fun getAvailabilityStatus_notSimHardwareVisible_userAdmin_notDisplayed() { + fun getAvailabilityStatus_notSimHardwareVisible_userAdmin_notWifiOnly_notDisplayed() { whenever(SubscriptionUtil.isSimHardwareVisible(context)).thenReturn(false) val availabilityStatus = controller.availabilityStatus @@ -124,7 +127,7 @@ class MobileNetworkPhoneNumberPreferenceControllerTest { } @Test - fun getAvailabilityStatus_simHardwareVisible_notUserAdmin_notDisplayed() { + fun getAvailabilityStatus_simHardwareVisible_notUserAdmin_notWifiOnly_notDisplayed() { mockUserManager.stub { on { isAdminUser } doReturn false } @@ -133,6 +136,14 @@ class MobileNetworkPhoneNumberPreferenceControllerTest { assertThat(availabilityStatus).isEqualTo(BasePreferenceController.DISABLED_FOR_USER) } + @Test + fun getAvailabilityStatus_simHardwareVisible_userAdmin_wifiOnly_notDisplayed() { + whenever(Utils.isWifiOnly(context)).thenReturn(true) + + val availabilityStatus = controller.availabilityStatus + assertThat(availabilityStatus).isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE) + } + private companion object { const val TEST_KEY = "test_key" const val SUB_ID = 10