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

Commit 444b5025 authored by Malcolm Chen's avatar Malcolm Chen
Browse files

When disabling pSIM, make sure to trail 'F's when comparing iccid.

When disabling pSIM, we compare iccid(cardId) in the SIM slot and iccid
in the subscription. We should make sure trailing Fs are removed before
we compare.

Bug: 155560092
Test: unittest && manual
Change-Id: Ia442d216e847c9d345c993876467e0654e29bc90
Merged-In: Ia442d216e847c9d345c993876467e0654e29bc90
parent 3a73dfe8
Loading
Loading
Loading
Loading
+7 −5
Original line number Original line Diff line number Diff line
@@ -3509,13 +3509,15 @@ public class SubscriptionController extends ISub.Stub {
        if (slotsInfo == null) return false;
        if (slotsInfo == null) return false;
        for (int i = 0; i < slotsInfo.length; i++) {
        for (int i = 0; i < slotsInfo.length; i++) {
            UiccSlotInfo curSlotInfo = slotsInfo[i];
            UiccSlotInfo curSlotInfo = slotsInfo[i];
            if (curSlotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT
            if (curSlotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT) {
                    && TextUtils.equals(curSlotInfo.getCardId(), info.getCardString())) {
                if (TextUtils.equals(IccUtils.stripTrailingFs(curSlotInfo.getCardId()),
                        IccUtils.stripTrailingFs(info.getCardString()))) {
                    slotInfo = curSlotInfo;
                    slotInfo = curSlotInfo;
                    physicalSlotIndex = i;
                    physicalSlotIndex = i;
                    break;
                    break;
                }
                }
            }
            }
        }


        // Can't find the existing SIM.
        // Can't find the existing SIM.
        if (slotInfo == null) return false;
        if (slotInfo == null) return false;
+25 −1
Original line number Original line Diff line number Diff line
@@ -24,6 +24,8 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doReturn;
@@ -36,6 +38,7 @@ import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.ContentValues;
import android.content.Intent;
import android.content.Intent;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Handler;
import android.os.ParcelUuid;
import android.os.ParcelUuid;
import android.os.UserHandle;
import android.os.UserHandle;
import android.provider.Settings;
import android.provider.Settings;
@@ -79,6 +82,8 @@ public class SubscriptionControllerTest extends TelephonyTest {
    private MultiSimSettingController mMultiSimSettingControllerMock;
    private MultiSimSettingController mMultiSimSettingControllerMock;
    @Mock
    @Mock
    private ISetOpportunisticDataCallback mSetOpptDataCallback;
    private ISetOpportunisticDataCallback mSetOpptDataCallback;
    @Mock
    private Handler mHandler;


    private static final String MAC_ADDRESS_PREFIX = "mac_";
    private static final String MAC_ADDRESS_PREFIX = "mac_";
    private static final String DISPLAY_NAME_PREFIX = "my_phone_";
    private static final String DISPLAY_NAME_PREFIX = "my_phone_";
@@ -1067,7 +1072,11 @@ public class SubscriptionControllerTest extends TelephonyTest {




    private UiccSlotInfo getFakeUiccSlotInfo(boolean active, int logicalSlotIndex) {
    private UiccSlotInfo getFakeUiccSlotInfo(boolean active, int logicalSlotIndex) {
        return new UiccSlotInfo(active, false, "fake card Id",
        return getFakeUiccSlotInfo(active, logicalSlotIndex, "fake card Id");
    }

    private UiccSlotInfo getFakeUiccSlotInfo(boolean active, int logicalSlotIndex, String cardId) {
        return new UiccSlotInfo(active, false, cardId,
                UiccSlotInfo.CARD_STATE_INFO_PRESENT, logicalSlotIndex, true, true);
                UiccSlotInfo.CARD_STATE_INFO_PRESENT, logicalSlotIndex, true, true);
    }
    }


@@ -1112,4 +1121,19 @@ public class SubscriptionControllerTest extends TelephonyTest {
        assertEquals(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
        assertEquals(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
                mSubscriptionControllerUT.getPreferredDataSubscriptionId());
                mSubscriptionControllerUT.getPreferredDataSubscriptionId());
    }
    }

    @Test
    public void testSetSubscriptionEnabled_disableActivePsim_cardIdWithTrailingF() {
        String iccId = "123F";
        mSubscriptionControllerUT.addSubInfoRecord(iccId, 0);
        mSubscriptionControllerUT.registerForUiccAppsEnabled(mHandler, 0, null, false);
        UiccSlotInfo slot = getFakeUiccSlotInfo(true, 0, iccId + "FF");
        UiccSlotInfo[] uiccSlotInfos = {slot};
        doReturn(uiccSlotInfos).when(mTelephonyManager).getUiccSlotsInfo();

        mSubscriptionControllerUT.setSubscriptionEnabled(false, 1);
        verify(mHandler).sendMessageAtTime(any(), anyLong());
        assertFalse(mSubscriptionControllerUT.getActiveSubscriptionInfo(
                1, mContext.getOpPackageName(), null).areUiccApplicationsEnabled());
    }
}
}