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

Commit 5546020f authored by sangyun's avatar sangyun
Browse files

Avoid to set displayname to null in euicc sub info.

Add condition to avoid set null to displayname in the overriding
DISPLAY_NAME when priority is lower than the carrier name source.

Bug: 278804726
Test: manually set to null in embeddedProfile
Change-Id: I89418dac425b350dc45c59a8afad63df903f48ee
parent b7b74a20
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1105,9 +1105,11 @@ public class SubscriptionManagerService extends ISub.Stub {
                    builder.setRemovableEmbedded(isRemovable);

                    // override DISPLAY_NAME if the priority of existing nameSource is <= carrier
                    if (getNameSourcePriority(nameSource) <= getNameSourcePriority(
                    String nickName = embeddedProfile.getNickname();
                    if (nickName != null
                            && getNameSourcePriority(nameSource) <= getNameSourcePriority(
                                    SubscriptionManager.NAME_SOURCE_CARRIER)) {
                        builder.setDisplayName(embeddedProfile.getNickname());
                        builder.setDisplayName(nickName);
                        builder.setDisplayNameSource(SubscriptionManager.NAME_SOURCE_CARRIER);
                    }
                    builder.setProfileClass(embeddedProfile.getProfileClass());
+58 −0
Original line number Diff line number Diff line
@@ -2286,4 +2286,62 @@ public class SubscriptionManagerServiceTest extends TelephonyTest {
        assertThat(mSubscriptionManagerServiceUT.getSubscriptionInfo(2).isEmbedded())
                .isEqualTo(true);
    }


    @Test
    public void testNonNullSubInfoBuilderFromEmbeddedProfile() {
        EuiccProfileInfo profileInfo1 = new EuiccProfileInfo.Builder(FAKE_ICCID1)
                .setIccid(FAKE_ICCID1) //can't build profile with null iccid.
                .setNickname(null) //nullable
                .setServiceProviderName(null) //nullable
                .setProfileName(null) //nullable
                .setCarrierIdentifier(null) //nullable
                .setUiccAccessRule(null) //nullable
                .build();

        EuiccProfileInfo profileInfo2 = new EuiccProfileInfo.Builder(FAKE_ICCID2)
                .setIccid(FAKE_ICCID2) //impossible to build profile with null iccid.
                .setNickname(null) //nullable
                .setCarrierIdentifier(new CarrierIdentifier(FAKE_MCC2, FAKE_MNC2, null, null, null,
                        null, FAKE_CARRIER_ID2, FAKE_CARRIER_ID2)) //not allow null mcc/mnc.
                .setUiccAccessRule(null) //nullable
                .build();

        GetEuiccProfileInfoListResult result = new GetEuiccProfileInfoListResult(
                EuiccService.RESULT_OK, new EuiccProfileInfo[]{profileInfo1}, false);
        doReturn(result).when(mEuiccController).blockingGetEuiccProfileInfoList(eq(1));
        result = new GetEuiccProfileInfoListResult(EuiccService.RESULT_OK,
                new EuiccProfileInfo[]{profileInfo2}, false);
        doReturn(result).when(mEuiccController).blockingGetEuiccProfileInfoList(eq(2));
        doReturn(TelephonyManager.INVALID_PORT_INDEX).when(mUiccSlot)
                .getPortIndexFromIccId(anyString());

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

        SubscriptionInfoInternal subInfo = mSubscriptionManagerServiceUT
                .getSubscriptionInfoInternal(1);
        assertThat(subInfo.getSubscriptionId()).isEqualTo(1);
        assertThat(subInfo.getIccId()).isEqualTo(FAKE_ICCID1);
        assertThat(subInfo.getDisplayName()).isEqualTo("");
        assertThat(subInfo.getDisplayNameSource()).isEqualTo(
                SubscriptionManager.NAME_SOURCE_UNKNOWN);
        assertThat(subInfo.getMcc()).isEqualTo("");
        assertThat(subInfo.getMnc()).isEqualTo("");
        assertThat(subInfo.isEmbedded()).isTrue();
        assertThat(subInfo.isRemovableEmbedded()).isFalse();
        assertThat(subInfo.getNativeAccessRules()).isEqualTo(new byte[]{});

        subInfo = mSubscriptionManagerServiceUT.getSubscriptionInfoInternal(2);
        assertThat(subInfo.getSubscriptionId()).isEqualTo(2);
        assertThat(subInfo.getIccId()).isEqualTo(FAKE_ICCID2);
        assertThat(subInfo.getDisplayName()).isEqualTo("");
        assertThat(subInfo.getDisplayNameSource()).isEqualTo(
                SubscriptionManager.NAME_SOURCE_UNKNOWN);
        assertThat(subInfo.getMcc()).isEqualTo(FAKE_MCC2);
        assertThat(subInfo.getMnc()).isEqualTo(FAKE_MNC2);
        assertThat(subInfo.isEmbedded()).isTrue();
        assertThat(subInfo.isRemovableEmbedded()).isFalse();
        assertThat(subInfo.getNativeAccessRules()).isEqualTo(new byte[]{});
    }
}