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

Commit a410b7d7 authored by Muralidhar Reddy's avatar Muralidhar Reddy Committed by Muralidhar Reddy Mule
Browse files

[MEP] Do not pass portIndex to disableProfile, derive portIndex from the...

[MEP] Do not pass portIndex to disableProfile, derive portIndex from the passing iccid. Partially revert T API change ag/15927388, disableProfile remains unchanged for Android T

Bug: 211955076
Test: manual, atest FrameworksTelephonyTests
Change-Id: I555129b2eb1c8eb82c8825202706fa5e34ad0d48
parent 6e6ef065
Loading
Loading
Loading
Loading
+54 −18
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.uicc.UiccCard;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.UiccPort;
import com.android.internal.telephony.uicc.UiccSlot;
@@ -199,18 +200,51 @@ public class EuiccCardController extends IEuiccCardController.Stub {
        }
    }

    private UiccSlot getUiccSlotForEmbeddedCard(String cardId) {
        int slotId = mUiccController.getUiccSlotForCardId(cardId);
        UiccSlot slot = mUiccController.getUiccSlot(slotId);
        if (slot == null) {
            loge("UiccSlot is null. slotId : " + slotId + " cardId : " + cardId);
            return null;
        }
        if (!slot.isEuicc()) {
            loge("UiccSlot is not embedded slot : " + slotId + " cardId : " + cardId);
            return null;
        }
        return slot;
    }

    private EuiccCard getEuiccCard(String cardId) {
        UiccController controller = UiccController.getInstance();
        int slotId = controller.getUiccSlotForCardId(cardId);
        if (slotId != UiccController.INVALID_SLOT_ID) {
            UiccSlot slot = controller.getUiccSlot(slotId);
            if (slot.isEuicc()) {
                return (EuiccCard) controller.getUiccCardForSlot(slotId);
        UiccSlot slot = getUiccSlotForEmbeddedCard(cardId);
        if (slot == null) {
            return null;
        }
        UiccCard card = slot.getUiccCard();
        if (card == null) {
            loge("UiccCard is null. cardId : " + cardId);
            return null;
        }
        return (EuiccCard) card;
    }

    private EuiccPort getEuiccPortFromIccId(String cardId, String iccid) {
        UiccSlot slot = getUiccSlotForEmbeddedCard(cardId);
        if (slot == null) {
            return null;
        }
        UiccCard card = slot.getUiccCard();
        if (card == null) {
            loge("UiccCard is null. cardId : " + cardId);
            return null;
        }
        loge("EuiccCard is null. CardId : " + cardId);
        int portIndex = slot.getPortIndexFromIccId(iccid);
        UiccPort port = card.getUiccPort(portIndex);
        if (port == null) {
            loge("UiccPort is null. cardId : " + cardId + " portIndex : " + portIndex);
            return null;
        }
        return (EuiccPort) port;
    }

    private EuiccPort getFirstActiveEuiccPort(String cardId) {
        EuiccCard card = getEuiccCard(cardId);
@@ -220,20 +254,22 @@ public class EuiccCardController extends IEuiccCardController.Stub {
        if (card.getUiccPortList().length > 0 ) {
            return (EuiccPort) card.getUiccPortList()[0]; // return first active port.
        }
        loge("No active ports exists. cardId : " + cardId);
        return null;
    }

    private EuiccPort getEuiccPort(String cardId, int portIdx) {
    private EuiccPort getEuiccPort(String cardId, int portIndex) {
        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            return null;
        }
        UiccPort port = card.getUiccPort(portIdx);
        if (port != null) {
            return (EuiccPort) port;
        }
        UiccPort port = card.getUiccPort(portIndex);
        if (port == null) {
            loge("UiccPort is null. cardId : " + cardId + " portIndex : " + portIndex);
            return null;
        }
        return (EuiccPort) port;
    }

    private int getResultCode(Throwable e) {
        if (e instanceof EuiccCardErrorException) {
@@ -410,8 +446,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
    }

    @Override
    public void disableProfile(String callingPackage, String cardId, String iccid, int portIndex,
            boolean refresh, IDisableProfileCallback callback) {
    public void disableProfile(String callingPackage, String cardId, String iccid, boolean refresh,
            IDisableProfileCallback callback) {
        try {
            checkCallingPackage(callingPackage);
        } catch (SecurityException se) {
@@ -423,12 +459,12 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            return;
        }

        EuiccPort port = getEuiccPort(cardId, portIndex);
        EuiccPort port = getEuiccPortFromIccId(cardId, iccid);
        if (port == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND);
            } catch (RemoteException exception) {
                loge("disableProfile callback failure for portIndex: " + portIndex , exception);
                loge("disableProfile callback failure.", exception);
            }
            return;
        }