Handle invalid subIds in Enable2gPreferenceController.

Implements improved handling of invalid subIds in the
"Allow 2G" controller + unit tests.

Bug: 185264531
Test: m & atest -c Enable2gPreferenceControllerTest
Change-Id: I7587f1a2a8150bbc6cc0864c9a13d0d910a26682
This commit is contained in:
Yomna Nasser
2021-04-17 01:16:29 +00:00
parent 976c6ac56d
commit e43f26294d
2 changed files with 20 additions and 1 deletions

View File

@@ -72,7 +72,7 @@ public class Enable2gPreferenceController extends TelephonyTogglePreferenceContr
public int getAvailabilityStatus(int subId) {
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
boolean visible =
subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
SubscriptionManager.isUsableSubscriptionId(subId)
&& carrierConfig != null
&& !carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENABLE_2G)
&& mTelephonyManager.isRadioInterfaceCapabilitySupported(
@@ -89,6 +89,9 @@ public class Enable2gPreferenceController extends TelephonyTogglePreferenceContr
@Override
public boolean setChecked(boolean isChecked) {
if (!SubscriptionManager.isUsableSubscriptionId(mSubId)) {
return false;
}
long currentlyAllowedNetworkTypes = mTelephonyManager.getAllowedNetworkTypesForReason(
mTelephonyManager.ALLOWED_NETWORK_TYPES_REASON_ENABLE_2G);
boolean enabled = (currentlyAllowedNetworkTypes & BITMASK_2G) != 0;

View File

@@ -48,6 +48,8 @@ public final class Enable2gPreferenceControllerTest {
@Mock
private TelephonyManager mTelephonyManager;
@Mock
private TelephonyManager mInvalidTelephonyManager;
@Mock
private CarrierConfigManager mCarrierConfigManager;
private PersistableBundle mPersistableBundle;
@@ -65,6 +67,8 @@ public final class Enable2gPreferenceControllerTest {
.thenReturn(mCarrierConfigManager);
doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
doReturn(mInvalidTelephonyManager).when(mTelephonyManager).createForSubscriptionId(
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mPersistableBundle = new PersistableBundle();
doReturn(mPersistableBundle).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
@@ -120,6 +124,18 @@ public final class Enable2gPreferenceControllerTest {
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}
@Test
public void setChecked_invalidSubIdAndIsCheckedTrue_returnFalse() {
mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
assertThat(mController.setChecked(true)).isFalse();
}
@Test
public void setChecked_invalidSubIdAndIsCheckedFalse_returnFalse() {
mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
assertThat(mController.setChecked(false)).isFalse();
}
@Test
public void onPreferenceChange_update() {
// Set "Enable 2G" flag to "on"