Loading services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java +7 −2 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting.Visibility; import com.android.internal.telephony.flags.Flags; import com.android.internal.util.IndentingPrintWriter; import com.android.server.vcn.util.PersistableBundleUtils.PersistableBundleWrapper; Loading Loading @@ -318,7 +319,11 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { if (SubscriptionManager.isValidSubscriptionId(subId)) { // Get only configs as needed to save memory. final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId, final PersistableBundle carrierConfig = Flags.fixCrashOnGettingConfigWhenPhoneIsGone() ? CarrierConfigManager.getCarrierConfigSubset(mContext, subId, VcnManager.VCN_RELATED_CARRIER_CONFIG_KEYS) : mCarrierConfigManager.getConfigForSubId(subId, VcnManager.VCN_RELATED_CARRIER_CONFIG_KEYS); if (mDeps.isConfigForIdentifiedCarrier(carrierConfig)) { mReadySubIdsBySlotId.put(slotId, subId); Loading tests/vcn/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ android_test { "platform-test-annotations", "services.core", "service-connectivity-tiramisu-pre-jarjar", "flag-junit", ], libs: [ "android.test.runner", Loading tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; Loading @@ -58,6 +59,7 @@ import android.os.HandlerExecutor; import android.os.ParcelUuid; import android.os.PersistableBundle; import android.os.test.TestLooper; import android.platform.test.flag.junit.SetFlagsRule; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; Loading @@ -71,7 +73,10 @@ import android.util.ArraySet; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.internal.telephony.flags.Flags; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; Loading Loading @@ -128,6 +133,9 @@ public class TelephonySubscriptionTrackerTest { TEST_SUBID_TO_CARRIER_CONFIG_MAP = Collections.unmodifiableMap(subIdToCarrierConfigMap); } @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); @NonNull private final Context mContext; @NonNull private final TestLooper mTestLooper; @NonNull private final Handler mHandler; Loading Loading @@ -185,6 +193,7 @@ public class TelephonySubscriptionTrackerTest { @Before public void setUp() throws Exception { mSetFlagsRule.enableFlags(Flags.FLAG_FIX_CRASH_ON_GETTING_CONFIG_WHEN_PHONE_IS_GONE); doReturn(2).when(mTelephonyManager).getActiveModemCount(); mCallback = mock(TelephonySubscriptionTrackerCallback.class); Loading Loading @@ -594,4 +603,14 @@ public class TelephonySubscriptionTrackerTest { new ArraySet<>(Arrays.asList(TEST_SUBSCRIPTION_ID_1, TEST_SUBSCRIPTION_ID_2)), snapshot.getAllSubIdsInGroup(TEST_PARCEL_UUID)); } @Test public void testCarrierConfigChangeWhenPhoneIsGoneShouldNotCrash() throws Exception { doThrow(new IllegalStateException("Carrier config loader is not available.")) .when(mCarrierConfigManager) .getConfigForSubId(eq(TEST_SUBSCRIPTION_ID_1), any()); sendCarrierConfigChange(true /* hasValidSubscription */); mTestLooper.dispatchAll(); } } Loading
services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java +7 −2 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting.Visibility; import com.android.internal.telephony.flags.Flags; import com.android.internal.util.IndentingPrintWriter; import com.android.server.vcn.util.PersistableBundleUtils.PersistableBundleWrapper; Loading Loading @@ -318,7 +319,11 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { if (SubscriptionManager.isValidSubscriptionId(subId)) { // Get only configs as needed to save memory. final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId, final PersistableBundle carrierConfig = Flags.fixCrashOnGettingConfigWhenPhoneIsGone() ? CarrierConfigManager.getCarrierConfigSubset(mContext, subId, VcnManager.VCN_RELATED_CARRIER_CONFIG_KEYS) : mCarrierConfigManager.getConfigForSubId(subId, VcnManager.VCN_RELATED_CARRIER_CONFIG_KEYS); if (mDeps.isConfigForIdentifiedCarrier(carrierConfig)) { mReadySubIdsBySlotId.put(slotId, subId); Loading
tests/vcn/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ android_test { "platform-test-annotations", "services.core", "service-connectivity-tiramisu-pre-jarjar", "flag-junit", ], libs: [ "android.test.runner", Loading
tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java +19 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; Loading @@ -58,6 +59,7 @@ import android.os.HandlerExecutor; import android.os.ParcelUuid; import android.os.PersistableBundle; import android.os.test.TestLooper; import android.platform.test.flag.junit.SetFlagsRule; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; Loading @@ -71,7 +73,10 @@ import android.util.ArraySet; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.internal.telephony.flags.Flags; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; Loading Loading @@ -128,6 +133,9 @@ public class TelephonySubscriptionTrackerTest { TEST_SUBID_TO_CARRIER_CONFIG_MAP = Collections.unmodifiableMap(subIdToCarrierConfigMap); } @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); @NonNull private final Context mContext; @NonNull private final TestLooper mTestLooper; @NonNull private final Handler mHandler; Loading Loading @@ -185,6 +193,7 @@ public class TelephonySubscriptionTrackerTest { @Before public void setUp() throws Exception { mSetFlagsRule.enableFlags(Flags.FLAG_FIX_CRASH_ON_GETTING_CONFIG_WHEN_PHONE_IS_GONE); doReturn(2).when(mTelephonyManager).getActiveModemCount(); mCallback = mock(TelephonySubscriptionTrackerCallback.class); Loading Loading @@ -594,4 +603,14 @@ public class TelephonySubscriptionTrackerTest { new ArraySet<>(Arrays.asList(TEST_SUBSCRIPTION_ID_1, TEST_SUBSCRIPTION_ID_2)), snapshot.getAllSubIdsInGroup(TEST_PARCEL_UUID)); } @Test public void testCarrierConfigChangeWhenPhoneIsGoneShouldNotCrash() throws Exception { doThrow(new IllegalStateException("Carrier config loader is not available.")) .when(mCarrierConfigManager) .getConfigForSubId(eq(TEST_SUBSCRIPTION_ID_1), any()); sendCarrierConfigChange(true /* hasValidSubscription */); mTestLooper.dispatchAll(); } }