Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 21747a2c authored by Ling Ma's avatar Ling Ma
Browse files

Record sub absent event

When carrier config broadcast for sub absent with sub id -1, record it so that in future when this slot load again, it's reflected correctly.

Fix: 331127681
Test: basic voice call + data browsing
Test: atest tests/telephonytests/src/com/android/internal/telephony/MultiSimSettingControllerTest.java
Change-Id: I93c473566348b3ae2872922b0e0edf5452e466c9
parent 6cba5cc6
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -444,14 +444,15 @@ public class MultiSimSettingController extends Handler {
            return;
        }

        CarrierConfigManager cm = mContext.getSystemService(CarrierConfigManager.class);
        if (cm != null) {
            if (CarrierConfigManager.isConfigForIdentifiedCarrier(cm.getConfigForSubId(subId))) {
        CarrierConfigManager cm;
        if (!SubscriptionManager.isValidSubscriptionId(subId) // record SIM absent.
                || ((cm = mContext.getSystemService(CarrierConfigManager.class)) != null
                && CarrierConfigManager.isConfigForIdentifiedCarrier(
                        cm.getConfigForSubId(subId)))) {
            mCarrierConfigLoadedSubIds[phoneId] = subId;
            reEvaluateAll();
        }
    }
    }

    /**
     * Check whether carrier config loaded for all subs
+22 −0
Original line number Diff line number Diff line
@@ -911,6 +911,28 @@ public class MultiSimSettingControllerTest extends TelephonyTest {
        // This time user data should be disabled on phone1.
        verify(mDataSettingsManagerMock2).setDataEnabled(
                TelephonyManager.DATA_ENABLED_REASON_USER, false, PHONE_PACKAGE);

        // Remove and insert back SIM before it's loaded.
        clearInvocations(mSubscriptionManagerService);
        markSubscriptionInactive(1/*subid*/);
        sendCarrierConfigChanged(0/*phoneid*/, SubscriptionManager.INVALID_SUBSCRIPTION_ID);

        verify(mSubscriptionManagerService).setDefaultDataSubId(
                SubscriptionManager.INVALID_SUBSCRIPTION_ID);

        // insert it back, but carrier config not loaded yet
        clearInvocations(mSubscriptionManagerService);
        setSimSlotIndex(1/*subid*/, 0/*phoneid*/);
        mMultiSimSettingControllerUT.notifySubscriptionInfoChanged();
        sendCarrierConfigChanged(0/*phoneid*/, SubscriptionManager.INVALID_SUBSCRIPTION_ID);

        verify(mSubscriptionManagerService, never()).setDefaultDataSubId(
                SubscriptionManager.INVALID_SUBSCRIPTION_ID);

        // carrier config loaded
        clearInvocations(mContext);
        sendCarrierConfigChanged(0/*phoneid*/, 1/*subid*/);
        verify(mContext).sendBroadcast(any());
    }

    @Test