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

Commit da58404e authored by SongFerng Wang's avatar SongFerng Wang Committed by Android (Google) Code Review
Browse files

Merge "[MEP] psim->esim, don't skip carrierConfigChanged with subId -1" into tm-qpr-dev

parents 6ecbe4c1 078ecbd7
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -32,9 +32,20 @@ public class CarrierConfigChangedReceiver extends BroadcastReceiver {
            CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED;

    private final CountDownLatch mLatch;
    private final boolean mIsWaitingForValidSubId;

    public CarrierConfigChangedReceiver(CountDownLatch latch) {
    /**
     * This is the CarrierConfigChanged receiver. If it receives the carrier config changed, then it
     * call the CountDownLatch.countDown().
     * If the "isWaitingForValidSubId" is true, then the receiver skip the carrier config changed
     * with the subId = -1. The receiver executes the countDown when the CarrierConfigChanged
     * with valid subId.
     * If the "isWaitingForValidSubId" is false, then the receiver executes the countDown when
     * receiving any CarrierConfigChanged.
     */
    public CarrierConfigChangedReceiver(CountDownLatch latch, boolean isWaitingForValidSubId) {
        mLatch = latch;
        mIsWaitingForValidSubId = isWaitingForValidSubId;
    }

    public void registerOn(Context context) {
@@ -53,7 +64,8 @@ public class CarrierConfigChangedReceiver extends BroadcastReceiver {
    }

    private void checkSubscriptionIndex(Intent intent) {
        if (intent.hasExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX)) {
        if (intent.hasExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX)
                || !mIsWaitingForValidSubId) {
            int subId = intent.getIntExtra(CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX, -1);
            Log.i(TAG, "subId from config changed: " + subId);
            mLatch.countDown();
+7 −4
Original line number Diff line number Diff line
@@ -141,7 +141,8 @@ public class UiccSlotUtil {
                        inactiveRemovableSlot,
                        /*removable sim's port Id*/ TelephonyManager.DEFAULT_PORT_INDEX,
                        excludedLogicalSlotIndex),
                context);
                context,
                /*isWaitingForValidSubId=*/ true);
    }

    /**
@@ -179,7 +180,8 @@ public class UiccSlotUtil {
        performSwitchToSlot(telMgr,
                prepareUiccSlotMappings(uiccSlotMappings, /*slot is not psim*/ false,
                        physicalSlotId, port, excludedLogicalSlotIndex),
                context);
                context,
                /*isWaitingForValidSubId=*/ false);
    }

    /**
@@ -231,7 +233,8 @@ public class UiccSlotUtil {
    }

    private static void performSwitchToSlot(TelephonyManager telMgr,
            Collection<UiccSlotMapping> uiccSlotMappings, Context context)
            Collection<UiccSlotMapping> uiccSlotMappings, Context context,
            boolean isWaitingForValidSubId)
            throws UiccSlotsException {
        CarrierConfigChangedReceiver receiver = null;
        long waitingTimeMillis =
@@ -241,7 +244,7 @@ public class UiccSlotUtil {
                        DEFAULT_WAIT_AFTER_SWITCH_TIMEOUT_MILLIS);
        try {
            CountDownLatch latch = new CountDownLatch(1);
            receiver = new CarrierConfigChangedReceiver(latch);
            receiver = new CarrierConfigChangedReceiver(latch, isWaitingForValidSubId);
            receiver.registerOn(context);
            telMgr.setSimSlotMapping(uiccSlotMappings);
            latch.await(waitingTimeMillis, TimeUnit.MILLISECONDS);