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

Commit b8c1607b authored by Jack Yu's avatar Jack Yu
Browse files

Corretly handle SIM not ready state

If SIM not ready is a final state, always mark
subscription as inactive.

Test: Basic phone funcationality tests
Test: atest SubscriptionManagerServiceTests
Test: Fi eSIM download/deactivate/activate tests on Pixel 5/6/7
Fix: 278920650
Change-Id: I1696a5b7f786772f4c7f64559ba76e8cc8318a72
parent b9266470
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -46,7 +46,6 @@ import android.os.Process;
import android.os.RemoteException;
import android.os.TelephonyServiceManager;
import android.os.UserHandle;
import android.provider.DeviceConfig;
import android.provider.Settings;
import android.provider.Telephony.SimInfo;
import android.service.carrier.CarrierIdentifier;
@@ -1311,9 +1310,7 @@ public class SubscriptionManagerService extends ISub.Stub {
                log("updateSubscription: SIM_STATE_NOT_READY is not a final state. Will update "
                        + "subscription later.");
                return;
            }

            if (!areUiccAppsEnabledOnCard(phoneId)) {
            } else {
                logl("updateSubscription: UICC app disabled on slot " + phoneId);
                markSubscriptionsInactive(phoneId);
            }
+13 −0
Original line number Diff line number Diff line
@@ -2235,6 +2235,19 @@ public class SubscriptionManagerServiceTest extends TelephonyTest {
        assertThat(mSubscriptionManagerServiceUT.getActiveSubIdList(false)).isEmpty();
    }

    @Test
    public void testSimNotReadyBySimDeactivate() {
        insertSubscription(FAKE_SUBSCRIPTION_INFO1);

        mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE);
        mSubscriptionManagerServiceUT.updateSimState(
                0, TelephonyManager.SIM_STATE_NOT_READY, null, null);
        doReturn(true).when(mUiccProfile).isEmptyProfile();
        processAllMessages();

        assertThat(mSubscriptionManagerServiceUT.getActiveSubIdList(false)).isEmpty();
    }

    @Test
    public void testInactiveSimRemoval() {
        insertSubscription(FAKE_SUBSCRIPTION_INFO2);