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);