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

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

Fixed crash when LPA is not available

The embedded subscription result could be null when LPA is not
available on AOSP devices.

Bug: 271349925
Test: v2/android-aosp-tests/device-boot-health-check-extra on aosp_panther-userdebug
Test: Basic phone functionality tests
Merged-In: I3a7cbcdadf30660b73611d13e1fdd8d2cc781f01
Change-Id: I3a7cbcdadf30660b73611d13e1fdd8d2cc781f01
parent 855bf6fe
Loading
Loading
Loading
Loading
+7 −2
Original line number Original line Diff line number Diff line
@@ -1001,7 +1001,7 @@ public class SubscriptionManagerService extends ISub.Stub {
        mBackgroundHandler.post(() -> {
        mBackgroundHandler.post(() -> {
            // Do nothing if eUICCs are disabled. (Previous entries may remain in the cache, but
            // Do nothing if eUICCs are disabled. (Previous entries may remain in the cache, but
            // they are filtered out of list calls as long as EuiccManager.isEnabled returns false).
            // they are filtered out of list calls as long as EuiccManager.isEnabled returns false).
            if (mEuiccManager == null || !mEuiccManager.isEnabled()) {
            if (mEuiccManager == null || !mEuiccManager.isEnabled() || mEuiccController == null) {
                loge("updateEmbeddedSubscriptions: eUICC not enabled");
                loge("updateEmbeddedSubscriptions: eUICC not enabled");
                if (callback != null) {
                if (callback != null) {
                    callback.run();
                    callback.run();
@@ -1014,7 +1014,7 @@ public class SubscriptionManagerService extends ISub.Stub {


            for (UiccSlot slot : mUiccController.getUiccSlots()) {
            for (UiccSlot slot : mUiccController.getUiccSlots()) {
                if (slot != null) {
                if (slot != null) {
                    log("  " + slot.toString());
                    log("  " + slot);
                }
                }
            }
            }


@@ -1022,6 +1022,11 @@ public class SubscriptionManagerService extends ISub.Stub {
                GetEuiccProfileInfoListResult result = mEuiccController
                GetEuiccProfileInfoListResult result = mEuiccController
                        .blockingGetEuiccProfileInfoList(cardId);
                        .blockingGetEuiccProfileInfoList(cardId);
                logl("updateEmbeddedSubscriptions: cardId=" + cardId + ", result=" + result);
                logl("updateEmbeddedSubscriptions: cardId=" + cardId + ", result=" + result);
                if (result == null) {
                    //TODO: Add back-off retry in the future if needed.
                    loge("Failed to get euicc profiles.");
                    continue;
                }


                if (result.getResult() != EuiccService.RESULT_OK) {
                if (result.getResult() != EuiccService.RESULT_OK) {
                    loge("Failed to get euicc profile info. result="
                    loge("Failed to get euicc profile info. result="
+15 −0
Original line number Original line Diff line number Diff line
@@ -829,6 +829,21 @@ public class SubscriptionManagerServiceTest extends TelephonyTest {
        assertThat(subInfo.getNativeAccessRules()).isEqualTo(FAKE_NATIVE_ACCESS_RULES2);
        assertThat(subInfo.getNativeAccessRules()).isEqualTo(FAKE_NATIVE_ACCESS_RULES2);
    }
    }


    @Test
    public void testUpdateEmbeddedSubscriptionsNullResult() {
        // Grant READ_PHONE_STATE permission.
        mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE);

        doReturn(null).when(mEuiccController).blockingGetEuiccProfileInfoList(anyInt());

        mSubscriptionManagerServiceUT.updateEmbeddedSubscriptions(List.of(1, 2), null);
        processAllMessages();

        List<SubscriptionInfo> subInfoList = mSubscriptionManagerServiceUT
                .getAllSubInfoList(CALLING_PACKAGE, CALLING_FEATURE);
        assertThat(subInfoList).isEmpty();
    }

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