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

Commit 84d250c1 authored by Jordan Liu's avatar Jordan Liu Committed by Gerrit Code Review
Browse files

Merge "Refresh cardId before using it."

parents 6e3a88a3 d0b187b2
Loading
Loading
Loading
Loading
+31 −19
Original line number Diff line number Diff line
@@ -253,7 +253,7 @@ public class EuiccManager {
    public static final int EUICC_OTA_STATUS_UNAVAILABLE = 5;

    private final Context mContext;
    private final int mCardId;
    private int mCardId;

    /** @hide */
    public EuiccManager(Context context) {
@@ -291,7 +291,7 @@ public class EuiccManager {
    public boolean isEnabled() {
        // In the future, this may reach out to IEuiccController (if non-null) to check any dynamic
        // restrictions.
        return getIEuiccController() != null && mCardId != TelephonyManager.INVALID_CARD_ID;
        return getIEuiccController() != null;
    }

    /**
@@ -301,11 +301,11 @@ public class EuiccManager {
     * current eUICC. A calling app with carrier privileges for one eUICC may not necessarily have
     * access to the EID of another eUICC.
     *
     * @return the EID. May be null if {@link #isEnabled()} is false or the eUICC is not ready.
     * @return the EID. May be null if the eUICC is not ready.
     */
    @Nullable
    public String getEid() {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            return null;
        }
        try {
@@ -320,7 +320,7 @@ public class EuiccManager {
     *
     * <p>Requires the {@link android.Manifest.permission#WRITE_EMBEDDED_SUBSCRIPTIONS} permission.
     *
     * @return the status of eUICC OTA. If {@link #isEnabled()} is false or the eUICC is not ready,
     * @return the status of eUICC OTA. If the eUICC is not ready,
     *         {@link OtaStatus#EUICC_OTA_STATUS_UNAVAILABLE} will be returned.
     *
     * @hide
@@ -328,7 +328,7 @@ public class EuiccManager {
    @SystemApi
    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
    public int getOtaStatus() {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            return EUICC_OTA_STATUS_UNAVAILABLE;
        }
        try {
@@ -363,7 +363,7 @@ public class EuiccManager {
    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
    public void downloadSubscription(DownloadableSubscription subscription,
            boolean switchAfterDownload, PendingIntent callbackIntent) {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            sendUnavailableError(callbackIntent);
            return;
        }
@@ -425,7 +425,7 @@ public class EuiccManager {
    @SystemApi
    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
    public void continueOperation(Intent resolutionIntent, Bundle resolutionExtras) {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            PendingIntent callbackIntent =
                    resolutionIntent.getParcelableExtra(
                            EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_RESOLUTION_CALLBACK_INTENT);
@@ -462,7 +462,7 @@ public class EuiccManager {
    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
    public void getDownloadableSubscriptionMetadata(
            DownloadableSubscription subscription, PendingIntent callbackIntent) {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            sendUnavailableError(callbackIntent);
            return;
        }
@@ -492,7 +492,7 @@ public class EuiccManager {
    @SystemApi
    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
    public void getDefaultDownloadableSubscriptionList(PendingIntent callbackIntent) {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            sendUnavailableError(callbackIntent);
            return;
        }
@@ -507,12 +507,11 @@ public class EuiccManager {
    /**
     * Returns information about the eUICC chip/device.
     *
     * @return the {@link EuiccInfo}. May be null if {@link #isEnabled()} is false or the eUICC is
     *     not ready.
     * @return the {@link EuiccInfo}. May be null if the eUICC is not ready.
     */
    @Nullable
    public EuiccInfo getEuiccInfo() {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            return null;
        }
        try {
@@ -537,7 +536,7 @@ public class EuiccManager {
     */
    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
    public void deleteSubscription(int subscriptionId, PendingIntent callbackIntent) {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            sendUnavailableError(callbackIntent);
            return;
        }
@@ -577,7 +576,7 @@ public class EuiccManager {
     */
    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
    public void switchToSubscription(int subscriptionId, PendingIntent callbackIntent) {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            sendUnavailableError(callbackIntent);
            return;
        }
@@ -603,7 +602,7 @@ public class EuiccManager {
    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
    public void updateSubscriptionNickname(
            int subscriptionId, String nickname, PendingIntent callbackIntent) {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            sendUnavailableError(callbackIntent);
            return;
        }
@@ -627,7 +626,7 @@ public class EuiccManager {
    @SystemApi
    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
    public void eraseSubscriptions(PendingIntent callbackIntent) {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            sendUnavailableError(callbackIntent);
            return;
        }
@@ -657,7 +656,7 @@ public class EuiccManager {
     * @hide
     */
    public void retainSubscriptionsForFactoryReset(PendingIntent callbackIntent) {
        if (!isEnabled()) {
        if (!refreshCardIdIfInvalid()) {
            sendUnavailableError(callbackIntent);
            return;
        }
@@ -668,6 +667,19 @@ public class EuiccManager {
        }
    }

    private boolean refreshCardIdIfInvalid() {
        if (!isEnabled()) {
            return false;
        }
        // Refresh mCardId if it's invalid.
        if (mCardId == TelephonyManager.INVALID_CARD_ID) {
            TelephonyManager tm = (TelephonyManager)
                    mContext.getSystemService(Context.TELEPHONY_SERVICE);
            mCardId = tm.getCardIdForDefaultEuicc();
        }
        return true;
    }

    private static void sendUnavailableError(PendingIntent callbackIntent) {
        try {
            callbackIntent.send(EMBEDDED_SUBSCRIPTION_RESULT_ERROR);