Merge "Fix remapRafIfApplicable get NPE" into main
diff --git a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
index 3d3cff9..2765ca4 100644
--- a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
+++ b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
@@ -2818,7 +2818,8 @@
ProxyController proxyController = ProxyController.getInstance();
RadioAccessFamily[] rafs = new RadioAccessFamily[mTelephonyManager.getActiveModemCount()];
for (int phoneId = 0; phoneId < rafs.length; phoneId++) {
- int raf = mSlotIndexToSubId.get(phoneId) == getDefaultDataSubId()
+ int raf = mSlotIndexToSubId.getOrDefault(phoneId,
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID) == getDefaultDataSubId()
? proxyController.getMaxRafSupported() : proxyController.getMinRafSupported();
rafs[phoneId] = new RadioAccessFamily(phoneId, raf);
}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
index 37c3df2..22e1067 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
@@ -676,6 +676,26 @@
}
@Test
+ public void testSingleSimSetDefaultDataSubId() {
+ mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE);
+ mContextFixture.addCallingOrSelfPermission(Manifest.permission.MODIFY_PHONE_STATE);
+ doReturn(1).when(mProxyController).getMinRafSupported();
+ doReturn(2).when(mProxyController).getMaxRafSupported();
+ insertSubscription(FAKE_SUBSCRIPTION_INFO2);
+
+ mContextFixture.addCallingOrSelfPermission(Manifest.permission.MODIFY_PHONE_STATE);
+
+ mSubscriptionManagerServiceUT.setDefaultDataSubId(1);
+ assertThat(mSubscriptionManagerServiceUT.getDefaultDataSubId()).isEqualTo(1);
+ ArgumentCaptor<RadioAccessFamily[]> rafsCaptor = ArgumentCaptor.forClass(
+ RadioAccessFamily[].class);
+ verify(mProxyController).setRadioCapability(rafsCaptor.capture());
+ RadioAccessFamily[] rafs = (RadioAccessFamily[]) rafsCaptor.getValue();
+ assertThat(rafs[0].getRadioAccessFamily()).isEqualTo(1);
+ assertThat(rafs[1].getRadioAccessFamily()).isEqualTo(2);
+ }
+
+ @Test
public void testSetDefaultSmsSubId() throws Exception {
clearInvocations(mContext);
insertSubscription(FAKE_SUBSCRIPTION_INFO1);